Openstack基本命令

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

此条目发表在Common分类目录,贴了标签。将固定链接加入收藏夹。

Openstack基本命令》有一条回应

  1. Pingback引用通告: Openstack基本命令 - 云计算 - 开发者

评论已关闭。