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_timeout

整数

套接字层在 API 调用超时之前应等待多长时间。如果省略此参数,则不会将任何内容传递给 requests 库。

auth

字典

包含云的认证插件策略所需的认证信息的字典。对于默认的 *password* 插件,这将包含 *auth_url*、*username*、*password*、*project_name* 以及有关域的任何信息(例如,*user_domain_name* 或 *project_domain_name*),如果云支持它们的话。对于其他插件,此参数需要包含该认证插件所需的任何参数。如果提供了命名云或存在 OpenStack OS_* 环境变量,则不需要此参数。

auth_type

字符串

要使用的认证插件的名称。如果云使用密码认证以外的其他方式,则应在此处指示插件的名称,并相应地更新 *auth* 参数的内容。

auto_ip

别名:auto_floating_ip, public_ip

布尔值

确保实例具有公共 IP,无论云如何执行此操作。

例如,云可以为服务器添加浮动 IP 或将服务器附加到公共网络。

在服务器创建期间需要将 *wait* 设置为 True

此模块中的浮动 IP 支持不稳定,请谨慎使用。

选项 *auto_ip*、*floating_ip_pools* 和 *floating_ips* 的交互方式不明确且深度无法记录。为了显式安全地附加和分离浮动 IP 地址,请改用模块 *openstack.cloud.resource*。

选项

  • false

  • true ← (默认)

availability_zone

字符串

要在其中创建服务器的可用区。

此服务器属性无法更新。

boot_from_volume

布尔值

实例是否应从基于给定镜像创建的持久卷启动。与 boot_volume 互斥。

此服务器属性无法更新。

选项

  • false ← (默认)

  • true

boot_volume

别名:root_volume

字符串

用作启动卷的卷名称或 ID。暗示 boot_from_volume。与 image 和 boot_from_volume 互斥。

此服务器属性无法更新。

ca_cert

别名:cacert

字符串

CA 证书捆绑包的路径,可用作验证 SSL API 请求的一部分。

client_cert

别名:cert

字符串

客户端证书的路径,可用作 SSL 事务的一部分。

client_key

别名:key

字符串

客户端密钥的路径,可用作 SSL 事务的一部分。

cloud

任意

要操作的命名云或云配置。如果 *cloud* 是字符串,则它引用在 OpenStack clouds.yaml 文件中定义的命名云配置。为 *auth* 和 *auth_type* 提供默认值。如果提供了 *auth* 或存在 OpenStack OS_* 环境变量,则不需要此参数。如果 *cloud* 是字典,则它包含完整的云配置,就像 clouds.yaml 的一部分一样。

config_drive

布尔值

是否启用 config drive 启动服务器。

此服务器属性无法更新。

选项

  • false ← (默认)

  • true

delete_ips

别名:delete_fip

布尔值

当 *state* 为 absent 且此选项为 true 时,与此服务器关联的任何浮动 IP 地址都将与其一起删除。

此模块中的浮动 IP 支持不稳定,请谨慎使用。

选项

  • false ← (默认)

  • true

description

字符串

服务器的描述。

flavor

字符串

要创建新实例的 flavor 的名称或 ID。

当 *state=present* 时,必须定义 *flavor* 和 *flavor_ram* 中的一个。

此服务器属性无法更新。

flavor_include

字符串

用于过滤 flavor 名称的文本,例如在 Rackspace 等情况下,有多个 flavor 具有相同的内存大小。flavor_include 是一个正向匹配过滤器 - 它必须存在于 flavor 名称中。

此服务器属性无法更新。

flavor_ram

整数

要创建新实例的 flavor 必须具有的最小内存量(以 MB 为单位)。

当 *state=present* 时,必须定义 *flavor* 和 *flavor_ram* 中的一个。

此服务器属性无法更新。

floating_ip_pools

列表 / 元素=字符串

从中选择浮动 IP 的浮动 IP 池的名称。

在服务器创建期间需要将 *wait* 设置为 True

此模块中的浮动 IP 支持不稳定,请谨慎使用。

选项 *auto_ip*、*floating_ip_pools* 和 *floating_ips* 的交互方式不明确且深度无法记录。为了显式安全地附加和分离浮动 IP 地址,请改用模块 *openstack.cloud.resource*。

floating_ips

列表 / 元素=字符串

要分配给此节点的已存在的有效浮动 IP 列表。

在服务器创建期间需要将 *wait* 设置为 True

此模块中的浮动 IP 支持不稳定,请谨慎使用。

选项 *auto_ip*、*floating_ip_pools* 和 *floating_ips* 的交互方式不明确且深度无法记录。为了显式安全地附加和分离浮动 IP 地址,请改用模块 *openstack.cloud.resource*。

image

字符串

要启动的基本镜像的名称或 ID。

当 *boot_from_volume=true* 时需要。

此服务器属性无法更新。

image_exclude

字符串

用于过滤镜像名称的文本,例如在 HP 等情况下,有多个镜像名称匹配公共标识部分。image_exclude 是一个负向匹配过滤器 - 它是不允许存在于镜像名称中的文本。

此服务器属性无法更新。

默认: "(deprecated)"

interface

别名:endpoint_type

字符串

要从服务目录中获取的端点 URL 类型。

选项

  • "admin"

  • "internal"

  • "public" ← (默认)

key_name

字符串

创建实例时使用的密钥对名称。

此服务器属性无法更新。

元数据 (metadata)

别名: meta

任意

应作为元数据提供给新实例的键值对列表,或包含键值对列表的字符串。例如:metadata: “key1=value1,key2=value2”

name

字符串 / 必填

必须赋予实例的名称。如果stateabsent,也可以指定实例的ID而不是其名称。

此服务器属性无法更新。

network

字符串

要将此实例附加到的网络的名称或 ID。这是nics参数的简化版本,只应提供networknics中的一个。

此服务器属性无法更新。

nics

列表 / 元素=任意

应将实例接口附加到的网络列表。网络可以通过net-id/net-name/port-id或port-name来引用。

它也接受包含(net/port)-(id/name)列表的字符串,例如:nics: "net-id=uuid-1,port-name=myport"

只应提供networknics中的一个。

此服务器属性无法更新。

默认值: []

tag

字符串

通过元数据传递给特定端口的标签。例如:tag: test_tag

region_name

字符串

区域名称。

reuse_ips

布尔值

auto_ip为true且此选项为true时,auto_ip代码将尝试在创建新的浮动IP之前重用项目中未分配的浮动IP。需要注意的是,不可能安全地并发执行此操作,因此,如果您的用例涉及并发服务器创建,强烈建议将其设置为false,并在使用delete_ips删除服务器时删除与服务器关联的浮动IP。

此模块中的浮动 IP 支持不稳定,请谨慎使用。

此服务器属性无法更新。

选项

  • false

  • true ← (默认)

scheduler_hints

字典

调度程序的任意键值对,用于自定义使用。

此服务器属性无法更新。

sdk_log_level

字符串

OpenStackSDK 的日志级别。

选项

  • "INFO" ← (默认)

  • "DEBUG"

sdk_log_path

字符串

OpenStackSDK 日志文件的路径。如果为空,则不写入日志。

security_groups

列表 / 元素=字符串

应将实例添加到其中的安全组的名称或 ID。

在创建服务器时,如果省略security_groups,则API将在默认安全组中创建服务器。

请求的安全组不会应用于预先存在的端口。

默认值: []

state

字符串

资源应该是present还是absent

选项

  • "present" ← (默认)

  • "absent"

terminate_volume

布尔值

如果为true,则在删除实例时删除卷,如果它是从卷启动的。

此服务器属性无法更新。

选项

  • false ← (默认)

  • true

timeout

整数

模块应等待实例进入活动状态的时间量。

默认值: 180

userdata

字符串

提供给实例的非透明数据块。

此服务器属性无法更新。

validate_certs

别名: verify

布尔值

是否应验证SSL API请求。

在 Ansible 2.3 之前,默认为true

选项

  • false

  • true

volume_size

整数

如果基于镜像从卷启动,则要创建的卷的大小(以GB为单位)。

此服务器属性无法更新。

volumes

列表 / 元素=字符串

要附加到实例的预先存在的卷名称或 ID 列表。

此服务器属性无法更新。

默认值: []

wait

布尔值

模块是否应等待实例创建完成。

选项

  • false

  • true ← (默认)

注释

注意

  • 可以使用标准的 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

返回值

公共返回值已在此处记录,以下是此模块特有的字段

描述

server

字典

描述服务器的字典。

返回值:state为“present”时成功。

access_ipv4

字符串

应用于访问此服务器的IPv4地址。可能由提供商自动设置。

返回值:成功

access_ipv6

字符串

应用于访问此服务器的IPv6地址。可能由提供商自动设置。

返回值:成功

addresses

字典

此服务器可通过其访问的地址字典。字典包含诸如“private”和“public”之类的键,每个键都包含该类型地址的字典列表。地址包含在字典中,键为“addr”和“version”,取决于IP地址的协议,值为4或6。

返回值:成功

admin_password

字符串

首次创建服务器时,它会提供管理员密码。

返回值:成功

attached_volumes

列表 / 元素=字符串

已附加卷的列表。列表中的每个项目至少包含一个“id”键来标识特定卷。

返回值:成功

availability_zone

字符串

此服务器所属的可用区名称。

返回值:成功

block_device_mapping

字符串

启用对实例的块设备映射的细粒度控制。这通常用于从卷启动服务器。

返回值:成功

compute_host

字符串

此实例在其上运行的计算主机名称。仅对管理用户显示在响应中。

返回值:成功

config_drive

字符串

指示此服务器是否使用了配置驱动器。

返回值:成功

created_at

字符串

服务器创建的时间戳。

返回值:成功

description

字符串

服务器的描述。在 microversion 2.19 之前,此设置为服务器名称。

返回值:成功

disk_config

字符串

磁盘配置。AUTO 或 MANUAL。

返回值:成功

flavor

字典

从服务器返回的 flavor 属性。

返回值:成功

flavor_id

字符串

要为此服务器使用的 flavor 的 flavor 引用,作为 ID 或完整 URL。

返回值:成功

has_config_drive

字符串

指示配置驱动器是否启用元数据注入。并非所有云提供商都启用此功能。

返回值:成功

host_id

字符串

表示此服务器主机的 ID。

返回值:成功

host_status

字符串

主机状态。

返回值:成功

hostname

字符串

启动实例时在其上设置的主机名。默认情况下,仅对管理用户显示在响应中。

返回值:成功

hypervisor_hostname

字符串

虚拟机监控程序主机名。仅对管理用户显示在响应中。

返回值:成功

id

字符串

服务器的 ID。

返回值:成功

image

字典

从服务器返回的 image 属性。

返回值:成功

image_id

字符串

要为此服务器使用的镜像的镜像引用,作为 ID 或完整 URL。

返回值:成功

instance_name

字符串

实例名称。计算 API 从实例名称模板生成实例名称。仅对管理用户显示在响应中。

返回值:成功

is_locked

布尔值

服务器的锁定状态。

返回值:成功

kernel_id

字符串

使用 AMI 时内核映像的 UUID。如果没有,则为 null。默认情况下,仅对管理用户显示在响应中。

返回值:成功

key_name

字符串

关联密钥对的名称。

返回值:成功

launch_index

整数

当服务器通过多个创建启动时,这是服务器启动的顺序。默认情况下,仅对管理用户显示在响应中。

返回值:成功

launched_at

字符串

服务器启动的时间戳。

返回值:成功

字符串

包含与此服务器相关的链接的字典列表。

返回值:成功

max_count

字符串

要创建的服务器的最大数量。

返回值:成功

metadata

字典

标签字符串列表。

返回值:成功

min_count

字符串

要创建的服务器的最小数量。

返回值:成功

name

字符串

服务器名称

返回值:成功

networks

字符串

网络对象。当租户定义了多个网络时,这是必需的参数。如果未指定networks参数,则服务器将附加到为当前租户创建的唯一网络。

返回值:成功

power_state

字符串

此服务器的电源状态。

返回值:成功

progress

整数

在服务器构建期间,此值表示完成的百分比。完成后,它将为 100。

返回值:成功

project_id

字符串

此服务器关联到的项目的 ID。

返回值:成功

ramdisk_id

字符串

使用 AMI 时 ramdisk 映像的 UUID。如果没有,则为 null。默认情况下,仅对管理用户显示在响应中。

返回值:成功

reservation_id

字符串

服务器的预订 ID。这是一个 ID,可用于跟踪使用多个创建创建的服务器组,这些服务器组都具有相同的 reservation_id。默认情况下,仅对管理用户显示在响应中。

返回值:成功

root_device_name

字符串

实例的根设备名称。默认情况下,仅对管理用户显示在响应中。

返回值:成功

scheduler_hints

字典

要发送到调度程序的数据字典。

返回值:成功

security_groups

列表 / 元素=字典

适用的安全组列表。每个组都包含描述、名称、ID 和规则的键。

返回值:成功

server_groups

列表 / 元素=字符串

服务器所属的服务器组的 UUID。目前最多只能包含一个条目。

返回值:成功

status

字符串

此服务器所处的状态。有效值为“ACTIVE”、“BUILDING”、“DELETED”、“ERROR”、“HARD_REBOOT”、“PASSWORD”、“PAUSED”、“REBOOT”、“REBUILD”、“RESCUED”、“RESIZED”、“REVERT_RESIZE”、“SHUTOFF”、“SOFT_DELETED”、“STOPPED”、“SUSPENDED”、“UNKNOWN”或“VERIFY_RESIZE”。

返回值:成功

tags

列表 / 元素=字符串

关联标签的列表。

返回值:成功

task_state

字符串

此服务器的任务状态。

返回值:成功

terminated_at

字符串

服务器终止时间戳(如果已终止)。

返回值:成功

trusted_image_certificates

列表 / 元素=字符串

在镜像签名验证期间用于验证签名证书的可信证书 ID 列表。

返回值:成功

updated_at

字符串

此服务器上次更新的时间戳。

返回值:成功

user_data

字符串

启动时使用的配置信息或脚本。Base64 编码。

返回值:成功

user_id

字符串

此服务器所有者的 ID。

返回值:成功

vm_state

字符串

此服务器的虚拟机状态。

返回值:成功

volumes

列表 / 元素=字符串

与 attached_volumes 相同。

返回值:成功

作者

  • OpenStack Ansible SIG