date: 2021-03-14title: openstack指令——nova篇 #标题
tags: #标签
categories: openstack # 分类

记录下openstack queens版本命令查询语句。

查看openstack组件版本

  1. # 可增加 --all 选项查看更多组件信息
  2. $ openstack module list
  3. +-----------------+--------+
  4. | Field | Value |
  5. +-----------------+--------+
  6. | barbicanclient | 4.6.1 |
  7. | cinderclient | 3.5.0 |
  8. | designateclient | 2.9.0 |
  9. | keystoneclient | 3.15.1 |
  10. | novaclient | 10.1.1 |
  11. | openstack | 0.11.4 |
  12. | openstackclient | 3.14.3 |
  13. | swiftclient | 3.5.1 |
  14. +-----------------+--------+

nova指令

列举当前用户所有虚机

  1. $ nova list
  2. +--------------------------------------+-------+--------+------------+-------------+--------------------------+
  3. | ID | Name | Status | Task State | Power State | Networks |
  4. +--------------------------------------+-------+--------+------------+-------------+--------------------------+
  5. | c329d5a1-1330-44ae-94f5-05933157fd32 | web01 | ACTIVE | - | Running | lvjianzhao=192.168.20.34 |
  6. +--------------------------------------+-------+--------+------------+-------------+--------------------------+

列举某个虚机的详细信息

  1. $ nova show c329d5a1-1330-44ae-94f5-05933157fd32
  2. +--------------------------------------+----------------------------------------------------------------------------------------------------------------------+
  3. | Property | Value |
  4. +--------------------------------------+----------------------------------------------------------------------------------------------------------------------+
  5. | OS-DCF:diskConfig | AUTO |
  6. | OS-EXT-AZ:availability_zone | test |
  7. | OS-EXT-SRV-ATTR:host | compute02 |
  8. | OS-EXT-SRV-ATTR:hostname | web01 |
  9. | OS-EXT-SRV-ATTR:hypervisor_hostname | compute02 |
  10. | OS-EXT-SRV-ATTR:instance_name | instance-00000006 |
  11. | OS-EXT-SRV-ATTR:kernel_id | |
  12. | OS-EXT-SRV-ATTR:launch_index | 0 |
  13. | OS-EXT-SRV-ATTR:ramdisk_id | |
  14. | OS-EXT-SRV-ATTR:reservation_id | r-aarve9xm |
  15. | OS-EXT-SRV-ATTR:root_device_name | /dev/vda |
  16. | OS-EXT-SRV-ATTR:user_data | IyEvYmluL2Jhc2gKZWNobyAnMTIzLmNvbScgfCBwYXNzd2QgLS1zdGRpbiByb290CmVjaG8gJzEyMy5jb20nIHwgcGFzc3dkIC0tc3RkaW4gY2VudG9z |
  17. | OS-EXT-STS:power_state | 1 |
  18. | OS-EXT-STS:task_state | - |
  19. | OS-EXT-STS:vm_state | active |
  20. | OS-SRV-USG:launched_at | 2021-02-15T12:10:41.000000 |
  21. | OS-SRV-USG:terminated_at | - |
  22. | accessIPv4 | |
  23. | accessIPv6 | |
  24. | config_drive | |
  25. | created | 2021-02-15T12:09:31Z |
  26. | description | aaa |
  27. | flavor:disk | 20 |
  28. | flavor:ephemeral | 0 |
  29. | flavor:extra_specs | {} |
  30. | flavor:original_name | test |
  31. | flavor:ram | 800 |
  32. | flavor:swap | 16 |
  33. | flavor:vcpus | 1 |
  34. | hostId | dd09d44f9baf6b7bdd96f321f1d2ad39f287f773ee794408fd613f2a |
  35. | host_status | UP |
  36. | id | c329d5a1-1330-44ae-94f5-05933157fd32 |
  37. | image | Attempt to boot from volume - no image supplied |
  38. | key_name | mykey |
  39. | locked | False |
  40. | lvjianzhao network | 192.168.20.34 |
  41. | metadata | {} |
  42. | name | web01 |
  43. | os-extended-volumes:volumes_attached | [{"id": "2466c102-37c6-4971-a80c-a9c048414771", "delete_on_termination": false}] |
  44. | progress | 0 |
  45. | security_groups | default |
  46. | status | ACTIVE |
  47. | tags | [] |
  48. | tenant_id | 4085f844e7184e98813eab9b1ef2f350 |
  49. | updated | 2021-03-04T06:11:59Z |
  50. | user_id | c883cc6a37cc4a0db55698078657b4ea |
  51. +--------------------------------------+----------------------------------------------------------------------------------------------------------------------+

获取所有服务列表

  1. $ nova service-list
  2. +--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
  3. | Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | Forced down |
  4. +--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
  5. | 4f3651cf-61dd-4a58-b64c-b1c7b60dfddc | nova-scheduler | controller | internal | enabled | up | 2021-03-04T07:33:05.000000 | - | False |
  6. | 3d0f7917-a612-4a8f-b374-eb3d5dbfe225 | nova-consoleauth | controller | internal | enabled | up | 2021-03-04T07:33:03.000000 | - | False |
  7. | 98cd8ad8-e75a-414a-b9e0-86f4d4d1e99d | nova-conductor | controller | internal | enabled | up | 2021-03-04T07:33:00.000000 | - | False |
  8. | b8ec9ffb-9ac8-4f54-afaf-6233cfa2b5e8 | nova-compute | compute01 | nova | enabled | up | 2021-03-04T07:33:08.000000 | - | False |
  9. | ff7a5ba6-dba9-42f0-97dc-563907e43018 | nova-compute | compute02 | test | enabled | up | 2021-03-04T07:33:05.000000 | - | False |
  10. +--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+

查询虚机vnc URL

  1. $ nova get-vnc-console c329d5a1-1330-44ae-94f5-05933157fd32 novnc
  2. +-------+---------------------------------------------------------------------------------+
  3. | Type | Url |
  4. +-------+---------------------------------------------------------------------------------+
  5. | novnc | http://controller:6080/vnc_auto.html?token=adf0e978-8e1a-4a2f-a3c9-b6ee8471024f |
  6. +-------+---------------------------------------------------------------------------------+
  7. # 或者
  8. $ openstack console url show 8e0962b1-5a64-4296-a13f-91a004b3e61b
  9. +-------+---------------------------------------------------------------------------------+
  10. | Field | Value |
  11. +-------+---------------------------------------------------------------------------------+
  12. | type | novnc |
  13. | url | http://controller:6080/vnc_auto.html?token=59a14918-cdbe-4521-9718-d369d8091cfc |
  14. +-------+---------------------------------------------------------------------------------+
  15. # 如果为windows系统,请增加 --rdp选项
  16. $ openstack console url show 8e0962b1-5a64-4296-a13f-91a004b3e61b --rdp

列出迁移列表

  1. $ nova migration-list
  2. +----+------+-------------+-----------+----------------+--------------+-----------+--------+---------------+------------+------------+------------+------------+------+
  3. | Id | UUID | Source Node | Dest Node | Source Compute | Dest Compute | Dest Host | Status | Instance UUID | Old Flavor | New Flavor | Created At | Updated At | Type |
  4. +----+------+-------------+-----------+----------------+--------------+-----------+--------+---------------+------------+------------+------------+------------+------+
  5. +----+------+-------------+-----------+----------------+--------------+-----------+--------+---------------+------------+------------+------------+------------+------+

flavor篇

  1. $ openstack flavor --help
  2. Command "flavor" matches:
  3. flavor create
  4. flavor delete
  5. flavor list
  6. flavor set
  7. flavor show
  8. flavor unset

创建flavor计算方案

  1. # 命令格式
  2. $ openstack flavor create
  3. [--id <id>]
  4. [--ram <size-mb>]
  5. [--disk <size-gb>]
  6. [--ephemeral-disk <size-gb>]
  7. [--swap <size-mb>]
  8. [--vcpus <num-cpu>]
  9. [--rxtx-factor <factor>]
  10. [--public | --private]
  11. [--property <key=value> [...] ]
  12. [--project <project>]
  13. [--project-domain <project-domain>]
  14. <flavor-name>
  15. # --id:指定flavor id号,可忽略
  16. # --ram:指定内存大小(单位为MB),默认256M
  17. # --disk:指定磁盘大小(单位为GB),默认为0G
  18. # --ephemeral-disk:临时磁盘大小(以GB为单位)(默认为0G)
  19. # --swap:交换空间大小(以MB为单位)(默认为0M)
  20. # --vcpus:vcpus数量,默认为1
  21. # --rxtx-factor:RX / TX因子(默认为1.0)
  22. # --public:公用方案,可用于其他项目(默认)
  23. # --private:私有方案
  24. # --property <key=value>:为此方案添加的属性(重复设置多个属性的选项)
  25. # --project <project>:指定方案所属项目,必须与--private选项一起使用
  26. # --project-domain <project-domain>:项目所属的域(名称或ID)。如果项目名称之间存在冲突,则可以使用此方法。
  27. # <flavor-name>:方案名称
  28. # 命令示例
  29. # --private:创建一个私有的计算方案,自动分配id,分配给admin项目,内存为256M,磁盘空间为1G,CPU为1核
  30. $ openstack flavor create --private m1.extra_tiny --id auto \
  31. --ram 256 --disk 1 --vcpus 1 --project 4085f844e7184e98813eab9b1ef2f350
  32. # --public:创建一个公用的计算方案,规格同上,--id 可省略。
  33. $ openstack flavor create --public m1.extra_tiny \
  34. --ram 256 --disk 1 --vcpus 1
  35. # 创建计算方案后,需要分配给指定项目(下面是分配给了demo项目)
  36. # 可以指定为项目名称或id
  37. $ openstack flavor set --project 291f8ffed66a452e838e48cb2eeecc19 m2.extra_tiny

查看flavor列表

  1. # 命令格式如下:
  2. $ openstack flavor list
  3. [--public | --private | --all]
  4. [--long]
  5. [--limit <num-flavors>]
  6. # --public:列出公有方案(默认)
  7. # --private:仅列出私有方案
  8. # --long:输出详细信息
  9. # --limit:限制显示多少方案
  10. $ openstack flavor list
  11. +--------------------------------------+---------+-----+------+-----------+-------+-----------+
  12. | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
  13. +--------------------------------------+---------+-----+------+-----------+-------+-----------+
  14. | fb5448ae-f946-4c19-822b-12d1ec6a7fe2 | m1.tiny | 512 | 1 | 0 | 1 | True |
  15. +--------------------------------------+---------+-----+------+-----------+-------+-----------+

删除flavor方案

# 可以指定为flavor id或者flavor name
$ openstack flavor delete fa5c88cc-d9c9-4549-a957-dd89d50322a1

可用域篇

openstack availability zone list
    [--compute]
    [--network]
    [--volume]
    [--long]

# --compute:列出计算可用区
# --network:列出网络可用区
# --voluem:列出卷可用区
# --long:输出相信信息

主机聚合篇

$ openstack aggregate --help
Command "aggregate" matches:
  aggregate add host
  aggregate create
  aggregate delete
  aggregate list
  aggregate remove host
  aggregate set
  aggregate show
  aggregate unset

创建主机聚合-test

# 直接创建主机聚合test
$ nova aggregate-create test
+----+------+-------------------+-------+----------+--------------------------------------+
| Id | Name | Availability Zone | Hosts | Metadata | UUID                                 |
+----+------+-------------------+-------+----------+--------------------------------------+
| 1  | test | -                 |       |          | d8c927b5-fe55-4383-b5d4-86f9e35c6085 |
+----+------+-------------------+-------+----------+--------------------------------------+

# 为nova域创建主机聚合test
$ openstack aggregate create --zone nova test

指定主机聚合的可用域

# 在上面没有指定主机聚合的可用域,是不行滴,那么如何补救呢?
$ nova aggregate-update --availability-zone test-zone test
Aggregate 2 has been successfully updated.
+----+------+-------------------+-------------+-------------------------------+--------------------------------------+
| Id | Name | Availability Zone | Hosts       | Metadata                      | UUID                                 |
+----+------+-------------------+-------------+-------------------------------+--------------------------------------+
| 2  | test | test-zone         | 'compute02' | 'availability_zone=test-zone' | 84ceaf9f-8765-4733-9bc4-3b72290e5123 |
+----+------+-------------------+-------------+-------------------------------+--------------------------------------+

# 通过 --availability-zone 来指定主机聚合的可用域(无需提前创建可用域)

查看主机聚合

$ nova aggregate-list
+----+------+-------------------+--------------------------------------+
| Id | Name | Availability Zone | UUID                                 |
+----+------+-------------------+--------------------------------------+
| 1  | test | -                 | d8c927b5-fe55-4383-b5d4-86f9e35c6085 |
+----+------+-------------------+--------------------------------------+

添加主机到主机聚合

$ nova aggregate-add-host test compute02
Host compute02 has been successfully added for aggregate 1 
+----+------+-------------------+-------------+----------+--------------------------------------+
| Id | Name | Availability Zone | Hosts       | Metadata | UUID                                 |
+----+------+-------------------+-------------+----------+--------------------------------------+
| 1  | test | -                 | 'compute02' |          | d8c927b5-fe55-4383-b5d4-86f9e35c6085 |
+----+------+-------------------+-------------+----------+--------------------------------------+

查看主机聚合中的计算节点

$ nova aggregate-show test
+----+------+-------------------+-------------+----------+--------------------------------------+
| Id | Name | Availability Zone | Hosts       | Metadata | UUID                                 |
+----+------+-------------------+-------------+----------+--------------------------------------+
| 1  | test | -                 | 'compute02' |          | d8c927b5-fe55-4383-b5d4-86f9e35c6085 |
+----+------+-------------------+-------------+----------+--------------------------------------+

移除主机聚合中的主机

$ nova aggregate-remove-host test compute02 
Host compute02 has been successfully removed from aggregate 1 
+----+------+-------------------+-------+----------+--------------------------------------+
| Id | Name | Availability Zone | Hosts | Metadata | UUID                                 |
+----+------+-------------------+-------+----------+--------------------------------------+
| 1  | test | -                 |       |          | d8c927b5-fe55-4383-b5d4-86f9e35c6085 |
+----+------+-------------------+-------+----------+--------------------------------------+

删除主机聚合

$ nova aggregate-delete test

查看虚机console log

$ openstack console log show VM_ID
# 可使用 --lines number 指定输出行数,默认输出所有

浮动IP—floating篇

$ openstack floating --help
Command "floating" matches:
  floating ip create
  floating ip delete
  floating ip list
  floating ip pool list
  floating ip set
  floating ip show
  floating ip unset

创建浮动IP

# 命令格式如下:
$ openstack floating ip create
    [--subnet <subnet>]
    [--port <port>]
    [--floating-ip-address <ip-address>]
    [--fixed-ip-address <ip-address>]
    [--description <description>]
    [--qos-policy <qos-policy>]
    [--project <project> [--project-domain <project-domain>]]
    <network>

# --subnet:指定子网名称或ID
# --floating-ip-address:指定浮动IP地址
# --fixed-ip-address:指定固定IP地址和浮动IP地址进行绑定
# --description:浮动IP描述
# --qos-policy:指定浮动IP的qos策略
# --project:浮动IP所属项目名称或ID
# --project-domain:项目所属的域(名称或ID)。如果项目名称之间存在冲突,则可以使用此方法。
# network:要从中分配浮动IP的网络(名称或ID)

# 在创建浮动IP之前,我们首先要获取网络、子网、虚机等相关信息
$ openstack network list     # 查看网络列表
+--------------------------------------+------------+--------------------------------------+
| ID                                   | Name       | Subnets                              |
+--------------------------------------+------------+--------------------------------------+
| 58280f28-f8bf-405d-8ae8-aa818c0eac13 | vpc-1      | f94a7745-cefe-4e79-a1f2-85f5f84fef38 |
| 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | lvjianzhao | 0922f8c3-eecb-44b5-86c4-0628ebb3a8ea |
+--------------------------------------+------------+--------------------------------------+


$ openstack subnet list    # 查看子网列表
+--------------------------------------+----------+--------------------------------------+-----------------+
| ID                                   | Name     | Network                              | Subnet          |
+--------------------------------------+----------+--------------------------------------+-----------------+
| 0922f8c3-eecb-44b5-86c4-0628ebb3a8ea | provider | 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | 192.168.20.0/24 |
| f94a7745-cefe-4e79-a1f2-85f5f84fef38 | vpc-1    | 58280f28-f8bf-405d-8ae8-aa818c0eac13 | 10.252.201.0/24 |
+--------------------------------------+----------+--------------------------------------+-----------------+


$ openstack server list     # 查看虚机列表
+--------------------------------------+------+--------+-----------------------------------+-------+---------+
| ID                                   | Name | Status | Networks                          | Image | Flavor  |
+--------------------------------------+------+--------+-----------------------------------+-------+---------+
| eb9c8988-a870-44ff-b28a-effd8f2c9622 | test | ACTIVE | vpc-1=10.252.201.14               |       | m1.tiny |
| 8e0962b1-5a64-4296-a13f-91a004b3e61b | test | ACTIVE | vpc-1=10.252.201.4, 192.168.20.89 |       | m1.tiny |
+--------------------------------------+------+--------+-----------------------------------+-------+---------+


# 创建浮动IP 192.168.20.91
$ openstack floating ip create \
--subnet 0922f8c3-eecb-44b5-86c4-0628ebb3a8ea \
--description '用于外网访问虚机' \
--floating-ip-address 192.168.20.91 \
--project admin \
68bf0f61-9541-4b0e-bcd8-ae048f0537f7

关联浮动IP到VM实例

# 将创建的浮动IP绑定至虚机 eb9c8988-a870-44ff-b28a-effd8f2c9622
$ openstack server add floating ip eb9c8988-a870-44ff-b28a-effd8f2c9622 192.168.20.91

# 确认已绑定
$ openstack server list
+--------------------------------------+------+--------+------------------------------------+-------+---------+
| ID                                   | Name | Status | Networks                           | Image | Flavor  |
+--------------------------------------+------+--------+------------------------------------+-------+---------+
| eb9c8988-a870-44ff-b28a-effd8f2c9622 | test | ACTIVE | vpc-1=10.252.201.14, 192.168.20.91 |       | m1.tiny |
| 8e0962b1-5a64-4296-a13f-91a004b3e61b | test | ACTIVE | vpc-1=10.252.201.4, 192.168.20.89  |       | m1.tiny |
+--------------------------------------+------+--------+------------------------------------+-------+---------+

可以通过ssh登录到浮动IP,来确定是否绑定成功:

openstack指令——nova篇 - 图1

查看浮动IP详细信息

$ openstack floating ip show 192.168.20.91 
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2021-03-13T07:23:51Z                 |
| description         | 用于外网访问                         |
| fixed_ip_address    | 10.252.201.14                        |
| floating_ip_address | 192.168.20.91                        |
| floating_network_id | 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 |
| id                  | e79f1d04-9ad5-4ad0-a7ff-d2266077005a |
| name                | 192.168.20.91                        |
| port_id             | d4b33b69-6414-4063-a6bf-3983796c7293 |
| project_id          | 4085f844e7184e98813eab9b1ef2f350     |
| qos_policy_id       | None                                 |
| revision_number     | 7                                    |
| router_id           | 0c10714c-de37-48c4-8d23-da29d80eca3b |
| status              | ACTIVE                               |
| subnet_id           | None                                 |
| updated_at          | 2021-03-13T09:03:32Z                 |
+---------------------+--------------------------------------+

取消浮动IP和实例的绑定关系

# 取消关联,其中 eb9c8988-a870-44ff-b28a-effd8f2c9622 为VM实例的ID
$ openstack server remove floating ip eb9c8988-a870-44ff-b28a-effd8f2c9622 192.168.20.91

$ openstack server list        # 确认已移除                    
+--------------------------------------+------+--------+-----------------------------------+-------+---------+
| ID                                   | Name | Status | Networks                          | Image | Flavor  |
+--------------------------------------+------+--------+-----------------------------------+-------+---------+
| eb9c8988-a870-44ff-b28a-effd8f2c9622 | test | ACTIVE | vpc-1=10.252.201.14               |       | m1.tiny |
| 8e0962b1-5a64-4296-a13f-91a004b3e61b | test | ACTIVE | vpc-1=10.252.201.4, 192.168.20.89 |       | m1.tiny |
+--------------------------------------+------+--------+-----------------------------------+-------+---------+

查看浮动IP列表

$ openstack floating ip list
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+
| ID                                   | Floating IP Address | Fixed IP Address | Port                                 | Floating Network                     | Project                          |
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+
| 5ddb3c43-4f55-4500-86e5-84034ecb363c | 192.168.20.89       | 10.252.201.4     | cc895d66-ae86-43d9-a023-a864c1e614d9 | 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | 4085f844e7184e98813eab9b1ef2f350 |
| e79f1d04-9ad5-4ad0-a7ff-d2266077005a | 192.168.20.91       | None             | None                                 | 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | 4085f844e7184e98813eab9b1ef2f350 |
| fc213863-7048-4834-9a10-f27533ddcb47 | 192.168.20.34       | None             | None                                 | 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | 4085f844e7184e98813eab9b1ef2f350 |
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+

查看提供计算资源的信息

查看所有计算资源节点及状态

# 命令格式如下:
$ openstack hypervisor list
    [--matching <hostname>]
    [--long]

# 查看
$ openstack hypervisor list --long
+----+---------------------+-----------------+--------------+-------+------------+-------+----------------+-----------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP      | State | vCPUs Used | vCPUs | Memory MB Used | Memory MB |
+----+---------------------+-----------------+--------------+-------+------------+-------+----------------+-----------+
|  1 | compute01           | QEMU            | 192.168.20.3 | up    |          1 |     4 |           1024 |      4095 |
|  2 | compute02           | QEMU            | 192.168.20.4 | up    |          1 |     4 |           1024 |      4095 |
+----+---------------------+-----------------+--------------+-------+------------+-------+----------------+-----------+

查看指定计算节点详细信息

$ openstack hypervisor show compute02

查看集群资源总计信息

# 此命令是查看的你openstack集群中所有资源的统计信息
$ openstack hypervisor stats show
+----------------------+-------+
| Field                | Value |
+----------------------+-------+
| count                | 2     |
| current_workload     | 0     |
| disk_available_least | 94    |
| free_disk_gb         | 96    |
| free_ram_mb          | 6142  |
| local_gb             | 98    |
| local_gb_used        | 2     |
| memory_mb            | 8190  |
| memory_mb_used       | 2048  |
| running_vms          | 2     |
| vcpus                | 8     |
| vcpus_used           | 2     |
+----------------------+-------+

镜像篇

参考官方文档

创建或上传一个镜像

# 命令格式如下
openstack image create
    [--id <id>]
    [--store <store>]
    [--container-format <container-format>]
    [--disk-format <disk-format>]
    [--size <size>]
    [--min-disk <disk-gb>]
    [--min-ram <ram-mb>]
    [--location <image-url>]
    [--copy-from <image-url>]
    [--file <file> | --volume <volume>]
    [--force]
    [--checksum <checksum>]
    [--protected | --unprotected]
    [--public | --private | --community | --shared]
    [--property <key=value> [...] ]
    [--tag <tag> [...] ]
    [--project <project>]
    [--project-domain <project-domain>]
    <image-name>

# --disk-format:模板文件格式。支持的选项包括:ami,ari,aki,vhd,vmdk,raw,qcow2,vhdx,vdi,iso和ploop。默认格式为:raw
# --location:从现有URL下载模板
# --file:从本地文件上传模板
# --volume:从卷创建模板
# --force:如果正在使用卷,则强制创建模板,只对--volume选项有用
# --protected:防止模板被删除
# --unprotected:允许模板被删除(默认)
# ---public:模板是公共可用
# --private:公共无法访问模板
# --community:模板可供社区访问
# --shared:模板可以共享
# --tag:给模板设置个标签


# 上传镜像
$ openstack image create centos-7 \
  --file CentOS-7-x86_64-GenericCloud.qcow2 \
  --disk-format qcow2 --container-format bare \
  --public
 +------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | ef7f109590094e37c54aead73f3cdedc                     |
| container_format | bare                                                 |
| created_at       | 2021-03-13T13:33:01Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/bd859528-887b-4953-8c36-26b19d7c1a65/file |
| id               | bd859528-887b-4953-8c36-26b19d7c1a65                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | centos-7                                             |
| owner            | 4085f844e7184e98813eab9b1ef2f350                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 858783744                                            |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2021-03-13T13:33:05Z                                 |
| virtual_size     | None                                                 |
| visibility       | public                                               |
+------------------+------------------------------------------------------+

查看镜像列表

$ openstack image list --long
+--------------------------------------+----------+-------------+------------------+-----------+----------------------------------+--------+------------+-----------+----------------------------------+------+
| ID                                   | Name     | Disk Format | Container Format |      Size | Checksum                         | Status | Visibility | Protected | Project                          | Tags |
+--------------------------------------+----------+-------------+------------------+-----------+----------------------------------+--------+------------+-----------+----------------------------------+------+
| bd859528-887b-4953-8c36-26b19d7c1a65 | centos 7 | qcow2       | bare             | 858783744 | ef7f109590094e37c54aead73f3cdedc | active | public     | False     | 4085f844e7184e98813eab9b1ef2f350 |      |
| effd9c04-b22a-4a9e-8208-fa6f421aa048 | cirros   | qcow2       | bare             |  12716032 | 443b7623e27ecf03dc9e01ee93f67afe | active | public     | False     | 4085f844e7184e98813eab9b1ef2f350 |      |
+--------------------------------------+----------+-------------+------------------+-----------+----------------------------------+--------+------------+-----------+----------------------------------+------+

删除镜像

$ openstack image delete bd859528-887b-4953-8c36-26b19d7c1a65

虚机篇

创建一个虚机

1、查看flavor

$ openstack flavor list
+--------------------------------------+---------+------+------+-----------+-------+-----------+
| ID                                   | Name    |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+---------+------+------+-----------+-------+-----------+
| 00f72b48-035c-439f-b683-caf1eac67928 | centos7 | 2048 |   20 |         0 |     2 | True      |
| fb5448ae-f946-4c19-822b-12d1ec6a7fe2 | m1.tiny |  512 |    1 |         0 |     1 | True      |
+--------------------------------------+---------+------+------+-----------+-------+-----------+

2、查看image

$ openstack image list
+--------------------------------------+----------+--------+
| ID                                   | Name     | Status |
+--------------------------------------+----------+--------+
| bd859528-887b-4953-8c36-26b19d7c1a65 | centos-7 | active |
| effd9c04-b22a-4a9e-8208-fa6f421aa048 | cirros   | active |
+--------------------------------------+----------+--------++--------------------------------------+----------+--------+

3、查看网络ID

$ openstack network list --long
+--------------------------------------+------------+--------+----------------------------------+-------+--------+--------------------------------------+--------------+-------------+--------------------+------+
| ID                                   | Name       | Status | Project                          | State | Shared | Subnets                              | Network Type | Router Type | Availability Zones | Tags |
+--------------------------------------+------------+--------+----------------------------------+-------+--------+--------------------------------------+--------------+-------------+--------------------+------+
| 58280f28-f8bf-405d-8ae8-aa818c0eac13 | vpc-1      | ACTIVE | 4085f844e7184e98813eab9b1ef2f350 | UP    | False  | f94a7745-cefe-4e79-a1f2-85f5f84fef38 | vxlan        | Internal    | nova               |      |
| 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | lvjianzhao | ACTIVE | 4085f844e7184e98813eab9b1ef2f350 | UP    | True   | 0922f8c3-eecb-44b5-86c4-0628ebb3a8ea | flat         | External    | nova               |      |
+--------------------------------------+------------+--------+----------------------------------+-------+--------+--------------------------------------+--------------+-------------+--------------------+------+

4、查看安全组

$ openstack security group list
+--------------------------------------+---------+-------------+----------------------------------+
| ID                                   | Name    | Description | Project                          |
+--------------------------------------+---------+-------------+----------------------------------+
| 1913dc1c-c7ab-44b8-a181-052426b5809b | default | 缺省安全组  |                                  |
| 5004766b-690f-4690-9963-168185a030c2 | default | 缺省安全组  | 4085f844e7184e98813eab9b1ef2f350 |
| 5e7c457e-bddc-49f2-96dc-2c7cb3246d7d | default | 缺省安全组  | 9fa2d397ad714a0fb13772f3709dc74c |
+--------------------------------------+---------+-------------+----------------------------------+

# 上面给出了项目id,所以还需要确认是哪个项目的安全组
$ openstack project list    # 查看项目ID
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 291f8ffed66a452e838e48cb2eeecc19 | demo    |
| 4085f844e7184e98813eab9b1ef2f350 | admin   |
| 9fa2d397ad714a0fb13772f3709dc74c | service |
+----------------------------------+---------+

5、获取keypair

$ openstack keypair list
+-------+-------------------------------------------------+
| Name  | Fingerprint                                     |
+-------+-------------------------------------------------+
| mykey | a2:96:c9:cb:72:f8:2b:95:22:95:c1:4f:34:be:35:d4 |
+-------+-------------------------------------------------+

6、获取compute的主机名称和zone名称

$ openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| ID | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-scheduler   | controller | internal | enabled | up    | 2021-03-13T13:44:59.000000 |
|  2 | nova-consoleauth | controller | internal | enabled | up    | 2021-03-13T13:44:57.000000 |
|  3 | nova-conductor   | controller | internal | enabled | up    | 2021-03-13T13:45:01.000000 |
|  8 | nova-compute     | compute01  | test     | enabled | up    | 2021-03-13T13:45:01.000000 |
|  9 | nova-compute     | compute02  | nova     | enabled | up    | 2021-03-13T13:45:02.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+

7、创建虚机

当上面的信息都获取到后,我们就可以开始创建虚机了,如下:

# 下面是基于镜像创建虚机,虚机磁盘将保存在计算节点本地,后期迁移不方便

$ nova boot --flavor centos7 \    # 指定计算方案
--image centos-7 \   # 指定镜像名称
--nic net-id=58280f28-f8bf-405d-8ae8-aa818c0eac13 \   # 指定网络ID
--security-groups 5004766b-690f-4690-9963-168185a030c2 \   # 指定安全组ID
--availability-zone nova:compute01 \    # 指定可用域,同时可以指定计算节点
--key-name mykey \      # 指定注入的秘钥对
Centos-7-t2    # 虚机名称


# 下面是基于卷创建虚机,虚机磁盘将保存在cinder后端存储上,迁移方便

# 指定镜像创建卷centos-7-volume,size单位为GB
$ openstack volume create --size 15 --image bd859528-887b-4953-8c36-26b19d7c1a65 centos-7-volume
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2021-03-13T15:12:58.000000           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | 7cd0e240-cadc-44d8-bd5b-e5b4099bdd78 |
| migration_status    | None                                 |
| multiattach         | False                                |
| name                | centos-7-volume                      |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 15                                   |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | None                                 |
| updated_at          | None                                 |
| user_id             | c883cc6a37cc4a0db55698078657b4ea     |
+---------------------+--------------------------------------+


$ openstack volume list    # 查看卷ID
+--------------------------------------+-----------------+-----------+------+-------------------------------+
| ID                                   | Name            | Status    | Size | Attached to                   |
+--------------------------------------+-----------------+-----------+------+-------------------------------+
| 7cd0e240-cadc-44d8-bd5b-e5b4099bdd78 | centos-7-volume | available |   15 |                               |
| 42e497ae-d3cd-44e0-a3b4-7c68377f894c |                 | in-use    |    1 | Attached to test on /dev/vda  |
+--------------------------------------+-----------------+-----------+------+-------------------------------+


# 基于卷启动虚机
$ nova boot --flavor centos7 \
--boot-volume 7cd0e240-cadc-44d8-bd5b-e5b4099bdd78 \
--nic net-id=58280f28-f8bf-405d-8ae8-aa818c0eac13 \
--security-groups 5004766b-690f-4690-9963-168185a030c2 \
--availability-zone nova:compute01 \
--key-name mykey \
Centos-7-t3

查看虚机详细信息

$ openstack server list      # 也可以使用 nova list 指令
+--------------------------------------+-------------+--------+------------------------------------+----------+---------+
| ID                                   | Name        | Status | Networks                           | Image    | Flavor  |
+--------------------------------------+-------------+--------+------------------------------------+----------+---------+
| 36e74282-0a86-4bf1-8b03-18c071aa7f4f | Centos-7-t2 | ACTIVE | vpc-1=10.252.201.19, 192.168.20.89 | centos-7 | centos7 |
| 8e0962b1-5a64-4296-a13f-91a004b3e61b | test        | ACTIVE | vpc-1=10.252.201.4                 |          | m1.tiny |
+--------------------------------------+-------------+--------+------------------------------------+----------+---------+


# 查看虚机详细信息
$ openstack server show 36e74282-0a86-4bf1-8b03-18c071aa7f4f
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | test                                                     |
| OS-EXT-SRV-ATTR:host                | compute01                                                |
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute01                                                |
| OS-EXT-SRV-ATTR:instance_name       | instance-00000009                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-SRV-USG:launched_at              | 2021-03-13T14:26:21.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | vpc-1=10.252.201.19, 192.168.20.89                       |
| config_drive                        |                                                          |
| created                             | 2021-03-13T14:26:05Z                                     |
| flavor                              | centos7 (00f72b48-035c-439f-b683-caf1eac67928)           |
| hostId                              | 8f5ca7007a077b106dcb5d0695a2dc87bf1f72743770663b4c1cebfe |
| id                                  | 36e74282-0a86-4bf1-8b03-18c071aa7f4f                     |
| image                               | centos-7 (bd859528-887b-4953-8c36-26b19d7c1a65)          |
| key_name                            | mykey                                                    |
| name                                | Centos-7-t2                                              |
| progress                            | 0                                                        |
| project_id                          | 4085f844e7184e98813eab9b1ef2f350                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | ACTIVE                                                   |
| updated                             | 2021-03-13T14:26:22Z                                     |
| user_id                             | c883cc6a37cc4a0db55698078657b4ea                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

删除虚机

# 指定虚机的ID即可
$ openstack server delete 36e74282-0a86-4bf1-8b03-18c071aa7f4f

查询网络可用IP

列出网络的IP使用情况

$ openstack ip availability list
+--------------------------------------+--------------+-----------+----------+
| Network ID                           | Network Name | Total IPs | Used IPs |
+--------------------------------------+--------------+-----------+----------+
| 58280f28-f8bf-405d-8ae8-aa818c0eac13 | vpc-1        |       253 |        3 |
| 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | lvjianzhao   |       225 |        3 |
+--------------------------------------+--------------+-----------+----------+

查看可用IP的详细信息

$ openstack ip availability show 68bf0f61-9541-4b0e-bcd8-ae048f0537f7
+------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                  | Value                                                                                                                                           |
+------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| id                     | 68bf0f61-9541-4b0e-bcd8-ae048f0537f7                                                                                                            |
| name                   | None                                                                                                                                            |
| network_id             | 68bf0f61-9541-4b0e-bcd8-ae048f0537f7                                                                                                            |
| network_name           | lvjianzhao                                                                                                                                      |
| project_id             | 4085f844e7184e98813eab9b1ef2f350                                                                                                                |
| subnet_ip_availability | cidr='192.168.20.0/24', ip_version='4', subnet_id='0922f8c3-eecb-44b5-86c4-0628ebb3a8ea', subnet_name='provider', total_ips='225', used_ips='3' |
| total_ips              | 225                                                                                                                                             |
| used_ips               | 3                                                                                                                                               |
+------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+

查看已分配的IP

$ mysql -uroot -p123.com -e \
> 'SELECT * FROM neutron.ipamallocations WHERE ip_address LIKE "10.252.201.%"'
+----------------+-----------+--------------------------------------+
| ip_address     | status    | ipam_subnet_id                       |
+----------------+-----------+--------------------------------------+
| 10.252.201.1   | ALLOCATED | 34c6d08a-d8e1-48de-b8b3-c75e7f0d1cb1 |
| 10.252.201.160 | ALLOCATED | 34c6d08a-d8e1-48de-b8b3-c75e7f0d1cb1 |
| 10.252.201.2   | ALLOCATED | 34c6d08a-d8e1-48de-b8b3-c75e7f0d1cb1 |
| 10.252.201.4   | ALLOCATED | 34c6d08a-d8e1-48de-b8b3-c75e7f0d1cb1 |
+----------------+-----------+--------------------------------------+

给虚机分配固定IP

# 查询网络ID
$ openstack network list
+--------------------------------------+------------+--------------------------------------+
| ID                                   | Name       | Subnets                              |
+--------------------------------------+------------+--------------------------------------+
| 58280f28-f8bf-405d-8ae8-aa818c0eac13 | vpc-1      | f94a7745-cefe-4e79-a1f2-85f5f84fef38 |
| 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | lvjianzhao | 0922f8c3-eecb-44b5-86c4-0628ebb3a8ea |
+--------------------------------------+------------+--------------------------------------+

# 查询虚机ID
$ nova list
+--------------------------------------+------+--------+------------+-------------+------------------------------------+
| ID                                   | Name | Status | Task State | Power State | Networks                           |
+--------------------------------------+------+--------+------------+-------------+------------------------------------+
| 8e0962b1-5a64-4296-a13f-91a004b3e61b | test | ACTIVE | -          | Running     | vpc-1=10.252.201.4 |
+--------------------------------------+------+--------+------------+-------------+------------------------------------+



# 分配固定IP给虚机,其中 --fixed-ip-address 指定IP地址,为可选项,后面以此指定虚机ID、网络ID
$ openstack server add fixed ip --fixed-ip-address 10.252.201.160 \
8e0962b1-5a64-4296-a13f-91a004b3e61b 58280f28-f8bf-405d-8ae8-aa818c0eac13


# 确认IP已分配(自行到虚机里配置IP,以便生效)
$ nova list
+--------------------------------------+------+--------+------------+-------------+------------------------------------+
| ID                                   | Name | Status | Task State | Power State | Networks                           |
+--------------------------------------+------+--------+------------+-------------+------------------------------------+
| 8e0962b1-5a64-4296-a13f-91a004b3e61b | test | ACTIVE | -          | Running     | vpc-1=10.252.201.4, 10.252.201.160 |
+--------------------------------------+------+--------+------------+-------------+------------------------------------+

秘钥对篇

创建秘钥对

# 生成秘钥
$ ssh-keygen -t rsa -q -N ""

# 创建秘钥对
$ openstack keypair create \
> --public-key ~/.ssh/id_rsa.pub \
> mykey2
+-------------+-------------------------------------------------+
| Field       | Value                                           |
+-------------+-------------------------------------------------+
| fingerprint | f2:4f:98:1a:72:9b:54:a1:ef:9e:a0:02:8f:30:7a:73 |
| name        | mykey2                                          |
| user_id     | c883cc6a37cc4a0db55698078657b4ea                |
+-------------+-------------------------------------------------+

创建秘钥对后,即可在创建虚机时,通过--key-name指定秘钥对名称mykey2,即可实现免密登录到虚机。

查看秘钥对列表

$ openstack keypair list
+--------+-------------------------------------------------+
| Name   | Fingerprint                                     |
+--------+-------------------------------------------------+
| mykey  | a2:96:c9:cb:72:f8:2b:95:22:95:c1:4f:34:be:35:d4 |
| mykey2 | f2:4f:98:1a:72:9b:54:a1:ef:9e:a0:02:8f:30:7a:73 |
+--------+-------------------------------------------------+

查看创建的秘钥对详细信息

# 查看秘钥对创建时间等信息
$ openstack keypair show mykey2
+-------------+-------------------------------------------------+
| Field       | Value                                           |
+-------------+-------------------------------------------------+
| created_at  | 2021-03-14T00:36:15.000000                      |
| deleted     | False                                           |
| deleted_at  | None                                            |
| fingerprint | f2:4f:98:1a:72:9b:54:a1:ef:9e:a0:02:8f:30:7a:73 |
| id          | 2                                               |
| name        | mykey2                                          |
| updated_at  | None                                            |
| user_id     | c883cc6a37cc4a0db55698078657b4ea                |
+-------------+-------------------------------------------------+


# 查看秘钥对中的公钥内容
$ openstack keypair show --public-key mykey2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfxGTiCqupoHOyOidRJYDrI5JtzP8hLOLv4M0+2MUDCK7X9EgTf8NXaapyrZ8M7U5kMXcij3Vf48Hk2uLJheJldx7XAZki6WUDuBGhv/vd/XL10mvJaoRXoeWskkVHdIOQaICFg4F2Q50fdixCle4OP4PSOHBhrcYTegzIikZlSjlvBo/wpM8Zqp52mJtTPtlwi0ZHGop0SUeILknXCnpR47i1irCrmJ7yBgtjThMGYd/avobqLrA8NsM6X46j7rCGegOPd5MKyGfTj20IiwFL46HMyj0AVoz0S3VctiE8DmOObtX/ob9nl9huniMBuT4XuUCjz+MOtqk9GQ2Ajh0J root@compute01

资源配额篇

# 命令格式:
openstack limits show
    --absolute | --rate
    [--reserved]
    [--project <project>]
    [--domain <domain>]

# --absolute:显示绝对限制
# --rate:显示速率限制
# --reserved:包括预定数(仅适用于 --absolute)
# --project:显示指定项目
# --domain:项目所属的域(仅适用于 --absolute)


# 查看admin项目限制及目前使用量
$ openstack limits show --absolute --project admin
+--------------------------+-------+
| Name                     | Value |
+--------------------------+-------+
| maxServerMeta            |   128 |
| maxTotalInstances        |    10 |
| maxPersonality           |     5 |
| totalServerGroupsUsed    |     0 |
| maxImageMeta             |   128 |
| maxPersonalitySize       | 10240 |
| maxTotalRAMSize          | 51200 |
| maxServerGroups          |    10 |
| maxSecurityGroupRules    |    20 |
| maxTotalKeypairs         |   100 |
| totalCoresUsed           |     1 |
| totalRAMUsed             |   512 |
| maxSecurityGroups        |    10 |
| totalFloatingIpsUsed     |     0 |
| totalInstancesUsed       |     1 |
| maxServerGroupMembers    |    10 |
| maxTotalFloatingIps      |    10 |
| totalSecurityGroupsUsed  |     1 |
| maxTotalCores            |    20 |
| totalSnapshotsUsed       |     2 |
| maxTotalBackups          |    10 |
| maxTotalVolumeGigabytes  |  1000 |
| maxTotalSnapshots        |    10 |
| maxTotalBackupGigabytes  |  1000 |
| totalBackupGigabytesUsed |     0 |
| maxTotalVolumes          |    10 |
| totalVolumesUsed         |     2 |
| totalBackupsUsed         |     0 |
| totalGigabytesUsed       |     4 |
+--------------------------+-------+

网络篇

创建网络

创建的网络是2层网络。网络有两种类型,项目网络和提供商网络。项目网络是完全隔离的,不会与其他项目共享。提供商网络映射到数据中心中的现有物理网络,并为服务器和其他资源提供外部网络访问。只有OpenStack管理员才能创建提供商网络。可以通过路由器连接网络。

# 创建网络的命令格式如下:
openstack network create
    [--project <project> [--project-domain <project-domain>]]
    [--enable | --disable]
    [--share | --no-share]
    [--description <description>]
    [--mtu <mtu>]
    [--availability-zone-hint <availability-zone>]
    [--enable-port-security | --disable-port-security]
    [--external [--default | --no-default] | --internal]
    [--provider-network-type <provider-network-type>]
    [--provider-physical-network <provider-physical-network>]
    [--provider-segment <provider-segment>]
    [--qos-policy <qos-policy>]
    [--transparent-vlan | --no-transparent-vlan]
    [--tag <tag> | --no-tag]
    <name>

# --project:指定网络所属项目
# --project-domain:如果项目名称存在冲突,可以使用此选项指定项目所在域
# --enable:启用网络(默认)
# --disable:禁用网络
# --share:在项目之间共享网络
# --no-share:不要在项目之间共享网络(默认)
# --description:设置网络描述
# --mtu:设置网络MTU
# --availability-zone-hint:在其中创建此网络的可用区
# --enable-port-security:默认情况下,为此网络上创建的端口启用端口安全性(默认)
# --disable-port-security:默认情况下,禁用此网络上创建的端口的端口安全性
# --external:将此网络设置为外部网络(需要外部网络扩展)
# --internal:将此网络设置为内部网络(默认)
# --default:指定是否将此网络用作默认的外部网络
# --no-default:不要将网络用作默认的外部网络(默认)
# --provider-network-type:实现虚拟网络的物理机制,默认为vxlan,支持的选项包括:flat,geneve,gre,local,vlan,vxlan
# --provider-physical-network:在其上实现虚拟网络的物理网络的名称,和配置文件/etc/neutron/plugins/ml2/ml2_conf.ini中的flat_networks值对应
# --provider-segment:VLAN网络的VLAN ID或GENEVE / GRE / VXLAN网络的隧道ID
# --qos-policy:附加到此网络的Qos策略(名称或ID)
# --transparent-vlan:使网络vlan透明
# --no-transparent-vlan:不要使网络vlan透明
# --tag:要添加到网络的标签
# --no-tag:没有与网络关联的标签


# 给demo项目创建demo-network网络
$ openstack network create \
--project demo \
--description "用于demo项目使用的二层网络" \
--internal demo-network

修改网络

# 只需将create改为set即可,其他选项基本同创建网络一致
openstack network set
    [--name <name>]
    [--enable | --disable]
    [--share | --no-share]
    [--description <description>]
    [--mtu <mtu>]
    [--enable-port-security | --disable-port-security]
    [--external [--default | --no-default] | --internal]
    [--provider-network-type <provider-network-type>]
    [--provider-physical-network <provider-physical-network>]
    [--provider-segment <provider-segment>]
    [--qos-policy <qos-policy> | --no-qos-policy]
    [--tag <tag>] [--no-tag]
    <network>





# 查看网络列表
$ openstack network  list --long
+--------------------------------------+--------------+--------+----------------------------------+-------+--------+----------------------------------------------------------------------------+--------------+-------------+--------------------+------+
| ID                                   | Name         | Status | Project                          | State | Shared | Subnets                                                                    | Network Type | Router Type | Availability Zones | Tags |
+--------------------------------------+--------------+--------+----------------------------------+-------+--------+----------------------------------------------------------------------------+--------------+-------------+--------------------+------+
| 3f34b862-07e6-420b-ae5f-c924d01666a8 | demo-network | ACTIVE | 291f8ffed66a452e838e48cb2eeecc19 | UP    | False  | 89034afe-aa1d-477a-83e5-62083900e6b3 | vxlan        | Internal    | nova               |      |
| 58280f28-f8bf-405d-8ae8-aa818c0eac13 | vpc-1        | ACTIVE | 4085f844e7184e98813eab9b1ef2f350 | UP    | False  | f94a7745-cefe-4e79-a1f2-85f5f84fef38                                       | vxlan        | Internal    | nova               |      |
| 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | lvjianzhao   | ACTIVE | 4085f844e7184e98813eab9b1ef2f350 | UP    | True   | 0922f8c3-eecb-44b5-86c4-0628ebb3a8ea                                       | flat         | External    | nova               |      |
+--------------------------------------+--------------+--------+----------------------------------+-------+--------+----------------------------------------------------------------------------+--------------+-------------+--------------------+------+
[


# 将一个内部网络设置为外部网络
$ openstack network  set --external 3f34b862-07e6-420b-ae5f-c924d01666a8

查看网络

# 查看网络列表
$ openstack network list
+--------------------------------------+--------------+--------------------------------------+
| ID                                   | Name         | Subnets                              |
+--------------------------------------+--------------+--------------------------------------+
| 3f34b862-07e6-420b-ae5f-c924d01666a8 | demo-network | 89034afe-aa1d-477a-83e5-62083900e6b3 |
| 58280f28-f8bf-405d-8ae8-aa818c0eac13 | vpc-1        | f94a7745-cefe-4e79-a1f2-85f5f84fef38 |
| 68bf0f61-9541-4b0e-bcd8-ae048f0537f7 | lvjianzhao   | 0922f8c3-eecb-44b5-86c4-0628ebb3a8ea |
+--------------------------------------+--------------+--------------------------------------+


# 查看网络详细信息
$ openstack network show 3f34b862-07e6-420b-ae5f-c924d01666a8
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        | nova                                 |
| created_at                | 2021-03-14T01:59:35Z                 |
| description               | 用于demo项目使用的二层网络           |
| dns_domain                | None                                 |
| id                        | 3f34b862-07e6-420b-ae5f-c924d01666a8 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| is_default                | None                                 |
| is_vlan_transparent       | None                                 |
| mtu                       | 1450                                 |
| name                      | demo-network                         |
| port_security_enabled     | True                                 |
| project_id                | 291f8ffed66a452e838e48cb2eeecc19     |
| provider:network_type     | vxlan                                |
| provider:physical_network | None                                 |
| provider:segmentation_id  | 99                                   |
| qos_policy_id             | None                                 |
| revision_number           | 5                                    |
| router:external           | Internal                             |
| segments                  | None                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   | 89034afe-aa1d-477a-83e5-62083900e6b3 |
| tags                      |                                      |
| updated_at                | 2021-03-14T02:26:47Z                 |
+---------------------------+--------------------------------------+

项目管理篇

创建项目

# 命令格式如下
openstack project create
    [--domain <domain>]
    [--parent <project>]
    [--description <description>]
    [--enable | --disable]
    [--property <key=value>]
    [--or-show]
    <name>

# --domain:指定项目所属域
# --parent:指定父项目
# --description:项目描述信息
# --enable:启用项目(默认)
# --disable:禁用项目
# --or-show:如果创建的项目已存在,请返回现有项目的详细信息,并且不要输出创建失败的信息



# 创建项目 demo-2
$ openstack project create \
--domain default \
--description "用于测试人员使用" \
--or-show demo-2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | 用于测试人员使用                 |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 457f33cd732b4f17936d45302f071d87 |
| is_domain   | False                            |
| name        | demo-2                           |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

查看项目信息

# 命令格式如下
openstack project list
    [--domain <domain>]
    [--user <user>]
    [--my-projects]
    [--long]
    [--sort <key>[:<direction>,<key>:<direction>,..]]



# 查看项目列表
$ openstack project list --long
+----------------------------------+---------+-----------+-----------------------------------------------+---------+
| ID                               | Name    | Domain ID | Description                                   | Enabled |
+----------------------------------+---------+-----------+-----------------------------------------------+---------+
| 291f8ffed66a452e838e48cb2eeecc19 | demo    | default   | Demo Project                                  | True    |
| 4085f844e7184e98813eab9b1ef2f350 | admin   | default   | Bootstrap project for initializing the cloud. | True    |
| 457f33cd732b4f17936d45302f071d87 | demo-2  | default   | 用于测试人员使用                              | True    |
| 9fa2d397ad714a0fb13772f3709dc74c | service | default   | Service Project                               | True    |
+----------------------------------+---------+-----------+-----------------------------------------------+---------+



# 查看指定项目的详细信息
$ openstack project show 457f33cd732b4f17936d45302f071d87
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | 用于测试人员使用                 |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 457f33cd732b4f17936d45302f071d87 |
| is_domain   | False                            |
| name        | demo-2                           |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

修改项目信息

# 命令格式如下:
openstack project set
    [--name <name>]
    [--domain <domain>]
    [--description <description>]
    [--enable | --disable]
    [--property <key=value>]
    <project>

清除项目内所有资源

# 命令格式如下:
openstack project purge
    [--dry-run]
    [--keep-project]
    [--auth-project | --project <project>]
    [--project-domain <project-domain>]

# --dry-run:试运行指令
# --keep-project:清理项目内资源,但不删除项目
# --auth-project:删除用于认证的项目资源
# --project:指定要清理的项目
# --project-domain:项目所属域,如果项目名称之间存在冲突,则可以使用此方法。



# 查看项目列表
$ openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 291f8ffed66a452e838e48cb2eeecc19 | demo    |
| 4085f844e7184e98813eab9b1ef2f350 | admin   |
| 457f33cd732b4f17936d45302f071d87 | demo-2  |
| 9fa2d397ad714a0fb13772f3709dc74c | service |
+----------------------------------+---------+


# 试运行指令,只会列出将要删除的资源对象
$ openstack project purge --dry-run \
--project 457f33cd732b4f17936d45302f071d87 \
--project-domain default
Deleting server : e3bcff53-7328-4575-bb96-620892291e24
Deleting volume : 8b0c5c39-f415-47f8-ab1a-731e80362655
Deleting project: 457f33cd732b4f17936d45302f071d87


# 删除项目中的所有资源
$ openstack project purge \
--project 457f33cd732b4f17936d45302f071d87 \
--project-domain default

配额篇

参考:官方文档

查看项目默认配额

# 命令格式如下:
openstack quota show
    [--default]
    [<project>]
# --default:查看项目默认配额

$ openstack quota show admin --default
+----------------------+----------------------------------+
| Field                | Value                            |
+----------------------+----------------------------------+
| backup-gigabytes     | 1000                             |
| backups              | 10                               |
| cores                | 20                               |
| fixed-ips            | -1                               |
| floating-ips         | 50                               |
| gigabytes            | 1000                             |
| groups               | 10                               |
| health_monitors      | None                             |
| injected-file-size   | 10240                            |
| injected-files       | 5                                |
| injected-path-size   | 255                              |
| instances            | 10                               |
| key-pairs            | 100                              |
| l7_policies          | None                             |
| listeners            | None                             |
| load_balancers       | None                             |
| location             | None                             |
| name                 | None                             |
| networks             | 100                              |
| per-volume-gigabytes | -1                               |
| pools                | None                             |
| ports                | 500                              |
| project              | 4085f844e7184e98813eab9b1ef2f350 |
| project_name         | admin                            |
| properties           | 128                              |
| ram                  | 51200                            |
| rbac_policies        | 10                               |
| routers              | 10                               |
| secgroup-rules       | 100                              |
| secgroups            | 10                               |
| server-group-members | 10                               |
| server-groups        | 10                               |
| snapshots            | 10                               |
| subnet_pools         | -1                               |
| subnets              | 100                              |
| volumes              | 10                               |
+----------------------+----------------------------------+

设置项目配额

# 命令格式如下
openstack quota set
    # Compute settings
    [--cores <num-cores>]
    [--fixed-ips <num-fixed-ips>]
    [--floating-ips <num-floating-ips>]
    [--injected-file-size <injected-file-bytes>]
    [--injected-files <num-injected-files>]
    [--instances <num-instances>]
    [--key-pairs <num-key-pairs>]
    [--properties <num-properties>]
    [--ram <ram-mb>]
    [--server-groups <num-server-groups>]
    [--server-group-members <num-server-group-members>]

    # Block Storage settings
    [--backups <new-backups>]
    [--backup-gigabytes <new-backup-gigabytes>]
    [--gigabytes <new-gigabytes>]
    [--per-volume-gigabytes <new-per-volume-gigabytes>]
    [--snapshots <new-snapshots>]
    [--volumes <new-volumes>]
    [--volume-type <volume-type>]

    # Network settings
    [--floating-ips <num-floatingips>]
    [--secgroup-rules <num-security-group-rules>]
    [--secgroups <num-security-groups>]
    [--networks <num-networks>]
    [--subnets <num-subnets>]
    [--ports <num-ports>]
    [--routers <num-routers>]
    [--rbac-policies <num-rbac-policies>]
    [--vips <num-vips>]
    [--subnetpools <num-subnetpools>]
    [--members <num-members>]
    [--health-monitors <num-health-monitors>]

    <project>

# 设置admin项目的配额:20个实例、40个vcpus、100G内存、100个浮动IP、20个安全组、20个卷、2000GB卷存储空间
$ openstack quota set \
--instances 20 \
--cores 40 \
--ram 102400 \
--floating-ips 100 \
--secgroups 20 \
--volumes 20 \
--gigabytes 20000 \
admin

查看项目中非默认的配额

# 命令格式如下:
$ openstack quota list
    --compute | --network | --volume

# 查看计算资源配额
$ openstack quota list --compute
+----------------------------------+-------+-----------+----------------+-----------------------------+--------------------------+-----------+-----------+----------------+--------+---------------+----------------------+
| Project ID                       | Cores | Fixed IPs | Injected Files | Injected File Content Bytes | Injected File Path Bytes | Instances | Key Pairs | Metadata Items |    Ram | Server Groups | Server Group Members |
+----------------------------------+-------+-----------+----------------+-----------------------------+--------------------------+-----------+-----------+----------------+--------+---------------+----------------------+
| 4085f844e7184e98813eab9b1ef2f350 |    40 |        -1 |              5 |                       10240 |                      255 |        20 |       100 |            128 | 102400 |            10 |                   10 |
+----------------------------------+-------+-----------+----------------+-----------------------------+--------------------------+-----------+-----------+----------------+--------+---------------+----------------------+