前言

在openstack环境中提供了多种操作虚拟机的方法,有最简单直接的dashborad界面,有不直观但高效的命令行,还有进阶版的postman调用openstack restfulapi和命令行中使用curl命令调用restful api,最终杀器是代码中调用api接口。总结一下有如下几种方法能够操作虚拟机,或者说操作openstack云环境。

1.horizon界面
2.openstack命令行
3.postman等工具
4.curl等http请求命令
5.代码调用api

一、OpenStack操作前的身份验证和格式

1.1 身份验证

在每个社区版搭建好的openstack环境中,都有记录用户信息的文件,叫admin-openrc,该文件是表明当前命令行使用者的身份的,作用如同登陆界面的账号和密码验证。

https://i-blog.csdnimg.cn/blog_migrate/6dd064c2129a1c2c53bcb784cd3398eb.png

里面的内容有域名,项目组,用户名,密码,URL地址,keystone版本,镜像版本等。

在命令行操作之前首先要做的就是执行该文件,在命令行中验证身份。
https://i-blog.csdnimg.cn/blog_migrate/237ea68a220dbb496c4d992237adda2e.png

1.2 命令格式

openstack中有四大核心组件,keystone,glance,nova,neutron等。四个组件分别有自己的命令行,如上镜率最高的两个命令:查询nova服务的命令  nova service-list,查询网络节点信息的命令 neutron agent-list等。openstack社区为了方便使用,将所有的组件的的命令做了一个统一,即以openstack开头的命令。
如查看nova服务的命令
openstack compute service list
https://i-blog.csdnimg.cn/blog_migrate/40f7c0be15f56935963c409bfe9981fc.png

查看网络服务的命令
openstack network agent list
https://i-blog.csdnimg.cn/blog_migrate/a0ca31f4c3b6038cf88609cd6e3604b1.png

二、善用提示信息

2.1 简单命令

以openstack为首的命令虽然一统江湖,但是想要记住所有的命令也是一件困难的事情。好在openstack命令提供了提示功能。例如想要查看openstack中nova节点的信息,不记得完整的命令,只知道openstack  compute,那么可以尝试用提示信息完成。
https://i-blog.csdnimg.cn/blog_migrate/46a5f06a6fa73d1099a72a42e19237e5.png

可以看到以openstack compute开始的命令有很多个,其中openstack compute service list很像我们要找的命令,于是输入openstack compute service list。这里就能看到环境中有两个计算节点compute,compute1,并且compute1的状态是关机。
https://i-blog.csdnimg.cn/blog_migrate/0f05d9f6436cfc880bd8865668f7d9b0.png

2.2 复杂命令

可能有时遇到的命令比较复杂,如创建一个镜像,需要很多的参数,那么所有的提示都会显示出来。显示出来的所有参数该如何使用呢?其实中括号表示是可选,尖括号表示必填。以image create命令为例,最后的是必填的参数,剩余的全都是可选参数。如果不加可选参数,openstack命令会使用默认的,缺省参数来创建镜像,虽然也能创建,但不一定是我们想要的。
https://i-blog.csdnimg.cn/blog_migrate/17afe124811ab76f9855b10f46cde34d.png

如下是创建一个镜像的命令,各参数的作用为:

1.mycirros是镜像的名称,名称可以放在合适的位置,不一定是在最后。

2.--disk-format是镜像的格式,使用的是qcow2格式。

3.--public是指镜像为共有,任何人都可以使用。注意这里没有参数,参考提示信息,该选项是没有参数的。

4.--flie是镜像放置的位置。我的/root路径下放置一个名为cirros-0.3.5-x86_64-disk.img的镜像。
https://i-blog.csdnimg.cn/blog_migrate/43ef79a1acd35b34fe300e546c5a01f9.png

所以不用害怕忘记了命令行的命令,在openstack的提示信息下能够完成各种操作。openstack命令行也是有一定的规律可循的,如以list结尾的都是查看所有信息,以show结尾的都是查看某一个具体的信息。以下是openstack中常见的操作,能完成下面的操作,对命令行就可以说是熟悉了。熟悉之后可以尝试完成后面的创建虚拟机小实验。

三、命令详情介绍

3.1 管理项目,用户和角色

展示所有租户
openstack project list

创建租户
openstack project create --description 'Project description' project-name

更新租户名称
openstack project set ID/name --name project-new

删除租户
openstack project delete project-name

展示所有用户
openstack user list

添加用户
openstack user create --password name 该方式指定密码字符串
openstack user create --password-prompt name 该方式交互式填入密码

禁止用户
openstack user set user_name --disable

启用用户
openstack user set user_name --enable

更新用户名
openstack user set user_name --name username_new

删除用户
openstack user delete user_name

展示所有角色
openstack role list

创建新的角色
openstack role create new_role

综合:将某某用户添加到某某角色下
openstack role add --user user_name --project project_name role_name

显示结果
openstack role list --user user_name --peoject project_name

3.2 镜像管理

查看镜像列表
openstack image list

查看某一个具体的镜像
openstack image show image_name

创建一个镜像
openstack image create --disk-format 参数 --public --file 参数 image_name

查看安全组
openstack group list

增加安全组
openstack group create group_name --description ""

3.3 主机

查看openstack环境主机数量
openstack host list

查看某一台主机资源情况
openstack host show host_name

3.4 网络

查看主机网络服务
openstack network agent list

查看端口信息
openstack port list

查看网络信息
openstack network list

创建外网
openstack network create --external outsidenet

创建外网子网
openstack subnet create --allocation-pool start=88.88.88.2,end=88.88.88.80 --subnet-range 88.88.88.0/24 --network outsidenet subnet_name

创建内网
openstack network create --internal --provider-network-type gre insidenet

创建内网子网
openstack subnet create --subnet-range 20.0.0.0/24 --network insidenet --dns-nameserver 114.114.114.114 provider_subent

创建路由器
openstack router create router_name

路由器连接子网
openstack router add subnet router_demo insidesubnet

路由器设置网关
openstack router set --external-gateway outsidenet router_name

3.5 虚机管理

查看虚拟机数量
openstack server list

创建虚拟机
启动一个虚拟机必要的信息是镜像,规格,网络。从前面学习到的image操作中找到镜像,从flavor操作中找到合适的规格,从网络操作中找到网络。
openstack server create --image cirros --flavor small --nic net-id=insidenet VM_name

虚拟机暂停
openstack server pause VM_name

虚拟机启动
openstack server unpause VM_name

虚拟机重启
openstack server reboot VM_name

四、综合实验操作

有了以上的操作基础之后,就可以在环境中以命令行的方式从零开始创建我们需要的主机。
openstack中创建一个主机需要的必要元素是:镜像、规格、网络。三个参数是必填参数。
准备:

4.1 上传镜像,并创建镜像

这个步骤在前面的实验中就已经介绍过了,所以现在跳过,可以使用前面创建的名为mycirros的镜像。参见章节:命令格式
https://i-blog.csdnimg.cn/blog_migrate/8ba8d3ce3879fd684ea896ad20529139.png

4.2 创建flavor规格

创建flavor时可以使用上面介绍的技巧。
第一步,我不知道创建的命令,从提示中获取信息,应该是openstack flavor create命令。
https://i-blog.csdnimg.cn/blog_migrate/60ffd91e41f5a7560c370fc061634e74.png

第二步,创建的命令有很多参数,可以根据常用命令来填写参数。或者参考已经创建好的flavor来创建。
https://i-blog.csdnimg.cn/blog_migrate/129cad470cb5356fb6682eb5b34d3fc2.png
https://i-blog.csdnimg.cn/blog_migrate/6a70ebb4484564ff424016cb4cef088e.png

上图,创建的flavor名称为myflavor,内存为5123M,磁盘为5G,cpu为1核,是公用flaovr。下图为创建成功的反馈信息。
https://i-blog.csdnimg.cn/blog_migrate/93e05bdc61466e72ec3026b3be3589ff.png

再次查看可见刚刚创建好的名为myflavor的规格。
https://i-blog.csdnimg.cn/blog_migrate/7fe01f7af72c1090cbe6d9a501503294.png

4.3 创建网络

openstack中网络的创建分为两个部分。首先创建一个网络,运营商网络或者是私网;然后创建子网,这样才是一个完整的网络。为了简单起见,我们就创建一个运营商网络。
第一步创建一个运营商网络,名为mynetwork。

注:运营商网络是指运营商管理的网络,通俗讲就是能正常上网的网络。
https://i-blog.csdnimg.cn/blog_migrate/3c77c004f1d19c9b4cdd229b7361e41a.png

第二步创建子网。

创建子网需要填写必要的参数,可以参照常用命令表。各参数意义如下:
1.--allocation-pool start=X.X.X.X,end=X.X.X.X。分配的运营商地址范围。该范围中的ip都能上网。
2.--subnet-range 子网的范围。
3.--dns-nameserber DNS 服务器ip地址。
4.--gateway 网关地址。
5.--network 指定子网附属的网络。
https://i-blog.csdnimg.cn/blog_migrate/5df711aeb85809d32efc36aa6c50b602.png

从反馈信息中能够看到我们设置的参数都生效了,还有很多没有设置的参数使用默认值。

查看可以得知环境中已经创建了名为mynetwork的网络。
https://i-blog.csdnimg.cn/blog_migrate/01827a3fc3323743beb27d9d19165c59.png

4.4 创建虚拟机

到目前为止,创建虚拟机所有的必要条件都准备齐全了。镜像为mycirros、规格为myflavor、网络为mynetwork。接下来就开始创建虚拟机。

通过参考提示信息或者查询常用命令表,可以知道创建虚拟机是指定的参数为 镜像 --image、规格 --flavor、网络 --nic net-id。如下创建一个名为myinstance的虚拟机。
https://i-blog.csdnimg.cn/blog_migrate/416f63797d0e4a3d6c3d20f0a9eeb943.png

创建完成之后可以使用openstack  server show VM-name的命令查看myinstance详细信息。
https://i-blog.csdnimg.cn/blog_migrate/89fccdc874b6ccc800380f5b8a8b72e7.png

当虚拟机创建成功之后,我们要使用虚拟机,如何登陆上去呢?这里再使用一个命令,查询出创建成功的虚拟机的登陆地址。使用如下端口的命令,得到从虚拟的登陆vnc端口。
https://i-blog.csdnimg.cn/blog_migrate/f9c4e091bf9262556f0aa9d3189c03ca.png

复制url到浏览器中,可以看到直接登陆到创建的虚拟机中。
https://i-blog.csdnimg.cn/blog_migrate/2c3eeb658c9e33493c7747cffb6c7c5b.png

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐