【收藏级】88条关于OpenStack命令的手册(常看常新)
大家好,我是无名小歌。
按照目录查询相关命令、 按照目录查询相关命令 、 按照目录查询相关命令 (常看常新)(常看常新)(常看常新)
相信大家都有过这样的经历哈,就是我们在操作OpenStack时,一般为了操作方便都会使用Dashboard web可视化界面上对OpenStack进行操作,如:创建用户、镜像、网络、云主机、云主机类型等等。
这里有个问题哈,这会导致我们对命令行操作命令大量失忆,在我们必须或想要使用命令操作时发现很多都已经没有多少印象了。所以在这里我罗列了80条相对比较常用的命令,方便大家查看,查看时多看目录结构找到自己所需要的区域。帮助大家快速查找,从而节约时间成本。
如果对你有帮助,还望赏个关注鸭!!! 😜 欢迎大家加入云社区,一起学习云计算,走向年薪50万。
按照目录查询相关命令、 按照目录查询相关命令、 按照目录查询相关命令 (常看常新)(常看常新)(常看常新)
一、openstack客户端命令 1.1、openstack命令 OpenStack API 的命令行界面注意:这个命令特别重要,集成了所有组件的命令(它可以使用所有组件的命令)
语法格式: openstack [参数] [Commands]
常用参数: --version
参考实例:
查看OpenStack版本
[root@controller ~]# openstack --version openstack 4.0.1PS:
openstack版本是按26个字母表中的顺序排序的。
比如:A是第一个版本,B是第二个版本,C是第三个版本,往后依次类推。
上面查看的版本是4.0.1,我们需要到官网上比对这个数字版本是以什么字母版本表示的。
查看OpenStack版本地址:https://releases.openstack.org/ 这里以T版为例:
我们搜索找到python-openstackclient字段,可以看到T版所发布的以数字表示的版本。只要在这区间内都是T版,最新版为4.0.2。
1.2、openstack-service命令 控制启用的openstack服务语法格式: openstack-service [service]
常用参数: 无
参考实例:
查看、重启、停止、启动所有openstack组件的服务
[root@controller ~]# openstack-service status [root@controller ~]# openstack-service restart [root@controller ~]# openstack-service stop [root@controller ~]# openstack-service start查看、重启、停止、启动某个组件的服务(这里以glance为例)
[root@controller ~]# openstack-service status glance [root@controller ~]# openstack-service restart glance [root@controller ~]# openstack-service stop glance [root@controller ~]# openstack-service start glancePS:
不建议使用stop停止命令
1.3、openstack-status命令 显示已安装 OpenStack 服务的状态概览语法格式: openstack-status
常用参数: 无
参考实例:
查看所有组件状态
[root@controller ~]# openstack-status == Nova services == openstack-nova-api: active openstack-nova-compute: inactive (disabled on boot) openstack-nova-network: inactive (disabled on boot) openstack-nova-scheduler: active openstack-nova-conductor: active ... ... 1.4、openstack-config命令 用于操作对ini文件的应用程序,可以对ini文件增删改查。语法格式: openstack-config --set [OPTION] config_file section [param] [value]
常用参数: --set、–get
参考实例:
修改/etc/nova/nova.conf配置文件,DEFAULT区域下enabled_apis的值为osapi_compute,metadata。
[root@controller ~]# openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata查看/etc/nova/nova.conf配置文件,DEFAULT区域下enabled_apis的值为是什么。
[root@controller ~]# openstack-config --get /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata二、Keystone(认证) 2.1、创建用户、给用户赋予权限、创建实体服务 $ openstack user create --domain default --password 123456 glance $ openstack role add --project service --user glance admin $ openstack service create --name glance --description "OpenStack Image" image 2.2、创建端点endpoint: public 其他用户使用地址 、internal 组件内部通信地址 、 admin用户使用地址 $ openstack endpoint create --region RegionOne image public http://controller:9292 $ openstack endpoint create --region RegionOne image internal http://controller:9292 $ openstack endpoint create --region RegionOne image admin http://controller:9292 2.3、列出所有的用户 $ openstack user list 2.4、查看某个用户详细信息 $ openstack user show admin 2.5、列出认证服务目录 $ openstack catalog list 2.6、列出所有的端点地址 $ openstack endpoint list 2.7、生成令牌并验证keystone $ openstack token issue 三、glance(镜像) 3.1、上传镜像 $ openstack image create "cirros" --disk-format qcow2 \ --container-format bare --public \ --file ~/images/cirros-0.3.5-x86_64-disk.img
参数说明:
–disk-format: 映像磁盘格式,支持的选项有:ami,ari, aki, vhd, vmdk, raw, qcow2, vhdx, vdi, iso, 默认格式为:raw
–container-format: 图像容器格式,支持的选项有:ami、ari、aki、bare、docker、ova、ovf。 默认格式为:bare –public: 镜像可供公众访问 –file: 从本地文件上传镜像
3.2、更新镜像 $ openstack image set --min-ram 1 --min-disk 2 镜像id/name参数说明:
–min-ram: 镜像所需的最小 RAM 大小,以兆字节为单位 –min-disk: 镜像所需的最小磁盘大小,以 GB 为单位
3.3、列出所有镜像 $ openstack image list 3.4、查看镜像的详细信息 $ openstack image show 镜像id/name 3.5、删除镜像 $ openstack image delete 镜像id/name 四、neutron(网络 ) 4.1、Network 4.1.1、创建外部网络 $ openstack network create --external --share ext-net(网络名称)参数说明:
–external: 将此网络设置为外部网络 –share: 在项目之间共享网络
4.1.2、创建内部网络 $ openstack network create --share int-net(网络名称) 4.1.3、创建外部网络子网 $ openstack subnet create --subnet-range 192.168.100.0/24 --gateway 192.168.100.1 --network ext-net ext-subnet(子网名称)参数说明:
–subnet-range: CIDR 表示法中的子网范围 –gateway: 指定子网的网关 –network: 此子网所属的网络(名称或 ID)
4.1.4、创建外部网络子网 $ openstack subnet create --subnet-range 192.168.200.0/24 --network int-net int-subnet(子网名称)参数说明:
–subnet-range: CIDR 表示法中的子网范围 –network: 此子网所属的网络(名称或 ID)
4.1.5、列出所有网络 $ openstack network list 4.1.6、查看网络详细信息 $ openstack network show ext-net 4.1.7、删除网络 $ openstack network show delete int-net(网络名称)ps:
删除网络时确保网络没有云主机(实例)使用,否则删除失败。
4.2、Route 4.2.1、创建路由 $ openstack router create route1 4.2.2、设置路由器属性 $ openstack router set --external-gateway ext-net --fixed-ip subnet=ext-subnet,ip-address=192.168.100.10 route1(路由名称)参数说明:
–external-gateway: 用作路由器网关的外部网络(名称或 ID) –fixed-ip: 设置route固定IP地址
语法:subnet=<subnet>,ip-address=<ip-address>(外部所需的 IP 或子网(名称或 ID)网关) 4.2.3、添加内网到路由 $ openstack router add subnet route1 int-net(网络名称) 4.2.4、列出所有路由 $ openstack router list 4.2.5、查看路由详细信息 $ openstack router show route1 4.2.6、删除路由 $ openstack router delete route1 五、nova(计算) 5.1、Flavor 5.1.1、创建flavor类型 $ openstack flavor create --ram 1024 --disk 3 --vcpus 2 m1.tiny(flavor名称)参数说明:
–ram: 内存大小,以 MB 为单位(默认 256M) –disk: 磁盘大小,以 GB 为单位(默认 0G) –vcpus: cpu 数量(默认 1)
5.1.2、列出所有flavor类型 $ openstack flavor list 5.1.3、查看flavor详细信息 $ openstack flavor show m1.tiny 5.2、安全组 5.2.1、列出安全组 $ openstack security group list 5.2.2、查看安全组中的安全规则 $ openstack security group rule list default(安全组 id/name) 5.2.3、查看规则的详细信息 $ openstack security group rule show 35c34803-7156-4d96-8a6c-6636423beae2(规则 id) 5.2.4、创建安全组 $ openstack security group create test_name(安全组 id/name) 5.2.5、删除访问安全组 $ openstack security group delete test_name(安全组 id/name) 5.2.6、在安全组中添加策略从入口方向放行所有ICMP、TCP、UDP规则
$ openstack security group rule create --protocol icmp --ingress default(安全组 id/name) $ openstack security group rule create --protocol tcp --ingress default(安全组 id/name) $ openstack security group rule create --protocol udp --ingress default(安全组 id/name) 5.3、操作云主机 5.3.1、创建云主机 $ openstack server create --image cirros --flavor m1.tiny --network ext-net test_name(云主机/实例 名称)参数说明:
–image: 创建云主机所使用镜像启动盘(名称或 ID) –flavor: 创建云主机所使用的flavor(名称或 ID) –network: 在云主机上创建一个 NIC 并将其连接到网络。
多次指定选项以创建多个 NIC。 –network是 ‘–nic net-id=<network>’ 的包装,为标准提供简单语法的参数。 有关更高级的用例,请参阅’–nic’参数。 5.3.2、列出实例,实例状态 $ openstack server list 5.3.3、查看云主机的控制台日志 $ openstack console log show NAME(实例名称) 5.3.4、显示云主机的远程控制台 URL $ openstack console url show test 5.3.5、重启 $ openstack server reboot NAME 5.3.6、关机 $ openstack server stop NAME 5.3.7、启动 $ openstack server start NAME 5.3.8、暂停 $ openstack server pause NAME 5.3.9、挂起 $ openstack server suspend NAME 5.3.10、取消挂起 $ openstack server unpause NAME 5.3.11、重建 $ openstack server rebuild NAME IMAGE 5.3.12、创建快照 $ openstack server stop test(实例名称) $ openstack server image create test (实例名称)–name testSnapshot (创建快照) 5.3.13、下载快照 $ openstack image save --file csccvm.qcow2 testSnapshot 5.3.14、调整大小修改/etc/nova/nova.conf配置文件,添加调整类型大小的参数
$ openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter # 重启生效配置 $ systemctl restart openstack-nova* $ openstack server resize NAME(实例 id/名称) FLAVOR(flavor id/名称) # 确认服务器调整大小完成 $ openstack server resize --confirm NAME(实例名称) 5.3.15、云主机挂载云硬盘 $ openstack server add volume test_name(实例id/name) 8aa66c0b-72e8-4a2a-a305-1a1de50a505c(磁盘id/name) 5.3.16、创建秘钥对 $ openstack keypair create test > test.pem $ chmod 600 test.pem给实例注入一个密钥对并通过密钥对来访问实例
启动实例
$ openstack server create --image cirros-0.3.5-x86_64 --flavor m1.small \ --key-name test MyFirstServer使用ssh连接到实例
# ip netns exec qdhcp-98f09f1e-64c4-4301-a897-5067ee6d544f \ ssh -i test.pem cirros@10.0.0.4 六、cinder(块存储) 6.1、创建卷lvm类型 [root@controller ~]# cinder type-create lvm 6.2、创建一个新卷 $ openstack volume create --type lvm --size SIZE_IN_GB NAME(卷名称)参数说明:
–size: 以 GB 为单位的卷大小 –type: 设置卷类型
6.3、列出所有卷,卷状态 $ openstack volume list 6.4、将卷连接到实例实例为正常状态且卷为可用状态
$ $ openstack server add volume test_name(实例id/name) 8aa66c0b-72e8-4a2a-a305-1a1de50a505c(磁盘id/name) 6.5、扩展卷 [root@controller ~]# openstack volume list +--------------------------------------+---------------+-----------+------+------------------------------------+ | ID | Name | Status | Size | Attached to | +--------------------------------------+---------------+-----------+------+------------------------------------+ | f3678c4a-87cf-438e-bf49-4c37076d1a0e | aa | available | 1 | | [root@controller ~]# openstack volume set --size 2 aa(卷名称) [root@controller ~]# openstack volume list +--------------------------------------+---------------+-----------+------+------------------------------------+ | ID | Name | Status | Size | Attached to | +--------------------------------------+---------------+-----------+------+------------------------------------+ | f3678c4a-87cf-438e-bf49-4c37076d1a0e | aa | available | 2 | |参数说明:
–size: 以 GB 为单位扩展卷大小
七、Swift(对象存储) 7.1、创建容器 $ openstack container create test_name 7.2、列出容器 $ openstack container list 7.3、查看容器详情 $ openstack container show test_name 7.4、创建对象、上传对象创建对象的过程也是向容器中上传对象的过程
$ openstack object create test_name(容器名称) test/anaconda-ks.cfg (上传的文件) 7.5、列出容器中的对象 $ openstack object list test_name +----------------------+ | Name | +----------------------+ | test/anaconda-ks.cfg | +----------------------+ 7.6、查看对象详情通过查询命令可以看出,在通过命令上传对象时,本地路径即为容器内对象路径
$ openstack object show test_name test/anaconda-ks.cfg +----------------+---------------------------------------+ | Field | Value | +----------------+---------------------------------------+ | account | AUTH_13b5e35202d54a84ae7a5ae5c57b9846 | | container | test_name | | content-length | 6880 | | content-type | application/octet-stream | | etag | 41656296ae6768ae924a5b5f3fe15bf0 | | last-modified | Thu, 10 Feb 2022 06:54:30 GMT | | object | test/anaconda-ks.cfg | +----------------+---------------------------------------+ 7.7、下载对象 $ openstack object save test_name test/anaconda-ks.cfg 7.8、删除对象 $ openstack object delete test_name test/anaconda-ks.cfg 7.9、删除空容器下列命令只能删除空容器,如果容器内有对象,无法直接删除
$ openstack container delete test_name 7.10、递归删除容器 $ openstack container delete --recursive swift-test参数说明:
–recursive: 递归删除对象和容器
7.11、swift分片存储 $ swift upload test -S 10000000 cirros-0.5.2-x86_64-disk.img cirros-0.3.4-x86_64-disk.img segment 0 cirros-0.3.4-x86_64-disk.img segment 1 cirros-0.3.4-x86_64-disk.img参数说明:
-S: 每一个片的大小,单位字节(B)
查看存储路径中的数据片
[root@controller ~]# openstack container list +---------------+ | Name | +---------------+ | test_segments | +---------------+ [root@controller ~]# openstack object list test_segments +---------------------------------------------------------------------------+ | Name | +---------------------------------------------------------------------------+ | cirros-0.5.2-x86_64-disk.img/1656827975.223582/16300544/10000000/00000000 | | cirros-0.5.2-x86_64-disk.img/1656827975.223582/16300544/10000000/00000001 | +---------------------------------------------------------------------------+ 7.12、查看服务、容器以及对象的状态信息 $ swift stat $ swift stat CONTAINER(容器名称) $ swift stat OBJECT(对象名称) 八、Heat(编排) 8.1、编排创建cinder $ cat cinder.yaml heat_template_version: "2018-08-31" description: "version 2017-09-01 created by HOT Generator at Sun, 03 Jul 2022 13:14:37 GMT." resources: Volume_1: type: "OS::Cinder::Volume" properties: name: heat_test1 size: 2 volume_type: "d21b433b-cdd9-4a4f-a759-9131094514f5" #创建堆栈,并创建cinder $ openstack stack create -t cinder.yaml cinder-1(栈名称)参数说明:
-t: 模板路径
8.2、编排创建swift $ cat swift.yaml heat_template_version: "2018-08-31" description: "version 2017-09-01 created by HOT Generator at Sun, 03 Jul 2022 13:19:50 GMT." resources: Container_1: type: "OS::Swift::Container" properties: name: heat_swift "X-Container-Write": true #创建堆栈,并创建swift $ openstack stack create -t swift.yaml swift-1(栈名称)参数说明:
-t: 模板路径
8.3、编排创建network和subnet heat_template_version: "2018-08-31" description: "version 2017-09-01 created by HOT Generator at Sun, 03 Jul 2022 13:28:04 GMT." resources: Net_1: type: "OS::Neutron::Net" properties: admin_state_up: true name: Heat_Network shared: true Subnet_1: type: "OS::Neutron::Subnet" properties: name: "Heat-Subnet" ip_version: 4 cidr: "10.32.10.0/24" network_id: get_resource: Net_1 # #创建堆栈,并创建网络 $ openstack stack create -t network.yaml network(栈名称)参数说明:
-t: 模板路径
8.4、编排创建flavor $ cat falvor.ayml heat_template_version: "2018-08-31" description: "version 2017-09-01 created by HOT Generator at Sun, 03 Jul 2022 13:43:44 GMT." resources: nova_flavor: type: OS::Nova::Flavor properties: name: m1.flavor disk: 20 is_public: True ram: 1024 vcpus: 2 # 创建堆栈,并创建falvor $ openstack stack create -t falvor.ayml falvor 8.5、编排创建server $ cat server.yaml heat_template_version: "2018-08-31" description: "version 2017-09-01 created by HOT Generator at Sun, 03 Jul 2022 13:33:42 GMT." resources: Server_1: type: "OS::Nova::Server" properties: networks: - network: "2cd557b4-0a35-4226-8f42-274e100d52e2" flavor: "m1.tiny" name: Heat_Server image: "ac64f3c2-5705-4962-9fdb-6ce97b1b7876" # #创建堆栈,并创建server $ openstack stack create -t server.yaml server(栈名称)参数说明:
-t: 模板路径
8.6、编排创建user $ cat user.yaml heat_template_version: "2018-08-31" description: "version 2017-09-01 created by HOT Generator at Sun, 03 Jul 2022 13:33:42 GMT." resources: user: type: OS::Keystone::User properties: name: "Heat-User" password: "123456" domain: "default" default_project: "admin" roles: [{"role": admin, "project": admin}] # 创建堆栈,并创建user $ openstack stack create -t user.yaml user(栈名称) 8.7、列出所有堆栈 $ openstack stack list +--------------------------------------+------------+----------------------------------+-----------------+----------------------+--------------+ | ID | Stack Name | Project | Stack Status | Creation Time | Updated Time | +--------------------------------------+------------+----------------------------------+-----------------+----------------------+--------------+ | 5b6dd6ff-02bf-4ae9-b933-7b628ffbb94c | falvor | 4209800f33d94f61bdfc8b487f219f06 | CREATE_COMPLETE | 2022-07-03T13:38:50Z | None | | b06ca53d-c30b-4f0d-95d8-83b8f406766a | server | 4209800f33d94f61bdfc8b487f219f06 | CREATE_COMPLETE | 2022-07-03T13:34:09Z | None | | 4229a9b0-f278-4e22-bcad-0cded20af297 | network | 4209800f33d94f61bdfc8b487f219f06 | CREATE_COMPLETE | 2022-07-03T13:28:33Z | None | | a7904f37-c967-4531-9cc6-3bb098fa95e9 | cinder-1 | 4209800f33d94f61bdfc8b487f219f06 | CREATE_COMPLETE | 2022-07-03T13:15:56Z | None | | 347f0741-c9a6-46b1-9fd1-03d270ff435d | swift-1 | 4209800f33d94f61bdfc8b487f219f06 | CREATE_COMPLETE | 2022-07-03T13:15:31Z | None | +--------------------------------------+------------+----------------------------------+-----------------+----------------------+--------------+ 8.8、列出堆栈详情 $ openstack stack show network(堆栈名称) 8.9、删除堆栈 $ openstack stack delete network(堆栈名称) 九、Manila(共享文件系统) 9.1、创建禁用 DHSS 的默认共享类型driver_handles_share_servers在使用 LVM 驱动程序创建共享之前禁用 DHSS
$ cat /etc/manila/manila.conf [lvm] ... driver_handles_share_servers = False ...默认共享类型允许您使用此驱动程序创建共享,而无需再创建共享时指定共享类型。
语法:manila type-create <spec_driver_handles_share_servers>
$ manila type-create default_share_type False +----------------------+--------------------------------------+ | Property | Value | +----------------------+--------------------------------------+ | required_extra_specs | driver_handles_share_servers : False | | Name | default_share_type | | Visibility | public | | is_default | YES | | ID | be070d83-e632-4c36-9839-0cb6079d3b77 | | optional_extra_specs | | | Description | None | +----------------------+--------------------------------------+ 9.2、列出共享类型 $ manila type-list 9.3、创建共享目录语法:manila create <share_protocol> <size>
$ manila create NFS 1 --name share1参数说明:
<share_protocol> : 共享协议(NFS、CIFS、CephFS、GlusterFS、HDFS、MAPRFS)。 <size>: 以 GiB 为单位的共享大小。 –name: 共享名称。
9.4、列出共享目录 $ manila list 9.5、查看共享目录详情 $ manila show share_name(共享名称) 9.6、允许访问共享目录语法:manila access-allow <share> <access_type> <access_to>
manila access-allow share1 ip 10.43.8.0/22参数说明:
<share> : 共享的名称或 ID <access_type> : 访问规则类型仅“ip”、“user”(用户或组)、支持“cert”或“cephx”) <access_to>: 定义访问的网段/ip –access-level: 共享访问级别(“rw”和“ro”访问级别是支持的)。 默认为 rw。
9.7、查看共享目录权限及开放网段 $ manila access-list share1(共享名称) 9.8、挂载共享目录获取共享目录路径
$ manila show share1 |grep path | | path = 10.43.8.35:/var/lib/manila/mnt/share-c530b7d7-c028-4980-86de-4aea1140c148 |compute节点挂载共享目录
$ mount -t nfs 10.43.8.35:/var/lib/manila/mnt/share-c530b7d7-c028-4980-86de-4aea1140c148 /mnt/ $ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 4.0K 3.9G 1% /dev/shm tmpfs 3.9G 145M 3.7G 4% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda1 100G 3.1G 97G 4% / tmpfs 783M 0 783M 0% /run/user/0 /dev/vdb2 20G 49M 20G 1% /swift/node/vdb2 /dev/dm-8 976M 2.6M 907M 1% /var/lib/manila/mnt/share-c530b7d7-c028-4980-86de-4aea1140c148 10.43.8.35:/var/lib/manila/mnt/share-c530b7d7-c028-4980-86de-4aea1140c148 976M 2.0M 907M 1% /mnt 参考资料https://docs.openstack.org/zh_CN/user-guide/index.html
最后我是无名小歌,欢迎大家一键三连 加入云社区一起学习云计算,走向年薪50万。
如果对你有帮助,还望赏个关注鸭!!! 😜
(⊙o⊙),我们下期再见!!!