OpenStack 命令行参考
OpenStack 提供了强大的命令行工具 openstack,用于管理云平台中的所有资源。本章节详细介绍 openstack 命令的语法格式、参数选项和经典案例,帮助您高效管理 OpenStack 云环境。
openstack server - 虚拟机实例管理
openstack server 命令用于管理虚拟机实例的完整生命周期,包括创建、查看、启停、迁移、快照等操作。
语法格式
bash
openstack server <子命令> [参数]子命令
| 子命令 | 功能说明 |
|---|---|
list | 列出虚拟机实例 |
create | 创建虚拟机实例 |
show | 查看虚拟机实例详情 |
delete | 删除虚拟机实例 |
stop | 关闭虚拟机实例 |
start | 启动虚拟机实例 |
pause | 暂停虚拟机实例 |
unpause | 恢复暂停的虚拟机实例 |
suspend | 挂起虚拟机实例 |
resume | 恢复挂起的虚拟机实例 |
reboot | 重启虚拟机实例 |
rebuild | 重建虚拟机实例 |
resize | 调整虚拟机规格 |
resize confirm | 确认调整规格 |
resize revert | 撤销调整规格 |
migrate | 冷迁移虚拟机 |
live migrate | 热迁移虚拟机 |
shelve | 搁置虚拟机实例 |
unshelve | 恢复搁置的虚拟机实例 |
rescue | 救援模式启动 |
unrescue | 退出救援模式 |
lock | 锁定虚拟机(防止误操作) |
unlock | 解锁虚拟机 |
evacuate | 疏散虚拟机(宿主机故障时) |
add floating ip | 绑定浮动 IP |
remove floating ip | 解绑浮动 IP |
add security group | 添加安全组 |
remove security group | 移除安全组 |
image create | 基于虚拟机创建镜像(快照) |
volume attach | 挂载云硬盘 |
volume detach | 卸载云硬盘 |
dump | 导出虚拟机信息 |
server create 主要参数
| 参数 | 说明 | 示例 |
|---|---|---|
--image <镜像> | 指定虚拟机使用的镜像名称或ID | --image centos-7 |
--flavor <规格> | 指定虚拟机规格名称或ID | --flavor m1.medium |
--network <网络> | 指定虚拟机连接的网络 | --network private-net |
--key-name <密钥> | 指定 SSH 密钥对名称 | --key-name mykey |
--security-group <安全组> | 指定安全组(可重复使用) | --security-group default |
--availability-zone <可用区> | 指定可用区 | --availability-zone az1 |
--nic <网络属性> | 指定网络接口属性 | --nic net-id=xxx,v4-fixed-ip=10.0.0.100 |
--block-device <卷配置> | 指定块设备配置 | --block-device source=image,id=xxx,size=50,dest=volume,bootindex=0 |
--user-data <文件> | 指定 cloud-init 用户数据脚本 | --user-data init.sh |
--hint <提示> | 指定调度提示(如亲和性) | --hint group=xxx |
--property <key=value> | 指定自定义属性 | --property role=web |
--min <数量> | 最少创建实例数 | --min 2 |
--max <数量> | 最多创建实例数 | --max 5 |
--volume <卷> | 从卷创建实例 | --volume my-volume |
--boot-volume <卷> | 指定引导卷 | --boot-volume os-vol |
--config-drive <true/false> | 是否使用 config drive | --config-drive true |
--description <描述> | 实例描述信息 | --description "Web Server" |
--tags <标签> | 添加标签 | --tags env=prod,app=web |
server list 参数
| 参数 | 说明 |
|---|---|
--all-projects | 显示所有项目(管理员用) |
--project <项目> | 按项目过滤 |
--host <宿主机> | 按宿主机过滤 |
--status <状态> | 按状态过滤(ACTIVE/ERROR/SHUTOFF等) |
--name <名称> | 按名称模糊匹配 |
--limit <数量> | 限制返回数量 |
--marker <ID> | 分页查询标记 |
--long | 显示更多字段 |
经典案例
bash
# 列出所有虚拟机
openstack server list
# 列出所有项目中的所有虚拟机(管理员)
openstack server list --all-projects
# 创建一台虚拟机
openstack server create --image centos-7 --flavor m1.medium \
--network private-net --key-name mykey --security-group default \
--user-data init.sh my-web-server
# 查看虚拟机详情
openstack server show my-web-server
# 停止虚拟机
openstack server stop my-web-server
# 启动虚拟机
openstack server start my-web-server
# 软重启虚拟机
openstack server reboot my-web-server
# 硬重启虚拟机
openstack server reboot --hard my-web-server
# 基于虚拟机创建快照镜像
openstack server image create --name web-server-snapshot my-web-server
# 调整虚拟机规格
openstack server resize --flavor m1.large my-web-server
openstack server resize confirm my-web-server # 确认调整
openstack server resize revert my-web-server # 撤销调整
# 绑定浮动 IP
openstack server add floating ip my-web-server 203.0.113.10
# 解绑浮动 IP
openstack server remove floating ip my-web-server 203.0.113.10
# 锁定虚拟机(防止误删除)
openstack server lock my-web-server
# 锁定后无法删除,需先解锁
openstack server unlock my-web-server
# 搁置虚拟机(释放资源但保留磁盘)
openstack server shelve my-web-server
# 恢复搁置的虚拟机
openstack server unshelve my-web-server
# 热迁移虚拟机到其他宿主机
openstack server live migrate --host compute-02 my-web-server
# 故障疏散(宿主机宕机时)
openstack server evacuate --host compute-03 my-db-server
# 创建虚拟机并指定固定 IP
openstack server create --nic net-id=xxx,v4-fixed-ip=10.0.0.100 \
--image ubuntu-22 --flavor m1.small fixed-ip-vmopenstack image - 镜像管理
管理虚拟机镜像,包括上传、下载、删除、属性设置等操作。
语法格式
bash
openstack image <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出所有可用镜像 | --public, --private, --shared, --community, --long, --name, --status, --limit, --marker |
create | 创建新镜像 | --file <文件>, --disk-format <格式>, --container-format <格式>, --public/--private, --property <key=value> |
show | 查看镜像详情 | 镜像名称或ID |
delete | 删除镜像 | 镜像名称或ID(可多个) |
set | 修改镜像属性 | --name, --property <key=value>, --public/--private, --protected/--unprotected, --architecture, --min-disk, --min-ram |
unset | 移除镜像属性 | --property <key> |
save | 下载镜像到本地 | --file <输出文件> |
add project | 共享镜像给指定项目 | <镜像> <项目> |
remove project | 取消镜像共享 | <镜像> <项目> |
image create 参数
| 参数 | 说明 | 示例 |
|---|---|---|
--file <文件> | 镜像文件路径 | --file ./centos-7.qcow2 |
--disk-format <格式> | 磁盘格式 | qcow2, raw, vhd, vmdk, vdi, iso |
--container-format <格式> | 容器格式 | bare, ovf, aki, ari, ami |
--min-disk <GB> | 最小磁盘需求 | --min-disk 20 |
--min-ram <MB> | 最小内存需求 | --min-ram 1024 |
--public | 设置镜像为公共(所有项目可用) | |
--private | 设置镜像为私有(仅本项目可用) | |
--protected | 设置镜像为受保护(禁止删除) | |
--property <key=value> | 自定义属性 | --property os_type=linux --property hypervisor_type=kvm |
--tag <标签> | 添加标签 | --tag prod-ready |
经典案例
bash
# 列出所有镜像
openstack image list
# 列出所有公共镜像(含详细字段)
openstack image list --public --long
# 上传本地镜像到 Glance
openstack image create --file centos-7.qcow2 --disk-format qcow2 \
--container-format bare --public --property os_type=linux \
--min-disk 20 --min-ram 2048 CentOS-7.9
# 上传 ISO 镜像
openstack image create --file ubuntu-22.04.iso --disk-format iso \
--container-format bare ubuntu-22.04-iso
# 查看镜像详情
openstack image show CentOS-7.9
# 下载镜像到本地
openstack image save --file ./backup-centos.qcow2 CentOS-7.9
# 设置镜像为私有
openstack image set --private CentOS-7.9
# 设置镜像为受保护(防误删)
openstack image set --protected CentOS-7.9
# 删除镜像
openstack image delete CentOS-7.9
# 共享镜像给其他项目
openstack image add project CentOS-7.9 project-b
# 取消共享
openstack image remove project CentOS-7.9 project-bopenstack flavor - 虚拟机规格管理
管理虚拟机规格(flavor),定义虚拟机的 CPU、内存、磁盘等资源配置。
语法格式
bash
openstack flavor <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出所有规格 | --public, --private, --all, --long |
create | 创建规格 | --vcpus <数量>, --ram <MB>, --disk <GB>, --id <ID>, --ephemeral <GB>, --swap <MB>, --rxtx-factor <因子>, --public/--private |
show | 查看规格详情 | 规格名称或ID |
delete | 删除规格 | 规格名称或ID |
set | 修改规格属性 | --name, --property <key=value>, --public/--private |
unset | 移除规格属性 | --property <key> |
flavor create 参数
| 参数 | 说明 | 示例 |
|---|---|---|
--vcpus <数量> | vCPU 核数 | --vcpus 4 |
--ram <MB> | 内存大小(单位 MB) | --ram 8192 |
--disk <GB> | 根磁盘大小(单位 GB,0 表示不创建本地磁盘) | --disk 50 |
--ephemeral <GB> | 临时磁盘大小 | --ephemeral 20 |
--swap <MB> | 交换分区大小 | --swap 1024 |
--rxtx-factor <因子> | 网络 TX/RX 因子 | --rxtx-factor 1.0 |
--public | 设置为公共规格 | |
--private | 设置为私有规格 | |
--property <key=value> | 额外属性(用于调度匹配) | --property hw:cpu_policy=dedicated |
经典案例
bash
# 列出所有规格
openstack flavor list
# 创建基础规格
openstack flavor create --vcpus 2 --ram 4096 --disk 40 m1.small
# 创建有临时盘的规格
openstack flavor create --vcpus 4 --ram 8192 --disk 50 --ephemeral 100 m1.ephemeral
# 创建 CPU 绑定规格(性能敏感型)
openstack flavor create --vcpus 8 --ram 32768 --disk 100 \
--property hw:cpu_policy=dedicated \
--property hw:mem_page_size=large m1.cpu-dedicated
# 创建 GPU 规格
openstack flavor create --vcpus 8 --ram 65536 --disk 200 \
--property pci_passthrough:alias="gpu:1" gpu.large
# 查看规格详情
openstack flavor show m1.small
# 设置规格为私有
openstack flavor set --private m1.small
# 删除规格
openstack flavor delete m1.smallopenstack volume - 云硬盘管理
管理块存储卷(Cinder),包括创建、挂载、快照、扩容等操作。
语法格式
bash
openstack volume <子命令> [参数]子命令
| 子命令 | 功能说明 |
|---|---|
list | 列出云硬盘 |
create | 创建云硬盘 |
show | 查看云硬盘详情 |
delete | 删除云硬盘 |
set | 修改云硬盘属性 |
unset | 移除云硬盘属性 |
extend | 扩容云硬盘 |
upload to image | 将云硬盘上传为镜像 |
migrate | 迁移云硬盘 |
type list | 列出云硬盘类型 |
type create | 创建云硬盘类型 |
type delete | 删除云硬盘类型 |
type set | 修改云硬盘类型 |
snapshot list | 列出云硬盘快照 |
snapshot create | 创建云硬盘快照 |
snapshot show | 查看云硬盘快照详情 |
snapshot delete | 删除云硬盘快照 |
volume create 参数
| 参数 | 说明 | 示例 |
|---|---|---|
--size <GB> | 卷大小(单位 GB) | --size 100 |
--type <类型> | 卷类型 | --type SSD, --type HDD |
--image <镜像> | 从镜像创建卷 | --image centos-7 |
--snapshot <快照> | 从快照创建卷 | --snapshot vol-snap-01 |
--source <卷> | 从已有卷创建(克隆) | --source data-vol-01 |
--availability-zone <可用区> | 指定可用区 | --availability-zone az1 |
--bootable | 标记为可引导卷 | |
--read-only | 设置为只读 | |
--multi-attach | 允许同时挂载给多个虚拟机 | |
--property <key=value> | 自定义属性 | --property env=production |
--description <描述> | 描述信息 | --description "Database data volume" |
经典案例
bash
# 列出所有云硬盘
openstack volume list
# 列出所有云硬盘(含详细信息)
openstack volume list --long
# 创建 100GB 的 SSD 云硬盘
openstack volume create --size 100 --type SSD --description "Data volume" data-vol
# 从镜像创建可引导卷
openstack volume create --size 50 --image centos-7 --bootable boot-vol
# 挂载云硬盘到虚拟机
openstack server add volume my-web-server data-vol
# 或使用 openstack volume attach 命令
openstack volume attach --server my-web-server --device /dev/vdb data-vol
# 卸载云硬盘
openstack server remove volume my-web-server data-vol
# 扩容云硬盘(从 100G 扩展到 200G)
openstack volume extend --size 200 data-vol
# 创建云硬盘快照
openstack volume snapshot create --volume data-vol --description "Before upgrade" data-vol-snap
# 从快照恢复(创建新卷)
openstack volume create --snapshot data-vol-snap --size 100 data-vol-restored
# 将云硬盘上传为镜像
openstack volume upload to image --force True --disk-format qcow2 data-vol my-image-from-vol
# 查看卷类型
openstack volume type list
# 查看云硬盘详情
openstack volume show data-volopenstack network - 网络管理
管理虚拟网络资源,包括网络、子网、路由器、端口等。
语法格式
bash
openstack network <子命令> [参数]
openstack subnet <子命令> [参数]
openstack router <子命令> [参数]
openstack port <子命令> [参数]network 子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出网络 | --external, --internal, --project, --name, --long |
create | 创建网络 | --provider-network-type <vlan/vxlan/flat/gre>, --provider-physical-network <物理网络>, --provider-segment <分段ID>, --external/--internal, --shared, --project |
show | 查看网络详情 | 网络名称或ID |
delete | 删除网络 | 网络名称或ID |
set | 修改网络属性 | --name, --shared/--no-share, --external/--internal, --enable/--disable, --description |
subnet 子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出子网 | --long, --project, --name |
create | 创建子网 | --network <网络>, --subnet-range <CIDR>, --ip-version <4/6>, --gateway <网关>, --no-gateway, --dhcp/--no-dhcp, --allocation-pool <start=,end=>, --dns-nameserver <DNS> |
show | 查看子网详情 | 子网名称或ID |
delete | 删除子网 | 子网名称或ID |
set | 修改子网属性 | --name, --dhcp/--no-dhcp, --gateway, --allocation-pool, --dns-nameserver |
router 子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出路由器 | --long, --name, --project |
create | 创建路由器 | --project, --enable/--disable, --ha/--no-ha, --description |
show | 查看路由器详情 | 路由器名称或ID |
delete | 删除路由器 | 路由器名称或ID |
set | 修改路由器 | --name, --description |
add subnet | 添加子网接口 | 路由器 <子网> |
remove subnet | 移除子网接口 | 路由器 <子网> |
add port | 添加端口接口 | 路由器 <端口> |
remove port | 移除端口接口 | 路由器 <端口> |
set gateway | 设置外部网关 | 路由器 <外部网络> |
unset gateway | 移除外部网关 | 路由器 |
port 子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出端口 | --router, --device-owner, --device-id, --fixed-ip, --mac-address, --long |
create | 创建端口 | --network <网络>, --fixed-ip <IP>, --mac-address <MAC>, --vnic-type, --binding-profile, --security-group <安全组> |
show | 查看端口详情 | 端口名称或ID |
delete | 删除端口 | 端口名称或ID |
set | 修改端口属性 | --name, --security-group, --no-security-group, --enable/--disable, --vnic-type |
经典案例
bash
# 创建外部(provider)网络
openstack network create --external --provider-network-type flat \
--provider-physical-network physnet1 public-network
# 创建内部租户网络(VXLAN)
openstack network create --internal --provider-network-type vxlan private-net
# 创建子网
openstack subnet create --network private-net --subnet-range 192.168.100.0/24 \
--gateway 192.168.100.1 --dhcp --allocation-pool start=192.168.100.10,end=192.168.100.200 \
--dns-nameserver 8.8.8.8 --dns-nameserver 114.114.114.114 private-subnet
# 创建路由器并连接内外网
openstack router create my-router
openstack router set --external-gateway public-network my-router
openstack router add subnet my-router private-subnet
# 查看网络列表
openstack network list
openstack network list --external --long
# 查看子网列表
openstack subnet list
# 查看路由器列表
openstack router list
# 创建指定 IP 的端口(用于固定 IP)
openstack port create --network private-net --fixed-ip subnet=private-subnet,ip-address=192.168.100.50 fixed-port
# 列出所有端口
openstack port list --long
# 删除网络(需先删除子网和端口)
openstack port list --network private-net # 查看关联端口
openstack port delete <port-id> # 删除端口
openstack router remove subnet my-router private-subnet # 移除路由器接口
openstack subnet delete private-subnet # 删除子网
openstack network delete private-net # 删除网络openstack floating ip - 浮动 IP 管理
管理浮动 IP 地址,实现从外部网络访问虚拟机。
语法格式
bash
openstack floating ip <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出浮动 IP | --network <网络>, --project <项目>, --status <状态>, --long |
create | 创建浮动 IP | --network <外部网络>, --subnet <子网>, --project <项目>, --floating-ip-address <IP>, --description <描述> |
show | 查看浮动 IP 详情 | 浮动 IP 地址或ID |
delete | 删除浮动 IP | 浮动 IP 地址或ID |
set | 修改浮动 IP | --port <端口>, --description |
unset | 移除浮动 IP 属性 | --port(解绑) |
经典案例
bash
# 列出所有浮动 IP
openstack floating ip list
# 创建一个浮动 IP(从外部网络池分配)
openstack floating ip create --description "Web server public IP" public-network
# 创建指定地址的浮动 IP(管理员用)
openstack floating ip create --floating-ip-address 203.0.113.10 public-network
# 绑定浮动 IP 到虚拟机
openstack server add floating ip my-web-server 203.0.113.10
# 解绑浮动 IP
openstack server remove floating ip my-web-server 203.0.113.10
# 查看浮动 IP 详情
openstack floating ip show 203.0.113.10
# 删除浮动 IP
openstack floating ip delete 203.0.113.10openstack security group - 安全组管理
管理安全组和防火墙规则,控制虚拟机的网络访问。
语法格式
bash
openstack security group <子命令> [参数]
openstack security group rule <子命令> [参数]security group 子命令
| 子命令 | 功能说明 |
|---|---|
list | 列出安全组 |
create | 创建安全组 |
show | 查看安全组详情 |
delete | 删除安全组 |
set | 修改安全组属性 |
security group rule 子命令
| 子命令 | 功能说明 |
|---|---|
list | 列出安全组规则 |
create | 创建安全组规则 |
delete | 删除安全组规则 |
security group rule create 参数
| 参数 | 说明 | 示例 |
|---|---|---|
--proto <协议> | IP 协议类型 | tcp, udp, icmp, any |
--dst-port <端口> | 目标端口或端口范围 | 22, 80, 443, 3000:3100 |
--src-ip <CIDR> | 源 IP 地址范围 | 0.0.0.0/0, 10.0.0.0/24 |
--src-port <端口> | 源端口(通常不指定) | |
--remote-group <安全组> | 远程安全组(允许组内互访) | web-sg |
--ethertype <类型> | 以太网类型 | IPv4, IPv6 |
--ingress | 入站规则(默认) | |
--egress | 出站规则 |
经典案例
bash
# 创建安全组
openstack security group create --description "Web server security group" web-sg
# 允许 SSH 访问(入站)
openstack security group rule create --proto tcp --dst-port 22 --src-ip 0.0.0.0/0 web-sg
# 允许 HTTP/HTTPS 访问
openstack security group rule create --proto tcp --dst-port 80 --src-ip 0.0.0.0/0 web-sg
openstack security group rule create --proto tcp --dst-port 443 --src-ip 0.0.0.0/0 web-sg
# 允许组内实例互访(常用于集群)
openstack security group rule create --proto any --remote-group web-sg web-sg
# 允许特定来源 IP 访问数据库端口
openstack security group rule create --proto tcp --dst-port 3306 --src-ip 192.168.100.0/24 db-sg
# 允许全部 ICMP(Ping)
openstack security group rule create --proto icmp --src-ip 0.0.0.0/0 default
# 查看安全组规则
openstack security group rule list web-sg
# 将安全组应用于虚拟机
openstack server add security group my-web-server web-sg
openstack server remove security group my-web-server web-sg
# 查看安全组
openstack security group list
openstack security group show web-sgopenstack keypair - 密钥对管理
管理 SSH 密钥对,用于虚拟机实例的 SSH 免密登录。
语法格式
bash
openstack keypair <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出密钥对 | |
create | 创建密钥对 | --public-key <文件>(导入公钥),不指定则生成新密钥对 |
show | 查看密钥对信息 | 密钥名称 |
delete | 删除密钥对 | 密钥名称 |
经典案例
bash
# 列出所有密钥对
openstack keypair list
# 创建并下载密钥对(不指定公钥则会生成新的)
openstack keypair create --public-key ~/.ssh/id_rsa.pub my-key
# 查看密钥对信息
openstack keypair show my-key
# 创建虚拟机时指定密钥对
openstack server create --image centos-7 --flavor m1.small \
--key-name my-key --network private-net my-server
# 删除密钥对
openstack keypair delete my-keyopenstack project / user / role - 租户与权限管理
管理 OpenStack 的多租户体系,包括项目、用户、角色和权限。
语法格式
bash
openstack project <子命令> [参数]
openstack user <子命令> [参数]
openstack role <子命令> [参数]project 子命令
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出所有项目 | --domain, --user, --long, --enabled/--disabled |
create | 创建项目 | --domain <域>, --description <描述>, --enable/--disable, --property <key=value> |
show | 查看项目详情 | 项目名称或ID |
delete | 删除项目 | 项目名称或ID |
set | 修改项目 | --name, --description, --enable/--disable, --property |
user 子命令
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出用户 | --project, --domain, --long, --enabled/--disabled |
create | 创建用户 | --project <项目>, --password <密码>, --email <邮箱>, --enable/--disable, --domain, --description |
show | 查看用户详情 | 用户名或ID |
delete | 删除用户 | 用户名或ID |
set | 修改用户 | --name, --password, --email, --enable/--disable |
role 子命令
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出角色 | |
create | 创建角色 | |
show | 查看角色详情 | 角色名称或ID |
delete | 删除角色 | 角色名称或ID |
add | 为用户授予角色 | --user <用户> --project <项目> <角色> |
remove | 移除用户角色 | --user <用户> --project <项目> <角色> |
经典案例
bash
# 列出所有项目
openstack project list
# 创建项目
openstack project create --domain default --description "Production environment" production
# 启用/禁用项目
openstack project set --disable production
openstack project set --enable production
# 创建用户
openstack user create --domain default --project production --password 'SecurePass123' --email admin@example.com admin-user
# 创建角色
openstack role create admin
# 为用户授予项目的 admin 角色
openstack role add --user admin-user --project production admin
# 查看用户在项目中的角色
openstack role list --user admin-user --project production
# 移除角色
openstack role remove --user admin-user --project production admin
# 列出用户
openstack user list --project production
# 查看项目详情
openstack project show productionopenstack compute service - 计算服务管理
管理 Nova 计算服务,查看服务状态、启用/禁用服务。
语法格式
bash
openstack compute service <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出所有计算服务 | --service <服务名>, --host <宿主机>, --long |
set | 设置计算服务 | --enable/--disable, --disable-reason <原因> |
经典案例
bash
# 列出所有计算服务及其状态
openstack compute service list
# 禁用计算节点(维护前操作)
openstack compute service set --disable --disable-reason "Hardware maintenance" compute-01 nova-compute
# 启用计算节点(维护完成)
openstack compute service set --enable compute-01 nova-compute
# 禁用调度器
openstack compute service set --disable compute-01 nova-scheduleropenstack hypervisor - 宿主机管理
查看计算节点的硬件资源和运行状态。
语法格式
bash
openstack hypervisor <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出所有宿主机 | --long, --matching <主机名> |
show | 查看宿主机详情 | 宿主机名称或ID |
stats show | 显示宿主机资源统计(总量/已用/剩余) |
经典案例
bash
# 列出所有宿主机
openstack hypervisor list
# 查看单个宿主机详细信息
openstack hypervisor show compute-01
# 查看所有宿主机的资源统计
openstack hypervisor stats show
# 输出示例:
# +----------------------+-------+
# | Field | Value |
# +----------------------+-------+
# | count | 5 |
# | current_workload | 0 |
# | disk_available_least | 2048 |
# | free_disk_gb | 500 |
# | free_ram_mb | 65536 |
# | local_gb | 2000 |
# | local_gb_used | 1500 |
# | memory_mb | 262144|
# | memory_mb_used | 196608|
# | running_vms | 24 |
# | vcpus | 80 |
# | vcpus_used | 56 |
# +----------------------+-------+openstack quota - 配额管理
管理项目和项目的资源配额,限制资源使用上限。
语法格式
bash
openstack quota <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出所有项目的配额 | |
show | 查看指定项目的配额 | <项目> |
set | 设置项目的配额 | --cores <数量>, --ram <MB>, --instances <数量>, --volumes <数量>, --gigabytes <GB>, --snapshots <数量>, --networks <数量>, --subnets <数量>, --routers <数量>, --floating-ips <数量>, --secgroups <数量>, --secgroup-rules <数量>, --ports <数量>, --backups <数量>, --backup-gigabytes <GB> |
经典案例
bash
# 查看项目的配额
openstack quota show production
# 设置项目的计算资源配额
openstack quota set --cores 100 --ram 262144 --instances 50 production
# 设置项目的存储资源配额
openstack quota set --volumes 20 --gigabytes 1000 --snapshots 20 production
# 设置项目的网络资源配额
openstack quota set --networks 10 --subnets 10 --routers 5 --floating-ips 20 \
--secgroups 10 --secgroup-rules 100 production
# 列出所有项目的配额
openstack quota listopenstack stack - 编排管理
使用 Heat 编排服务管理基础设施堆栈,实现自动化部署。
语法格式
bash
openstack stack <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出所有堆栈 | --name, --status, --tags, --long, --limit, --marker |
create | 创建堆栈 | -t <模板文件>, --parameter <key=value>, --environment <环境文件>, --enable-rollback/--no-rollback, --timeout <分钟>, --tags <标签>, --dry-run |
show | 查看堆栈详情 | 堆栈名称或ID |
delete | 删除堆栈 | 堆栈名称或ID |
update | 更新堆栈 | -t <模板>, --parameter, --environment, --rollback/--no-rollback |
resource list | 列出堆栈资源 | <堆栈> |
resource show | 查看资源详情 | <堆栈> <资源名称> |
output list | 列出堆栈输出 | <堆栈> |
output show | 查看输出详情 | <堆栈> <输出名称> |
event list | 列出堆栈事件 | <堆栈>, --resource <资源>, --action <动作>, --long |
template show | 获取堆栈模板 | <堆栈> |
经典案例
bash
# 根据模板创建堆栈
openstack stack create -t ./heat-web-cluster.yaml \
--parameter image=centos-7 --parameter flavor=m1.medium \
--parameter network=private-net --parameter key_name=my-key \
--enable-rollback --timeout 60 web-cluster
# 列出所有堆栈
openstack stack list
# 查看堆栈详情
openstack stack show web-cluster
# 查看堆栈资源
openstack stack resource list web-cluster
openstack stack resource show web-cluster web_server
# 查看堆栈事件(排查失败原因)
openstack stack event list web-cluster --long
# 查看堆栈输出
openstack stack output list web-cluster
openstack stack output show web-cluster website_url
# 更新堆栈
openstack stack update -t ./heat-web-cluster-v2.yaml \
--parameter instance_count=5 web-cluster
# 删除堆栈
openstack stack delete web-clusteropenstack endpoint - 服务端点管理
管理 Keystone 服务目录中的服务端点(Endpoint)。
语法格式
bash
openstack endpoint <子命令> [参数]子命令和参数
| 子命令 | 功能说明 | 常用参数 |
|---|---|---|
list | 列出服务端点 | --service <服务>, --interface <接口>, --region <区域> |
create | 创建服务端点 | --service <服务>, --interface <接口>, --url <URL>, --region <区域> |
delete | 删除服务端点 | 端点ID |
show | 查看端点详情 | 端点ID |
经典案例
bash
# 列出所有端点
openstack endpoint list
# 列出特定服务的端点
openstack endpoint list --service nova
# 创建服务端点
openstack endpoint create --service nova --interface public \
--url https://nova.example.com:8774/v2.1 --region RegionOne
# 删除服务端点
openstack endpoint delete <endpoint-id>全局命令行选项
以下选项适用于所有 openstack 子命令。
| 选项 | 说明 | 示例 |
|---|---|---|
--os-cloud <云名称> | 指定 clouds.yaml 中的云配置名称 | --os-cloud mycloud |
--os-auth-url <URL> | 指定 Keystone 认证地址 | --os-auth-url https://keystone.example.com:5000/v3 |
--os-username <用户名> | 指定用户名 | --os-username admin |
--os-password <密码> | 指定密码 | --os-password xxxxxx |
--os-project-name <项目> | 指定项目名 | --os-project-name admin |
--os-user-domain-name <域> | 指定用户域 | --os-user-domain-name Default |
--os-project-domain-name <域> | 指定项目域 | --os-project-domain-name Default |
--insecure | 跳过 SSL 证书验证 | |
--debug | 开启调试模式(显示详细 API 调用) | |
--quiet | 静默模式,减少输出 | |
--version | 显示版本号 | |
-h / --help | 显示帮助信息 |
注意事项
- OpenStack 命令支持分页查询,使用
--limit和--marker参数遍历大量资源 - 管理员可以通过
--all-projects查看所有项目的资源 - 大多数命令支持
-f json或-f yaml格式化输出,方便脚本处理 - 资源名称和 ID 都可以作为参数使用,但 ID 是唯一的,名称可能重复
- 生产环境中建议使用
clouds.yaml配置文件管理认证信息,避免在命令行暴露密码
