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 的一部分一样。 |
|
是否启用 config drive 启动服务器。 此服务器属性无法更新。 选项
|
|
当 *state* 为 此模块中的浮动 IP 支持不稳定,请谨慎使用。 选项
|
|
服务器的描述。 |
|
要创建新实例的 flavor 的名称或 ID。 当 *state=present* 时,必须定义 *flavor* 和 *flavor_ram* 中的一个。 此服务器属性无法更新。 |
|
用于过滤 flavor 名称的文本,例如在 Rackspace 等情况下,有多个 flavor 具有相同的内存大小。flavor_include 是一个正向匹配过滤器 - 它必须存在于 flavor 名称中。 此服务器属性无法更新。 |
|
要创建新实例的 flavor 必须具有的最小内存量(以 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中的一个。 此服务器属性无法更新。 |
|
应将实例接口附加到的网络列表。网络可以通过net-id/net-name/port-id或port-name来引用。 它也接受包含(net/port)-(id/name)列表的字符串,例如: 只应提供network或nics中的一个。 此服务器属性无法更新。 默认值: |
|
通过元数据传递给特定端口的标签。例如: |
|
区域名称。 |
|
当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配置文件,然后来自标准环境变量,最后来自play中的显式参数。更多信息请访问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
返回值
公共返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
描述服务器的字典。 返回值:当state为“present”时成功。 |
|
应用于访问此服务器的IPv4地址。可能由提供商自动设置。 返回值:成功 |
|
应用于访问此服务器的IPv6地址。可能由提供商自动设置。 返回值:成功 |
|
此服务器可通过其访问的地址字典。字典包含诸如“private”和“public”之类的键,每个键都包含该类型地址的字典列表。地址包含在字典中,键为“addr”和“version”,取决于IP地址的协议,值为4或6。 返回值:成功 |
|
首次创建服务器时,它会提供管理员密码。 返回值:成功 |
|
已附加卷的列表。列表中的每个项目至少包含一个“id”键来标识特定卷。 返回值:成功 |
|
此服务器所属的可用区名称。 返回值:成功 |
|
启用对实例的块设备映射的细粒度控制。这通常用于从卷启动服务器。 返回值:成功 |
|
此实例在其上运行的计算主机名称。仅对管理用户显示在响应中。 返回值:成功 |
|
指示此服务器是否使用了配置驱动器。 返回值:成功 |
|
服务器创建的时间戳。 返回值:成功 |
|
服务器的描述。在 microversion 2.19 之前,此设置为服务器名称。 返回值:成功 |
|
磁盘配置。AUTO 或 MANUAL。 返回值:成功 |
|
从服务器返回的 flavor 属性。 返回值:成功 |
|
要为此服务器使用的 flavor 的 flavor 引用,作为 ID 或完整 URL。 返回值:成功 |
|
指示配置驱动器是否启用元数据注入。并非所有云提供商都启用此功能。 返回值:成功 |
|
表示此服务器主机的 ID。 返回值:成功 |
|
主机状态。 返回值:成功 |
|
启动实例时在其上设置的主机名。默认情况下,仅对管理用户显示在响应中。 返回值:成功 |
|
虚拟机监控程序主机名。仅对管理用户显示在响应中。 返回值:成功 |
|
服务器的 ID。 返回值:成功 |
|
从服务器返回的 image 属性。 返回值:成功 |
|
要为此服务器使用的镜像的镜像引用,作为 ID 或完整 URL。 返回值:成功 |
|
实例名称。计算 API 从实例名称模板生成实例名称。仅对管理用户显示在响应中。 返回值:成功 |
|
服务器的锁定状态。 返回值:成功 |
|
使用 AMI 时内核映像的 UUID。如果没有,则为 null。默认情况下,仅对管理用户显示在响应中。 返回值:成功 |
|
关联密钥对的名称。 返回值:成功 |
|
当服务器通过多个创建启动时,这是服务器启动的顺序。默认情况下,仅对管理用户显示在响应中。 返回值:成功 |
|
服务器启动的时间戳。 返回值:成功 |
|
包含与此服务器相关的链接的字典列表。 返回值:成功 |
|
要创建的服务器的最大数量。 返回值:成功 |
|
标签字符串列表。 返回值:成功 |
|
要创建的服务器的最小数量。 返回值:成功 |
|
服务器名称 返回值:成功 |
|
网络对象。当租户定义了多个网络时,这是必需的参数。如果未指定networks参数,则服务器将附加到为当前租户创建的唯一网络。 返回值:成功 |
|
此服务器的电源状态。 返回值:成功 |
|
在服务器构建期间,此值表示完成的百分比。完成后,它将为 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 相同。 返回值:成功 |