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 相同。 返回值: 成功 | 
