Openstack有数量众多的命令行工具(CLI),用来执行各式各样的管理任务,例如VM管理、存储管理、网络管理。本文描述用Openstack CLI工具执行如下任务:
- 设置环境变量
- 使用内置帮助
- 创建和使用SSH密钥对
- 创建和修改glance镜像
- 创建nova flavor
- 启动和删除镜像
- 创建tenant
- 创建tenant的用户和角色
- 测试身份认证
环境变量
Openstack CLI工具在运行时,需要先设置好环境变量,以免重复输入用户帐号、密码那些。环境变量可写入一个文件,内容类似如下:
# 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.
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
然后使用glance image-list查看存在的镜像。
接下来,使用glance客户端上传这个镜像(glance可以使用本地磁盘,或swift作为它的后端存储),上传后可以被nova使用。
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数量。
nova flavor-create "384MB Tiny Instance" 2 384 5 1
运行上述命令后,可以看到返回信息包含了新flavor的细节。
启动镜像
首先查看当前运行了哪些实例:
nova list
然后,启动一个ubuntu镜像,使用admin密钥对:
nova boot ubuntutest --flavor 2 --image cirros --key-name adminKey
接下来查看新的实例:
nova list nova show ubuntutest
还可以查看实例的控制台日志:
nova console-log ubuntutest
最后,使用admin密钥对,通过SSH登录到实例的IP。
创建定制镜像
这里演示创建一个定制的cirros镜像。首先把镜像连接到设备,以便我们能访问它。
qemu-nbd --connect=/dev/nbd0 ~/precise-server-cloudimg-amd64-disk1.img
现在镜像在系统里连接成块设备。我们查看它的分区表,并且定位到root分区:
fdisk /dev/nbd0 -l
然后挂载分区:
mkdir -p /mnt/image && mount /dev/nbd0p1 /mnt/image
创建一个MOTD文件在镜像上:
echo 'echo "**** HELLO CLOUD ****"' >> /mnt/image/etc/update-motd.d/00-header
然后从系统里卸载镜像:
umount /mnt/image qemu-nbd --disconnect /dev/nbd0
再从旧镜像创建一个新的镜像:
glance image-create --name ubuntu_motd --is-public True --disk-format qcow2 --container-format bare <precise-server-cloudimg-amd64-disk1.img
从新镜像启动一个实例。可以传递–poll参数,以便跟踪build过程:
nova boot ubuntu_motd --flavor 2 --image ubuntu_motd --key-name adminKey --poll ubuntu_motdtest
最后SSH进去,应该看到所做的MOTD修改已生效。
SSH登录进实例
首先需要知道网络的名字空间:
ip netns
然后从该名字空间登录进入系统:
ip netns exec (namespace) ssh ubuntu@host
删除实例
执行如下命令删除前面启动的cirros_motd实例:
nova delete ubuntu_motd nova list
创建tenant
创建新tenant命令如下:
keystone tenant-list keystone tenant-create --name dev keystone tenant-list
创建新用户
现在给tenant创建一些用户。
首先,瞧一瞧所有tenant里的存在用户:
keystone user-list
查看指定tenant的用户:
keystone user-list --tenant admin keystone user-list --tenant dev
接下来,给dev这个tenant创建2个用户:
keystone user-create --name devadmin --pass adminpass --tenant dev keystone user-create --name dev --pass devpass --tenant dev
admin用户的特殊点在哪里?admin角色。查看刚创建的2个用户,会发现他们都位于dev tenant的成员角色里。
keystone user-role-list --user dev --tenant dev keystone user-role-list --user devadmin --tenant dev
我们将devadmin用户修改为admin角色。
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命令:
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基本命令 - 云计算 - 开发者