Keystone 服务运维
(1)创建用户
创建一个名称为“alice”账户,密码为“mypassword123”,邮 箱为“[email protected]”。
命令如下。
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# openstack user create --password mypassword123 --email [email protected] --domain demo alice
从上面的操作可以看出,创建用户需要用户名称、密码和邮件等信息。具体格式如下:
$ openstack user create [--domain <domain>]
[--password <password>]
[--email <email-address>]
[--enable | --disable]
<name>
其中,参数<name>代表新建用户名。
(2)创建项目
创建一个名为“acme”项目。
[root@controller ~]# openstack project create --domain demo acme
从上面操作可以看出,创建项目需要项目名等相关信息。具体操作格式如下:
$ openstack project create [--domain <domain>]
[--description <description>]
[--enable | --disable]
<project-name>
其中,参数<project-name>代表新建项目名,参数 <description>代表项目描述名。
(3)创建角色
角色限定了用户的操作权限。例如,创建一个角色“compute-user”。
[root@controller ~]# openstack role create compute-user
从上面操作可以看出,创建角色需要角色名称信息。具体命令格式如下。
$ openstack user create <name>
其中参<name>代表角色名称。
(4)绑定用户和项目权限
添加的用户需要分配一定的权限,这就需要把用户关联绑定到对应的项目和角色。例如,
给用户“alice”分配“acme”项目下的“compute-user”角色,命令如下。
[root@controller ~]# openstack role add --user alice --project acme compute-user
从上面操作可以看出,绑定用户权限需要用户名称、角色名称和项目名称等信息。具体
命令格式如下。
$ openstack role add --user <user> --project <project> <role>
其中,参数 <user>代表需要绑定的用户名称,参数<role>代表用户绑定的角色名称,参数<project>代表用户绑定的项目名称。
Keystone 基础查询命令
(1)用户列表查询
OpenStack 平台所使用的用户可以通过 Keystone 组件进行查询。查询当前所有用户列表
信息,命令如下:
[root@controller ~]# openstack user list
可以通过命令查询到具体用户的详细信息,可以查看到用户当前的状态,命令如下:
[root@controller ~]# openstack user show alice
(2)项目列表查询
通过命令,可以查询所创建的项目“acme”,也可以查询当前 OpenStack 平台中所有存
在项目列表,命令如下:
[root@controller ~]# openstack project list
通过命令可以查询“acme”项目的详细信息内容,命令如下。
[root@controller ~]# openstack project show acme
(3)角色列表查询
通过命令查询创建的角色“compute-user”,通过 Keystone 组件查询角色列表信息,命
令如下:
[root@controller ~]# openstack role list
通过命令查询“compute-user”角色的详细信息,命令如下:
[root@controller ~]# openstack role show compute-user
(4)端点地址查询
Keystone 组件管理 OpenStack 平台中所有服务端点信息,通过命令可以查询平台中所有
服务所使用的端点地址信息,命令如下:
[root@controller ~]# openstack endpoint list
Glance 服务运维
Glance 管理镜像
(1)创建镜像
创建一个名称为“cirros”镜像,镜像文件使用提供的“cirros-0.3.4-x86_64-disk.img”。
命令如下:
[root@controller ~]# glance image-create --name "cirros" --disk-format qcow2
--container-format bare --progress < cirros-0.3.4-x86_64-disk.img
(2)查看镜像列表
查询镜像列表命令及结果如下所示。
[root@controller ~]# glance image-list
Glance 镜像运维
(1)查看镜像详情
通过 glance image-show 命令查看镜像的详细信息(id 参数可以是对应镜像 id 或者镜像
名称),如下所示:
# glance image-show 镜像id
(2)更改镜像
可以使用 glance image-update 更新镜像信息,使用 glance image-delete 删除镜像信息。
如果需要改变镜像启动硬盘最低要求值(min-disk)时 ,min-disk 默认单位为 G。使用 glance
image-update 命令更新镜像信息操作如下。
#glance image-update --min-disk=1 镜像ID
(3)删除镜像
通过命令删除镜像 cirros 操作和执行结果如下所示。
[root@controller ~]# glance image-delete 镜像ID
[root@controller ~]# glance image-list
Nova 服务运维
(1)Nova 管理安全组规则
创建一个名为 test 的安全组,描述为'test the nova command about the rules',命令及执行
结果如下所示:
# nova secgroup-create test 'test the nova command about the rules'
(2)Nova 管理虚拟机类型
使用命令创建一个名为 test,ID 为 6,内存为 2048 MB,磁盘为 20 GB,vCPU 数量为
2 的云主机类型。具体命令及执行结果如下所示。
# nova flavor-create test 6 2048 20 2
查看 test 云主机类型的详细信息如下所示:
# nova flavor-show test
Nova 实例管理
(1)启动实例
格式:
nova boot [--flavor <flavor>] [--image <image>]
[--image-with <key=value>] [--boot-volume <volume_id>]
[--snapshot <snapshot_id>] [--min-count <number>]
[--max-count <number>] [--meta <key=value>]
[--file <dst-path=src-path>] [--key-name <key-name>]
[--user-data <user-data>]
[--availability-zone <availability-zone>]
[--security-groups <security-groups>]
[--block-device-mapping <dev-name=mapping>]
[--block-device key1=value1[,key2=value2...]]
[--swap <swap_size>]
[--ephemeral size=<size>[,format=<format>]]
[--hint <key=value>]
[--nic
<net-id=net-uuid,net-name=network-name,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-
uuid>]
[--config-drive <value>] [--poll] [--admin-pass <value>]
[--access-ip-v4 <value>] [--access-ip-v6 <value>]
[--description <description>]
<name>
固定参数。
<name>:实例名称
可选参数。
[--flavor <flavor>]:虚拟机类型。
[--image <image>]:选用的镜像。
[--image-with <key=value>] :镜像的元数据属性。
[--boot-volume <volume_id>:启动逻辑卷的 ID。
[--snapshot <snapshot_id>] 快照
[--num-instances <number>] 实例数量
[--meta <key=value>] 元数据
[--file <dst-path=src-path>] 文件
[--key-name <key-name>] 密钥名称
[--user-data <user-data>] 注入的用户数据
[--availability-zone <availability-zone>] 可用域
[--security-groups <security-groups>] 安全组
[--block-device-mapping <dev-name=mapping>] 块存储格式化
[--block-device key1=value1[,key2=value2...]] 块设备参数
[--swap <swap_size>] 交换分区大小
[--ephemeral size=<size>[,format=<format>]] 连接块存储大小
[--hint <key=value>] 自定义数据
[--nic ] 配置 IP
[--config-drive <value>] 驱动使能
[--poll] 显示创建进度
(2)删除实例
# nova delete
格式:
nova delete [--all-tenants] <server> [<server> ...]
Immediately shut down and delete specified server(s).
Positional arguments:
<server> Name or ID of server(s).
Optional arguments:
--all-tenants Delete server(s) in another tenant by name (Admin only).
Neutron 服务运维
1.Neutron 查询
使用 Neutron 相关命令查询网络服务的列表信息中的“binary”一列,代码如下所示。
[root@xiandian ~]# neutron agent-list -c binary
2.查询网络详情
查询网络详细信息的命令和执行结果如下。
[root@xiandian ~]# neutron net-list
3.查询 Neutron 相关组件服务
[root@xiandian ~]# neutron agent-list
Cinder 服务运维
1.创建云硬盘
创建一个 2 GB 的云硬盘 extend-demo,命令如下。
# cinder create --name cinder-volume-demo 2
通过 cinder-list 命令查看云硬盘信息。
# cinder list
2.创建云硬盘卷类型
创建 type 标识的卷类型。
可以通过 cinder type-create 命令来创建卷类型,创建了一个名为“lvm”的卷类型。
# cinder type-create lvm
可以通过 cinder type-list 命令来查看现有的卷类型。
# cinder type-list
3.创建带标识云硬盘
下面以 type 标识为例,创建一块带“lvm”标识的云硬盘,命令如下
# cinder create --name type_test_demo --volume-type lvm 1
创建成功后可以通过命令查看结果,可以看到该卷的 volume_type 字段已修改为“lvm”,查询命令如下
# cinder show type_test_demo
删除指定的 Cinder 卷,删除 Cinder 卷的方法比较简单,用户可以通过命令“cinder delete
<volume> [<volume> ...]”来删除一个或多个 Cinder 卷,删除命令如下所示。
# cinder delete cinder-volume-demo
Swift 服务运维
1. Swift 查询命令
(1)创建容器
通过命令行实现对 Swift 上数据的操作,首先需要创建一个名称为“test”的容器,命
令如下。
# swift post test
(2)查询容器
查看“test”容器里面的内容,命令如下
# swift list test
通过显示结果可以看出目前“test”容器里面的内容是空的,这时用户希望将本地的 file
目录内容递归上传到“test”容器内。首先创建 file 目录,并同时新建 3 个文件 one.txt、two.doc
和 three.png。具体命令如下:
# mkdir file
# touch one.txt
# touch two.doc
# touch three.png
2.Swift 上传和下载
(1)上传文件至容器
上传时首先需要上传一个空白的“file”目录,命令如下。
# swift upload test file/
将 one.txt 文件上传到“test”容器内 file 目录内,命令和执行结果如下:
# swift upload test/file one.txt
换一种方式将剩下的 two.doc 和 three.png 递归上传到“test”容器下的 file 目录内,命
令和执行结果如下:
# mv two.doc three.png file/
# swift upload test file/
file/three.png
file/two.doc
(2)从容器中下载文件
数据在 Swift 集群内保存,随时供用户下载使用,现在下载 three.png 文件,命令和执行
结果如下:
# swift download test file/three.png
(3)从容器中删除文件
目前磁盘容量有限,需要删除一些相对价值低的数据,空出更多的空间。这时已经将
three.png 下载到本地,所以暂时将 three.png 从对象存储服务器中删除,命令和执行结果如
下:
# swift delete test file/three.png
(4)查看容器服务状态
用户还可以通过 swift stat 命令来查看整个 Account 账户下 Swift 状态,命令和执行结果
如下:
# swift stat