Openstack有数量众多的命令行工具(CLI),用来执行各式各样的管理任务,例如VM管理、存储管理、网络管理。本文描述用Openstack CLI工具执行如下任务:
- 设置环境变量
- 使用内置帮助
- 创建和使用SSH密钥对
- 创建和修改glance镜像
- 创建nova flavor
- 启动和删除镜像
- 创建tenant
- 创建tenant的用户和角色
- 测试身份认证
环境变量
Openstack CLI工具在运行时,需要先设置好环境变量,以免重复输入用户帐号、密码那些。环境变量可写入一个文件,内容类似如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # COMMON OPENSTACK ENVS export OS_USERNAME=admin export OS_PASSWORD=secrete export OS_TENANT_NAME=admin export OS_AUTH_URL=http: //162 .242.171.36:5000 /v2 .0 export OS_AUTH_STRATEGY=keystone export OS_NO_CACHE=1 # LEGACY NOVA ENVS export NOVA_USERNAME=${OS_USERNAME} export NOVA_PROJECT_ID=${OS_TENANT_NAME} export NOVA_PASSWORD=${OS_PASSWORD} export NOVA_API_KEY=${OS_PASSWORD} export NOVA_URL=${OS_AUTH_URL} export NOVA_VERSION=1.1 export NOVA_REGION_NAME=RegionOne |
在使用CLI前先source这个文件。
命令帮助、语法等
Openstack CLI工具有一个内置的帮助系统。例如,输入nova help命令,可以获取到所有子命令,以及可选参数。还可以对指定的子命令获取附加帮助,例如nova help boot.
请注意许多命令的参数与位置相关,也就是说,参数的顺序至关重要。如下演示了一些命令的用法。
创建密钥对
使用nova keypair-add创建密钥对。你可以创建新的密钥对,在这种情形下,命令会输出私钥。要保管好这个私钥,否则就无法登录到VM实例。也可以指定一个存在的公钥。密钥对在nova boot时,可以通过指定key-name参数来使用上。
创建glance镜像
首先,下载一个镜像,例如ubuntu 12.04.
1 | wget http: //cloud-images .ubuntu.com /precise/current/precise-server-cloudimg-amd64-disk1 .img |
然后使用glance image-list查看存在的镜像。
接下来,使用glance客户端上传这个镜像(glance可以使用本地磁盘,或swift作为它的后端存储),上传后可以被nova使用。
1 2 | glance image-create --name nubuntu --is-public True --disk- format qcow2 \ --container- format bare <precise-server-cloudimg-amd64-disk1.img |
如果命令运行正常,可以看到它输出新创建镜像的相关信息。
最后运行glance image-list确认上传的镜像。
创建nova flavor
接下来给新镜像创建一个小规模的flavor。运行nova help flavor-create我们看到创建一个flavor需要5个参数:名字、ID、内存大小(MB)、磁盘大小(GB)、vCPU数量。
1 | nova flavor-create "384MB Tiny Instance" 2 384 5 1 |
运行上述命令后,可以看到返回信息包含了新flavor的细节。
启动镜像
首先查看当前运行了哪些实例:
1 | nova list |
然后,启动一个ubuntu镜像,使用admin密钥对:
1 | nova boot ubuntutest --flavor 2 --image cirros --key-name adminKey |
接下来查看新的实例:
1 2 | nova list nova show ubuntutest |
还可以查看实例的控制台日志:
1 | nova console-log ubuntutest |
最后,使用admin密钥对,通过SSH登录到实例的IP。
创建定制镜像
这里演示创建一个定制的cirros镜像。首先把镜像连接到设备,以便我们能访问它。
1 | qemu-nbd --connect= /dev/nbd0 ~ /precise-server-cloudimg-amd64-disk1 .img |
现在镜像在系统里连接成块设备。我们查看它的分区表,并且定位到root分区:
1 | fdisk /dev/nbd0 -l |
然后挂载分区:
1 | mkdir -p /mnt/image && mount /dev/nbd0p1 /mnt/image |
创建一个MOTD文件在镜像上:
1 | echo 'echo "**** HELLO CLOUD ****"' >> /mnt/image/etc/update-motd .d /00-header |
然后从系统里卸载镜像:
1 2 | umount /mnt/image qemu-nbd --disconnect /dev/nbd0 |
再从旧镜像创建一个新的镜像:
1 | glance image-create --name ubuntu_motd --is-public True --disk- format qcow2 --container- format bare <precise-server-cloudimg-amd64-disk1.img |
从新镜像启动一个实例。可以传递–poll参数,以便跟踪build过程:
1 | nova boot ubuntu_motd --flavor 2 --image ubuntu_motd --key-name adminKey --poll ubuntu_motdtest |
最后SSH进去,应该看到所做的MOTD修改已生效。
SSH登录进实例
首先需要知道网络的名字空间:
1 | ip netns |
然后从该名字空间登录进入系统:
1 | ip netns exec (namespace) ssh ubuntu@host |
删除实例
执行如下命令删除前面启动的cirros_motd实例:
1 2 | nova delete ubuntu_motd nova list |
创建tenant
创建新tenant命令如下:
1 2 3 | keystone tenant-list keystone tenant-create --name dev keystone tenant-list |
创建新用户
现在给tenant创建一些用户。
首先,瞧一瞧所有tenant里的存在用户:
1 | keystone user-list |
查看指定tenant的用户:
1 2 | keystone user-list --tenant admin keystone user-list --tenant dev |
接下来,给dev这个tenant创建2个用户:
1 2 | keystone user-create --name devadmin --pass adminpass --tenant dev keystone user-create --name dev --pass devpass --tenant dev |
admin用户的特殊点在哪里?admin角色。查看刚创建的2个用户,会发现他们都位于dev tenant的成员角色里。
1 2 | keystone user-role-list --user dev --tenant dev keystone user-role-list --user devadmin --tenant dev |
我们将devadmin用户修改为admin角色。
1 2 | keystone user-role-add --user devadmin --tenant dev --role admin keystone user-role-list --user devadmin --tenant dev |
现在我们的tenant有一个admin和一个非admin用户。
测试身份认证
测试身份认证,你可以登录Horizon,或者使用CLI工具(在环境变量里设置tenant、用户名、密码),或者使用如下curl命令:
1 | curl -d '{"auth":{"passwordCredentials":{"username": "dev", "password": "devpass"}}}' -H "Content-type: application/json" http: //localhost :35357 /v2 .0 /tokens 2> /dev/null |python -mjson.tool |
假如认证成功,会看到一些JSON数据返回,包括认证的token信息。
原文请见: Openstack CLI Basics
Pingback引用通告: Openstack基本命令 - 云计算 - 开发者