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_urlusernamepasswordproject_name 和有关域的任何信息(例如,如果云支持它们,则为 user_domain_nameproject_domain_name)。对于其他插件,此参数将需要包含该身份验证插件所需的任何参数。如果提供了命名的云或存在 OpenStack OS_* 环境变量,则不需要此参数。

auth_type

字符串

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

auto_ip

别名:auto_floating_ip, public_ip

布尔值

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

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

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

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

选项 auto_ipfloating_ip_poolsfloating_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 文件中定义的命名云配置。提供 authauth_type 的默认值。如果提供了 auth 或存在 OpenStack OS_* 环境变量,则不需要此参数。如果 cloud 是一个字典,则它包含一个完整的云配置,就像在 clouds.yaml 的一个部分中一样。

config_drive

布尔值

是否在启用配置驱动器的情况下启动服务器。

此服务器属性无法更新。

选项

  • false ←(默认)

  • true

delete_ips

别名:delete_fip

布尔值

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

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

选项

  • false ←(默认)

  • true

description

字符串

服务器的描述。

flavor

字符串

必须在其中创建新实例的 flavor 的名称或 ID。

state=present 时,必须定义 flavorflavor_ram 中的一个。

此服务器属性无法更新。

flavor_include

字符串

用于过滤 flavor 名称的文本,例如 Rackspace,其中有多个具有相同 ram 计数的 flavor。flavor_include 是一个正匹配过滤器 - 它必须存在于 flavor 名称中。

此服务器属性无法更新。

flavor_ram

整数

必须在其中创建新实例的 flavor 必须具有的最小 ram 量(以 MB 为单位)。

state=present 时,必须定义 flavorflavor_ram 中的一个。

此服务器属性无法更新。

floating_ip_pools

列表 / 元素=字符串

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

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

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

选项 auto_ipfloating_ip_poolsfloating_ips 以不明显的方式和不可记录的深度进行交互。为了显式和安全地附加和分离浮动 IP 地址,请改用模块 openstack.cloud.resource

floating_ips

列表 / 元素=字符串

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

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

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

选项 auto_ipfloating_ip_poolsfloating_ips 以不明显的方式和不可记录的深度进行交互。为了显式和安全地附加和分离浮动 IP 地址,请改用模块 openstack.cloud.resource

image

字符串

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

boot_from_volume=true 时是必需的。

此服务器属性无法更新。

image_exclude

字符串

用于过滤映像名称的文本,例如 HP,其中有多个映像名称与公共标识部分匹配。image_exclude 是一个负匹配过滤器 - 它是可能不存在于映像名称中的文本。

此服务器属性无法更新。

默认值: "(已弃用)"

interface

别名:endpoint_type

字符串

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

选项

  • "admin"

  • "internal"

  • "public" ←(默认)

key_name

字符串

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

此服务器属性无法更新。

元数据 (metadata)

别名: meta

任何

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

名称 (name)

字符串 (string) / 必需 (required)

必须赋予实例的名称。如果状态 (state)不存在 (absent),也可以指定实例的 ID 而不是其名称。

此服务器属性无法更新。

网络 (network)

字符串

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

此服务器属性无法更新。

网络接口 (nics)

列表 (list) / 元素=任意 (elements=any)

实例接口应附加到的网络列表。可以使用网络 ID/网络名称/端口 ID 或端口名称引用网络。

此外,它还接受包含 (网络/端口)-(ID/名称) 列表的字符串。例如:nics: "net-id=uuid-1,port-name=myport"

只能提供 networknics 中的一个。

此服务器属性无法更新。

默认值: []

标签 (tag)

字符串

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

区域名称 (region_name)

字符串

区域的名称。

重用 IP (reuse_ips)

布尔值

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

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

此服务器属性无法更新。

选项

  • false

  • true ←(默认)

调度器提示 (scheduler_hints)

字典

用于自定义用途的调度器的任意键/值对。

此服务器属性无法更新。

SDK 日志级别 (sdk_log_level)

字符串

OpenStackSDK 的日志级别

选项

  • "INFO" ← (默认)

  • "DEBUG"

SDK 日志路径 (sdk_log_path)

字符串

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

安全组 (security_groups)

列表 / 元素=字符串

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

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

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

默认值: []

状态 (state)

字符串

资源应为 presentabsent

选项

  • "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 配置文件,然后来自标准环境变量,最后来自 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)

描述

服务器 (server)

字典

描述服务器的字典。

返回值:state 为 ‘present’ 时成功返回。

访问 IPv4 (access_ipv4)

字符串

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

返回值: 成功

访问 IPv6 (access_ipv6)

字符串

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

返回值: 成功

地址 (addresses)

字典

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

返回值: 成功

管理员密码 (admin_password)

字符串

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

返回值: 成功

已附加的卷 (attached_volumes)

列表 / 元素=字符串

已附加的卷的列表。列表中的每个项目都至少包含一个 ‘id’ 键以标识特定卷。

返回值: 成功

availability_zone

字符串

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

返回值: 成功

块设备映射 (block_device_mapping)

字符串

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

返回值: 成功

计算主机 (compute_host)

字符串

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

返回值: 成功

config_drive

字符串

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

返回值: 成功

创建时间 (created_at)

字符串

服务器创建时的时间戳。

返回值: 成功

description

字符串

服务器的描述。在微版本 2.19 之前,此值设置为服务器名称。

返回值: 成功

磁盘配置 (disk_config)

字符串

磁盘配置。AUTO 或 MANUAL。

返回值: 成功

flavor

字典

从服务器返回的风味属性。

返回值: 成功

风味 ID (flavor_id)

字符串

风味引用,作为 ID 或完整 URL,用于此服务器的风味。

返回值: 成功

有配置驱动器 (has_config_drive)

字符串

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

返回值: 成功

主机 ID (host_id)

字符串

表示此服务器主机的 ID。

返回值: 成功

主机状态 (host_status)

字符串

主机状态。

返回值: 成功

主机名 (hostname)

字符串

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

返回值: 成功

虚拟机管理程序主机名 (hypervisor_hostname)

字符串

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

返回值: 成功

ID

字符串

服务器的 ID。

返回值: 成功

image

字典

从服务器返回的镜像属性。

返回值: 成功

镜像 ID (image_id)

字符串

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

返回值: 成功

实例名称 (instance_name)

字符串

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

返回值: 成功

已锁定 (is_locked)

布尔值

服务器的锁定状态

返回值: 成功

内核 ID (kernel_id)

字符串

使用 AMI 时内核镜像的 UUID。如果不是,则为 null。默认情况下,它仅在管理用户的响应中显示。

返回值: 成功

key_name

字符串

关联的密钥对的名称。

返回值: 成功

启动索引 (launch_index)

整数

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

返回值: 成功

启动时间 (launched_at)

字符串

服务器启动时的时间戳。

返回值: 成功

字符串

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

返回值: 成功

最大计数 (max_count)

字符串

要创建的最大服务器数。

返回值: 成功

元数据 (metadata)

字典

标签字符串列表。

返回值: 成功

最小计数 (min_count)

字符串

要创建的最小服务器数。

返回值: 成功

名称 (name)

字符串

服务器的名称

返回值: 成功

网络 (networks)

字符串

网络对象。当为租户定义多个网络时,为必需参数。当您未指定网络参数时,服务器会附加到为当前租户创建的唯一网络。

返回值: 成功

电源状态 (power_state)

字符串

此服务器的电源状态。

返回值: 成功

进度 (progress)

整数

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

返回值: 成功

项目 ID (project_id)

字符串

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

返回值: 成功

ramdisk ID (ramdisk_id)

字符串

使用 AMI 时 ramdisk 镜像的 UUID。如果不是,则为 null。默认情况下,它仅在管理用户的响应中显示。

返回值: 成功

预留 ID (reservation_id)

字符串

服务器的预留 ID。此 ID 对于跟踪通过多个创建创建的服务器组很有用,这些服务器组都将具有相同的 reservation_id。默认情况下,它仅在管理用户的响应中显示。

返回值: 成功

根设备名称 (root_device_name)

字符串

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

返回值: 成功

调度器提示 (scheduler_hints)

字典

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

返回值: 成功

安全组 (security_groups)

列表 (list) / 元素=字典 (elements=dictionary)

适用安全组的列表。每个组都包含以下键:描述、名称、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