openstack.cloud.server 模块 – 从 OpenStack 创建/删除计算实例
注意
此模块是 openstack.cloud 集合 (版本 2.3.0) 的一部分。
如果您正在使用 ansible
包,您可能已经安装了这个集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install openstack.cloud
。您需要进一步的要求才能使用此模块,请参阅 要求 以了解详细信息。
要在 Playbook 中使用它,请指定:openstack.cloud.server
。
概要
从 OpenStack 创建或删除计算实例。
要求
在执行此模块的主机上需要以下要求。
python >= 3.6
openstacksdk >= 1.0.0
参数
参数 |
注释 |
---|---|
套接字层在 API 调用超时之前应等待多长时间。如果省略此项,则不会将任何内容传递到 requests 库。 |
|
包含云的身份验证插件策略所需的身份验证信息的字典。对于默认的password插件,这将包含 auth_url、username、password、project_name 和有关域的任何信息(例如,如果云支持它们,则为 user_domain_name 或 project_domain_name)。对于其他插件,此参数将需要包含该身份验证插件所需的任何参数。如果提供了命名的云或存在 OpenStack OS_* 环境变量,则不需要此参数。 |
|
要使用的身份验证插件的名称。如果云使用密码身份验证以外的其他身份验证,则应在此处指示插件的名称,并且应相应地更新 auth 参数的内容。 |
|
确保实例具有公有 IP,无论云如何操作。 例如,云可以为服务器添加浮动 IP 或将服务器附加到公共网络。 在服务器创建期间,需要将 wait 设置为 浮动 IP 支持在此模块中不稳定,请谨慎使用。 选项 auto_ip、floating_ip_pools 和 floating_ips 以不明显的方式和不可记录的深度进行交互。为了显式和安全地附加和分离浮动 IP 地址,请改用模块 openstack.cloud.resource。 选项
|
|
在其中创建服务器的可用区。 此服务器属性无法更新。 |
|
实例是否应从基于给定映像创建的持久卷启动。与 boot_volume 互斥。 此服务器属性无法更新。 选项
|
|
要用作启动卷的卷名称或 ID。意味着 boot_from_volume。与 image 和 boot_from_volume 互斥。 此服务器属性无法更新。 |
|
CA 证书包的路径,可以用作验证 SSL API 请求的一部分。 |
|
用作 SSL 事务一部分的客户端证书的路径。 |
|
用作 SSL 事务一部分的客户端密钥的路径。 |
|
要操作的命名云或云配置。如果 cloud 是一个字符串,它引用在 OpenStack clouds.yaml 文件中定义的命名云配置。提供 auth 和 auth_type 的默认值。如果提供了 auth 或存在 OpenStack OS_* 环境变量,则不需要此参数。如果 cloud 是一个字典,则它包含一个完整的云配置,就像在 clouds.yaml 的一个部分中一样。 |
|
是否在启用配置驱动器的情况下启动服务器。 此服务器属性无法更新。 选项
|
|
当 state 为 浮动 IP 支持在此模块中不稳定,请谨慎使用。 选项
|
|
服务器的描述。 |
|
必须在其中创建新实例的 flavor 的名称或 ID。 当 state=present 时,必须定义 flavor 和 flavor_ram 中的一个。 此服务器属性无法更新。 |
|
用于过滤 flavor 名称的文本,例如 Rackspace,其中有多个具有相同 ram 计数的 flavor。flavor_include 是一个正匹配过滤器 - 它必须存在于 flavor 名称中。 此服务器属性无法更新。 |
|
必须在其中创建新实例的 flavor 必须具有的最小 ram 量(以 MB 为单位)。 当 state=present 时,必须定义 flavor 和 flavor_ram 中的一个。 此服务器属性无法更新。 |
|
从中选择浮动 IP 的浮动 IP 池的名称。 在服务器创建期间,需要将 wait 设置为 浮动 IP 支持在此模块中不稳定,请谨慎使用。 选项 auto_ip、floating_ip_pools 和 floating_ips 以不明显的方式和不可记录的深度进行交互。为了显式和安全地附加和分离浮动 IP 地址,请改用模块 openstack.cloud.resource。 |
|
要分配给此节点的预先存在的有效浮动 IP 的列表。 在服务器创建期间,需要将 wait 设置为 浮动 IP 支持在此模块中不稳定,请谨慎使用。 选项 auto_ip、floating_ip_pools 和 floating_ips 以不明显的方式和不可记录的深度进行交互。为了显式和安全地附加和分离浮动 IP 地址,请改用模块 openstack.cloud.resource。 |
|
要启动的基本映像的名称或 ID。 当 boot_from_volume=true 时是必需的。 此服务器属性无法更新。 |
|
用于过滤映像名称的文本,例如 HP,其中有多个映像名称与公共标识部分匹配。image_exclude 是一个负匹配过滤器 - 它是可能不存在于映像名称中的文本。 此服务器属性无法更新。 默认值: |
|
要从服务目录中获取的端点 URL 类型。 选项
|
|
创建实例时要使用的密钥对名称。 此服务器属性无法更新。 |
|
应作为元数据提供给新实例的键值对列表,或包含键值对列表的字符串。例如:metadata: “key1=value1,key2=value2” |
|
必须赋予实例的名称。如果状态 (state) 为不存在 (absent),也可以指定实例的 ID 而不是其名称。 此服务器属性无法更新。 |
|
要将此实例附加到的网络的名称或 ID。nics 参数的简化版本,只能提供 network 或 nics 中的一个。 此服务器属性无法更新。 |
|
实例接口应附加到的网络列表。可以使用网络 ID/网络名称/端口 ID 或端口名称引用网络。 此外,它还接受包含 (网络/端口)-(ID/名称) 列表的字符串。例如: 只能提供 network 或 nics 中的一个。 此服务器属性无法更新。 默认值: |
|
要通过元数据传递的特定端口的标签 (tag)。例如: |
|
区域的名称。 |
|
当 auto_ip 为 true 且此选项为 true 时,auto_ip 代码会在创建新浮动 IP 之前尝试重用项目中未分配的浮动 IP。需要注意的是,无法安全地同时执行此操作,因此如果您的用例涉及并发服务器创建,则强烈建议将其设置为 false,并在使用 delete_ips 删除服务器时删除与服务器关联的浮动 IP。 浮动 IP 支持在此模块中不稳定,请谨慎使用。 此服务器属性无法更新。 选项
|
|
用于自定义用途的调度器的任意键/值对。 此服务器属性无法更新。 |
|
OpenStackSDK 的日志级别 选项
|
|
OpenStackSDK 日志文件的路径。如果为空,则不写入日志 |
|
实例应添加到的安全组的名称或 ID。 在服务器创建时,如果省略 security_groups,则 API 会在默认安全组中创建服务器。 请求的安全组不会应用于预先存在的端口。 默认值: |
|
资源应为 选项
|
|
如果 此服务器属性无法更新。 选项
|
|
模块应等待实例进入活动状态的时间。 默认值: |
|
可用于实例的不透明数据块。 此服务器属性无法更新。 |
|
是否应验证 SSL API 请求。 在 Ansible 2.3 之前,此值默认为 选项
|
|
如果从基于镜像的卷启动,则要创建的卷的大小 (GB)。 此服务器属性无法更新。 |
|
要附加到实例的预先存在的卷名称或 ID 的列表 此服务器属性无法更新。 默认值: |
|
模块是否应等待创建实例。 选项
|
注释
注意
可以使用标准的 OpenStack 环境变量,例如
OS_USERNAME
,而不是提供显式值。身份验证信息由 openstacksdk 驱动,这意味着值可以来自 /etc/ansible/openstack.yaml、/etc/openstack/clouds.yaml 或 ~/.config/openstack/clouds.yaml 中的 yaml 配置文件,然后来自标准环境变量,最后来自 plays 中的显式参数。可以在 https://docs.openstack.org/openstacksdk/ 中找到更多信息
示例
- name: Create a new instance with metadata and attaches it to a network
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
nics:
- net-id: 34605f38-e52a-25d2-b6ec-754a13ffb723
- net-name: another_network
meta:
hostname: test1
group: uge_master
# Create a new instance in HP Cloud AE1 region availability zone az2 and
# automatically assigns a floating IP
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: username
password: Equality7-2521
project_name: username-project1
name: vm1
region_name: region-b.geo-1
availability_zone: az2
image: 9302692b-b787-4b52-a3a6-daebb79cb498
key_name: test
timeout: 200
flavor: 101
security_groups:
- default
auto_ip: true
# Create a new instance in named cloud mordred availability zone az2
# and assigns a pre-known floating IP
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
state: present
cloud: mordred
name: vm1
availability_zone: az2
image: 9302692b-b787-4b52-a3a6-daebb79cb498
key_name: test
timeout: 200
flavor: 101
floating_ips:
- 12.34.56.79
# Create a new instance with 4G of RAM on Ubuntu Trusty, ignoring
# deprecated images
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
cloud: mordred
region_name: region-b.geo-1
image: Ubuntu Server 14.04
image_exclude: deprecated
flavor_ram: 4096
# Create a new instance with 4G of RAM on Ubuntu Trusty on a Performance node
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
cloud: rax-dfw
state: present
image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
flavor_ram: 4096
flavor_include: Performance
# Creates a new instance and attaches to multiple network
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance with a string
openstack.cloud.server:
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
nics: >-
net-id=4cb08b20-62fe-11e5-9d70-feff819cdc9f,
net-id=542f0430-62fe-11e5-9d70-feff819cdc9f
- name: Creates a new instance with metadata and attaches it to a network
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
nics:
- net-id: 34605f38-e52a-25d2-b6ec-754a13ffb723
- net-name: another_network
meta: "hostname=test1,group=uge_master"
- name: Creates a new instance and attaches to a specific network
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
timeout: 200
flavor: 4
network: another_network
# Create a new instance with 4G of RAM on a 75G Ubuntu Trusty volume
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
cloud: mordred
region_name: ams01
image: Ubuntu Server 14.04
flavor_ram: 4096
boot_from_volume: True
volume_size: 75
# Creates a new instance with 2 volumes attached
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
cloud: mordred
region_name: ams01
image: Ubuntu Server 14.04
flavor_ram: 4096
volumes:
- photos
- music
# Creates a new instance with provisioning userdata using Cloud-Init
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
image: "Ubuntu Server 14.04"
flavor: "P-1"
network: "Production"
userdata: |
#cloud-config
chpasswd:
list: |
ubuntu:{{ default_password }}
expire: False
packages:
- ansible
package_upgrade: true
# Creates a new instance with provisioning userdata using Bash Scripts
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
name: vm1
state: present
image: "Ubuntu Server 22.04"
flavor: "P-1"
network: "Production"
userdata: |
#!/bin/sh
apt update
apt -y full-upgrade
# Create a new instance with server group for (anti-)affinity
# server group ID is returned from openstack.cloud.server_group module.
- name: launch a compute instance
hosts: localhost
tasks:
- name: launch an instance
openstack.cloud.server:
state: present
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
flavor: 4
scheduler_hints:
group: f5c8c61a-9230-400a-8ed2-3b023c190a7f
# Create an instance with "tags" for the nic
- name: Create instance with nics "tags"
openstack.cloud.server:
state: present
auth:
auth_url: https://identity.example.com
username: admin
password: admin
project_name: admin
name: vm1
image: 4f905f38-e52a-43d2-b6ec-754a13ffb529
key_name: ansible_key
flavor: 4
nics:
- port-name: net1_port1
tag: test_tag
- net-name: another_network
# Deletes an instance via its ID
- name: remove an instance
hosts: localhost
tasks:
- name: remove an instance
openstack.cloud.server:
name: abcdef01-2345-6789-0abc-def0123456789
state: absent
返回值
常见返回值在此处记录 此处,以下是此模块独有的字段
键 (Key) |
描述 |
---|---|
描述服务器的字典。 返回值: 当 state 为 ‘present’ 时成功返回。 |
|
应该用于访问此服务器的 IPv4 地址。可能会由提供商自动设置。 返回值: 成功 |
|
应该用于访问此服务器的 IPv6 地址。可能会由提供商自动设置。 返回值: 成功 |
|
可通过此服务器访问的地址字典。该字典包含诸如 ‘private’ 和 ‘public’ 之类的键,每个键都包含该类型地址的字典列表。地址包含在带有键 ‘addr’ 和 ‘version’ 的字典中,该值是 4 或 6,具体取决于 IP 地址的协议。 返回值: 成功 |
|
首次创建服务器时,它会提供管理员密码。 返回值: 成功 |
|
已附加的卷的列表。列表中的每个项目都至少包含一个 ‘id’ 键以标识特定卷。 返回值: 成功 |
|
此服务器所属的可用区名称。 返回值: 成功 |
|
启用对实例的块设备映射的精细控制。这通常用于从卷启动服务器。 返回值: 成功 |
|
此实例正在其上运行的计算主机的名称。仅在管理用户的响应中显示。 返回值: 成功 |
|
指示是否为此服务器使用了配置驱动器。 返回值: 成功 |
|
服务器创建时的时间戳。 返回值: 成功 |
|
服务器的描述。在微版本 2.19 之前,此值设置为服务器名称。 返回值: 成功 |
|
磁盘配置。AUTO 或 MANUAL。 返回值: 成功 |
|
从服务器返回的风味属性。 返回值: 成功 |
|
风味引用,作为 ID 或完整 URL,用于此服务器的风味。 返回值: 成功 |
|
指示配置驱动器是否启用元数据注入。并非所有云提供商都启用此功能。 返回值: 成功 |
|
表示此服务器主机的 ID。 返回值: 成功 |
|
主机状态。 返回值: 成功 |
|
实例启动时在实例上设置的主机名。默认情况下,它仅在管理用户的响应中显示。 返回值: 成功 |
|
虚拟机管理程序主机名。仅在管理用户的响应中显示。 返回值: 成功 |
|
服务器的 ID。 返回值: 成功 |
|
从服务器返回的镜像属性。 返回值: 成功 |
|
镜像引用,作为 ID 或完整 URL,用于此服务器的镜像。 返回值: 成功 |
|
实例名称。计算 API 从实例名称模板生成实例名称。仅在管理用户的响应中显示。 返回值: 成功 |
|
服务器的锁定状态 返回值: 成功 |
|
使用 AMI 时内核镜像的 UUID。如果不是,则为 null。默认情况下,它仅在管理用户的响应中显示。 返回值: 成功 |
|
关联的密钥对的名称。 返回值: 成功 |
|
通过多个创建启动服务器时,这是服务器启动的顺序。默认情况下,它仅在管理用户的响应中显示。 返回值: 成功 |
|
服务器启动时的时间戳。 返回值: 成功 |
|
包含与此服务器相关的链接的字典列表。 返回值: 成功 |
|
要创建的最大服务器数。 返回值: 成功 |
|
标签字符串列表。 返回值: 成功 |
|
要创建的最小服务器数。 返回值: 成功 |
|
服务器的名称 返回值: 成功 |
|
网络对象。当为租户定义多个网络时,为必需参数。当您未指定网络参数时,服务器会附加到为当前租户创建的唯一网络。 返回值: 成功 |
|
此服务器的电源状态。 返回值: 成功 |
|
在构建服务器时,此值表示完成百分比。完成后,它将为 100。 返回值: 成功 |
|
与此服务器关联的项目 ID。 返回值: 成功 |
|
使用 AMI 时 ramdisk 镜像的 UUID。如果不是,则为 null。默认情况下,它仅在管理用户的响应中显示。 返回值: 成功 |
|
服务器的预留 ID。此 ID 对于跟踪通过多个创建创建的服务器组很有用,这些服务器组都将具有相同的 reservation_id。默认情况下,它仅在管理用户的响应中显示。 返回值: 成功 |
|
实例的根设备名称。默认情况下,它仅在管理用户的响应中显示。 返回值: 成功 |
|
要发送到调度程序的数据字典。 返回值: 成功 |
|
适用安全组的列表。每个组都包含以下键:描述、名称、ID 和规则。 返回值: 成功 |
|
服务器所属的服务器组的 UUID。目前,这最多可以包含一个条目。 返回值: 成功 |
|
此服务器所处的状态。有效值包括 ‘ACTIVE’、‘BUILDING’、‘DELETED’、‘ERROR’、‘HARD_REBOOT’、‘PASSWORD’、‘PAUSED’、‘REBOOT’、‘REBUILD’、‘RESCUED’、‘RESIZED’、‘REVERT_RESIZE’、‘SHUTOFF’、‘SOFT_DELETED’、‘STOPPED’、‘SUSPENDED’、‘UNKNOWN’ 或 ‘VERIFY_RESIZE’。 返回值: 成功 |
|
关联标签的列表。 返回值: 成功 |
|
此服务器的任务状态。 返回值: 成功 |
|
服务器终止的时间戳(如果已终止)。 返回值: 成功 |
|
受信任的证书 ID 列表,在镜像签名验证期间使用,以验证签名证书。 返回值: 成功 |
|
此服务器上次更新的时间戳。 返回值: 成功 |
|
启动时要使用的配置信息或脚本。Base64 编码。 返回值: 成功 |
|
此服务器所有者的 ID。 返回值: 成功 |
|
此服务器的虚拟机状态。 返回值: 成功 |
|
与 attached_volumes 相同。 返回值: 成功 |