大家好,我是无名小歌。
按照目录查询相关命令、 按照目录查询相关命令 、 按照目录查询相关命令
(常看常新)(常看常新)(常看常新)
相信大家都有过这样的经历哈,就是我们在操作OpenStack时,一般为了操作方便都会使用Dashboard web可视化界面上对OpenStack进行操作,如:创建用户、镜像、网络、云主机、云主机类型等等。
这里有个问题哈,这会导致我们对命令行操作命令大量失忆,在我们必须或想要使用命令操作时发现很多都已经没有多少印象了。所以在这里我罗列了80条相对比较常用的命令,方便大家查看,查看时多看目录结构找到自己所需要的区域。帮助大家快速查找,从而节约时间成本。
如果对你有帮助,还望赏个关注鸭!!!
欢迎大家加入云社区,一起学习云计算,走向年薪50万。
按照目录查询相关命令、 按照目录查询相关命令、 按照目录查询相关命令
(常看常新)(常看常新)(常看常新)
注意:这个命令特别重要,集成了所有组件的命令(它可以使用所有组件的命令)
语法格式: openstack [参数] [Commands]
常用参数: --version
参考实例:
查看OpenStack版本
[root@controller ~]# openstack --version
openstack 4.0.1
PS:
openstack版本是按26个字母表中的顺序排序的。
比如:A是第一个版本,B是第二个版本,C是第三个版本,往后依次类推。
上面查看的版本是4.0.1,我们需要到官网上比对这个数字版本是以什么字母版本表示的。
查看OpenStack版本地址:https://releases.openstack.org/
这里以T版为例:
我们搜索找到python-openstackclient字段,可以看到T版所发布的以数字表示的版本。只要在这区间内都是T版,最新版为4.0.2。
语法格式: 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 glance
PS:
不建议使用stop停止命令
语法格式: 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
...
...
语法格式: 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
$ 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
$ 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
$ openstack user list
$ openstack user show admin
$ openstack catalog list
$ openstack endpoint list
$ openstack token issue
$ 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: 从本地文件上传镜像
$ openstack image set --min-ram 1 --min-disk 2 镜像id/name
参数说明:
–min-ram: 镜像所需的最小 RAM 大小,以兆字节为单位
–min-disk: 镜像所需的最小磁盘大小,以 GB 为单位
$ openstack image list
$ openstack image show 镜像id/name
$ openstack image delete 镜像id/name
$ openstack network create --external --share ext-net(网络名称)
参数说明:
–external: 将此网络设置为外部网络
–share: 在项目之间共享网络
$ openstack network create --share int-net(网络名称)
$ 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)
$ openstack subnet create --subnet-range 192.168.200.0/24 --network int-net int-subnet(子网名称)
参数说明:
–subnet-range: CIDR 表示法中的子网范围
–network: 此子网所属的网络(名称或 ID)
$ openstack network list
$ openstack network show ext-net
$ openstack network show delete int-net(网络名称)
ps:
删除网络时确保网络没有云主机(实例)使用,否则删除失败。
$ openstack router create route1
$ 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=
,ip-address= (外部所需的 IP 或子网(名称或 ID)网关)
$ openstack router add subnet route1 int-net(网络名称)
$ openstack router list
$ openstack router show route1
$ openstack router delete route1
$ openstack flavor create --ram 1024 --disk 3 --vcpus 2 m1.tiny(flavor名称)
参数说明:
–ram: 内存大小,以 MB 为单位(默认 256M)
–disk: 磁盘大小,以 GB 为单位(默认 0G)
–vcpus: cpu 数量(默认 1)
$ openstack flavor list
$ openstack flavor show m1.tiny
$ openstack security group list
$ openstack security group rule list default(安全组 id/name)
$ openstack security group rule show 35c34803-7156-4d96-8a6c-6636423beae2(规则 id)
$ openstack security group create test_name(安全组 id/name)
$ openstack security group delete test_name(安全组 id/name)
从入口方向放行所有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)
$ 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=’ 的包装,为标准提供简单语法的参数。
有关更高级的用例,请参阅’–nic’参数。
$ openstack server list
$ openstack console log show NAME(实例名称)
$ openstack console url show test
$ openstack server reboot NAME
$ openstack server stop NAME
$ openstack server start NAME
$ openstack server pause NAME
$ openstack server suspend NAME
$ openstack server unpause NAME
$ openstack server rebuild NAME IMAGE
$ openstack server stop test(实例名称)
$ openstack server image create test (实例名称)–name testSnapshot (创建快照)
$ openstack image save --file csccvm.qcow2 testSnapshot
修改/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(实例名称)
$ openstack server add volume test_name(实例id/name) 8aa66c0b-72e8-4a2a-a305-1a1de50a505c(磁盘id/name)
$ 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 [email protected]
[root@controller ~]# cinder type-create lvm
$ openstack volume create --type lvm --size SIZE_IN_GB NAME(卷名称)
参数说明:
–size: 以 GB 为单位的卷大小
–type: 设置卷类型
$ openstack volume list
实例为正常状态且卷为可用状态
$ $ openstack server add volume test_name(实例id/name) 8aa66c0b-72e8-4a2a-a305-1a1de50a505c(磁盘id/name)
[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 为单位扩展卷大小
$ openstack container create test_name
$ openstack container list
$ openstack container show test_name
创建对象的过程也是向容器中上传对象的过程
$ openstack object create test_name(容器名称) test/anaconda-ks.cfg (上传的文件)
$ openstack object list test_name
+----------------------+
| Name |
+----------------------+
| test/anaconda-ks.cfg |
+----------------------+
通过查询命令可以看出,在通过命令上传对象时,本地路径即为容器内对象路径
$ 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 |
+----------------+---------------------------------------+
$ openstack object save test_name test/anaconda-ks.cfg
$ openstack object delete test_name test/anaconda-ks.cfg
下列命令只能删除空容器,如果容器内有对象,无法直接删除
$ openstack container delete test_name
$ openstack container delete --recursive swift-test
参数说明:
–recursive: 递归删除对象和容器
$ 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 |
+---------------------------------------------------------------------------+
$ swift stat
$ swift stat CONTAINER(容器名称)
$ swift stat OBJECT(对象名称)
$ 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: 模板路径
$ 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: 模板路径
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: 模板路径
$ 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
$ 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: 模板路径
$ 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(栈名称)
$ 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 |
+--------------------------------------+------------+----------------------------------+-----------------+----------------------+--------------+
$ openstack stack show network(堆栈名称)
$ openstack stack delete network(堆栈名称)
driver_handles_share_servers在使用 LVM 驱动程序创建共享之前禁用 DHSS
$ cat /etc/manila/manila.conf
[lvm]
...
driver_handles_share_servers = False
...
默认共享类型允许您使用此驱动程序创建共享,而无需再创建共享时指定共享类型。
语法:manila type-create
$ 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 |
+----------------------+--------------------------------------+
$ manila type-list
语法:manila create
$ manila create NFS 1 --name share1
参数说明:
: 共享协议(NFS、CIFS、CephFS、GlusterFS、HDFS、MAPRFS)。
: 以 GiB 为单位的共享大小。
–name: 共享名称。
$ manila list
$ manila show share_name(共享名称)
语法:manila access-allow
manila access-allow share1 ip 10.43.8.0/22
参数说明:
: 共享的名称或 ID
: 访问规则类型仅“ip”、“user”(用户或组)、支持“cert”或“cephx”)
: 定义访问的网段/ip
–access-level: 共享访问级别(“rw”和“ro”访问级别是支持的)。 默认为 rw。
$ manila access-list share1(共享名称)
获取共享目录路径
$ 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⊙),我们下期再见!!!