‘壹’ 请写出OpenStack存储库设置的相关命令
创建存储卷cindercreate-display-nameVOLNAME&SIZE【SIZE的单位为GB】。
删除存储卷,cinder&delete&VOLNAME-OR-ID,cinder&force-delete&VOLNAME-OR-ID。【强制删除】重命名存储卷,cinder&renameVOLNAME-OR-IDNEW-VOLNAME,显示存储卷信息,cinder&show&VOLNAME-OR-ID。
创建存储卷备份,cinder&backup-create--display-name&BACKUP-VOLNAME&VOLNAME-OR-ID,删除存储卷备份,cinder&backup-delete&VOLNAME-OR-ID,显示存储卷备份信息,cinde&backup-show&VOLNAME-OR-ID,显示存储卷备份列表,cinder&backup-list,创建存储卷快照,cinder&snapshot-create--display-name&SNAPSHOT-VOLNAME&VOLNAME-OR-ID,删除存储卷快照,cinder&snapshot-delete&VOLNAME-OR-ID,重命名存储卷快照,cinder&snapshot-rename&VOLNAME-OR-ID&NEW-VOLNAME。
‘贰’ 如何借助OpenStack命令行工具管理虚拟机
OpenStack中有两种不同的界面用来管理云资源。一个是通过Horizon,这是基于Web的OpenStack仪表板;另一个就是通过OpenStack命令行接口(CLI)。
我在本教程中将演示如何从命令行,在OpenStack上创建或终止虚拟机。这个过程是在Havana版本的OpenStack中进行测试的。至于像OpenStack Folsom这些早期的OpenStack版本,你只要将本教程所用的命令行中的“neutron”换成“quantum”即可。
姑且假设部署的一套OpenStack系统已在某处构建并运行起来。我要使用OpenStack CLI客户程序,在现有的OpenStack系统上管理虚拟机。
‘叁’ 如何开始使用OpenStack命令行和API-openstack学习
当你开始使用OpenStack,基本上都是从一个已搭建好的环境入手,别人(operator)会告诉你horizon登录的租户名、用户名和密码。
horizon登陆页
但毕竟horizon不会封装OpenStack的所有特性,当你已经玩腻了页面上那些功能时,你想尝试更多更丰富的功能,那么恭喜你,你已经向中级玩家迈进了一步。中级玩家对OpenStack的使用基本上有四种方式:
OpenStack client
cURL
Rest API
OpenStack SDK
我个人比较倾向于使用client和API,因为cURL的用法其实跟发送RestAPI相似,但cURL不太方便操作(因为我们普遍都喜欢在可视化页面点击按钮);而SDK则更多是基于OpenStack做应用时会用到,这些人一般不会关注OpenStack的内部机制。
好,你费尽心机跟operator讲好话,跟他说:哥,求求你,让我登陆后台玩玩吧! 当operator吃完你送的冰激凌,抹了一下嘴角,然后潇洒的扔了一个IP给你,“拿去耍吧”。你反复背诵着节点登陆的用户名和密码(注意,这跟horizon登陆的用户名密码不是一个东西),小心谨慎的进了让每个程序员都感到神秘的后台,然后,快速敲了一个命令并回车:
[root@node-2 ~]# nova list
ERROR: You must provide a username via either --os-username or env[OS_USERNAME]
复制代码
shit! 怎么回事?!一个ERROR可能让你慌了神。你平复了一下心情,心想:一定是老子敲命令的姿势不对,再试一次,这次用其他命令:
[root@node-2 ~]# keystone tenant-list
Expecting an auth URL via either --os-auth-url or env[OS_AUTH_URL]
复制代码
天呐! 呜呼一声,你已然跪了……眼角斜了斜operator,他匆忙的背影让你失去了打扰他的信心,又摸了摸兜里仅剩的1块硬币,准备打退堂鼓。
等等! 请看完我的blog,会让你起死回生的。
找到rc文件
找了半天资料,你可能已经知道你需要的就是一个文件,然后source一下。但文件的内容从哪里来?因为你到目前为止只知道horizon登录的用户名和密码。好,我现在告诉你:
第一步,登录horizon,进入下图所示的页面。
看到那个“下载OpenStack RC文件”的按钮了么?看到了么?看到了么?别光顾着点头了,还等啥?!
打开下载的文件(这里举个例子,我以admin用户登录的),对内容稍作修改(主要是最后那个password,改成你登录horizon的密码,其他内容不要改):
#!/bin/bash
# With the addition of Keystone, to use an openstack cloud you should
# authenticate against keystone, which returns a **Token** and **Service
# Catalog**. The catalog contains the endpoint for all services the
# user/tenant has access to - including nova, glance, keystone, swift.
#
# *NOTE*: Using the 2.0 *auth api* does not mean that compute api is 2.0. We
# will use the 1.1 *compute api*
export OS_AUTH_URL=http://119.81.159.110:5000/v2.0
# With the addition of Keystone we have standardized on the term **tenant**
# as the entity that owns the resources.
export OS_TENANT_ID=
export OS_TENANT_NAME="admin"
# In addition to the owning entity (tenant), openstack stores the entity
# performing the action as the **user**.
export OS_USERNAME="admin"
export OS_PASSWORD="tUWkuBpN"
‘肆’ openstack常用命令-neutron篇
列出当前租户所有的网络
列出所有租户的所有网络(需要管理员权限)
创建一个网络(vlan/flat)
查看一个网络的详细信息
删除一个网络
创建一个子网
列出所有的agent
创建端口
查看端口列表
‘伍’ openstack常用命令-cinder篇
显示存储卷列表(和nova volume-list命令功能相同)
显示存储卷类型列表
列表展示zone
创建存储卷
创建基于镜像的块设备
在NovaZone中创建基于CirrOS的卷设备
分配卷设备
分离卷设备
重置卷状态
重置卷设备大小
删除存储卷
重命名存储卷
显示存储卷信息
存储卷元数据
创建存储卷备份
删除存储卷备份
显示存储卷备份信息
显示存储卷备份列表
创建存储卷快照
删除存储卷快照
重命名存储卷快照
显示存储卷快照信息
显示存储卷快照列表
上传存储卷作为镜像
‘陆’ 如何开始使用OpenStack命令行和API
首先你可以学习部署OpenStack,使用DevStack或者手动安装OpenStack。
之后就可以开始使用OpenStack的命令行管理OpenStack,以及调用API。
细节的这里就不展开来说了,有官方的英文文档可以参考。
命令行相关:http://docs.openstack.org/admin-guide/cli.html
API相关:http://developer.openstack.org/api-guide/quick-start/
如果自己搞不定的话,可以看看基金会的Certified OpenStack Administrator的培训,可以学到这些内容。
‘柒’ 如何开始使用OpenStack命令行和API
一、找到rc文件:
找了半天资料,你可能已经知道你需要的就是一个文件,然后source一下。但文件的内容从哪里来?因为你到目前为止只知道horizon登录的用户名和密码。好,我现在告诉你:
第一步,登录horizon,进入下图所示的页面。
看到那个“下载OpenStack RC文件”的按钮了么?看到了么?看到了么?别光顾着点头了,还等啥?
打开下载的文件(这里举个例子,我以admin用户登录的),对内容稍作修改(主要是最后那个password,改成你登录horizon的密码,其他内容不要改)。
登录后台,新建一个文件,然后把上面的内容复制进去,执行久违的source,然后再次运行命令:
[root@node-2 ~]# vi ~/openrc
[root@node-2 ~]# source ~/openrc
[root@node-2 ~]# nova list
[root@node-2 ~]# keystone tenant-list
+----------------------------------+----------+---------+
| id | name | enabled |
+----------------------------------+----------+---------+
| | admin | True |
| | services | True |
+----------------------------------+----------+---------+
[root@node-2 ~]#
二、Rest API:
虽然使用命令行已经很接近OpenStack的本质了,但别忘了,命令行毕竟也是一种封装,如果你想玩的再透一些,Rest API是个不错的选择,使用Rest API之后,OpenStack在你面前基本上就是裸奔了。
关于API的使用我不做过多说明,因为在我之前的blog和topic里面已经说过太多次了,看一看下面的截图,你自己再稍微google一下,就什么都明白了。
‘捌’ openstack查询网卡配置方式
OpenStack提供了一系列网络配置选项,可以根据实际情况进行配置。主要有:路由器,虚拟交换机,VLAN,网桥,多租户网络,安全组,网络ACL等。
‘玖’ OpenStack删除卷
在openstack中创建一个卷后,如果把卷连接到一个虚拟机上,删除虚拟机后,卷还存在,horizon界面上显示 “连接到none作为/dev/vda” 。这时在horizon界面上无法删除该卷。
假设卷的name是xxx,执行命令:
openstack volume delete <volume>
提示:
"Failed to deletevolume with name or ID 'XXXXXXX': Invalid volume: Volume status must beavailable or error or error_restoring or error_extending and must not bemigrating, attached, belong to a group or have snapshots."
这时候可以用命令改变卷的状态,然后删除。
执行命令:
cinderreset-state --attach-statusdetached <volume>
cinder delete <volume>
成功删除卷。
在用卷快照或卷创建虚拟机的时候,可以选择 “删除云主机时删除卷”
‘拾’ openstack获取token值的两种方式 2019-05-15
Token(令牌):通常是一串比特值或者字符串,用来作为访问资源的记号。Token中含有可访问资源的范围和有效时间。openstack服务通过token来调用资源。
方法一:
使用openstack命令获取
(id的值就是token)
此token值可直接使用
方法二:
通过api的方式
(X-Subject-Token的值是token)
使用这个token查看用户列表:
提示没有权限。(意料之中)
查看admin用户:
重新获取一个token(多了好多东西):
验证一下(还是用户列表)(通过api方式获取的token值需要明确用户角色):
附:
①openstack任何命令加上参数”--debug“即可看到当前命令使用的api端点。。。
例如:
②json格式的-d参数: