ngine_io.cloudstack.cs_instance 模块 – 管理基于 Apache CloudStack 云的实例和虚拟机。

注意

此模块是 ngine_io.cloudstack 集合 (版本 2.5.0) 的一部分。

如果您正在使用 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install ngine_io.cloudstack。您需要其他要求才能使用此模块,请参阅 要求 以了解详情。

要在 playbook 中使用它,请指定: ngine_io.cloudstack.cs_instance

ngine_io.cloudstack 0.1.0 中的新增功能

概要

  • 部署、启动、更新、扩展、重启、恢复、停止和销毁实例。

要求

执行此模块的主机需要以下要求。

  • python >= 2.6

  • cs >= 0.9.0

参数

参数

注释

account

字符串

实例相关的账户。

affinity_groups

别名:affinity_group

列表 / 元素=字符串

要应用于新实例的亲和性组名称。

allow_root_disk_shrink

布尔值

当新大小小于旧大小时,启用卷缩减。

选项

  • false ← (默认)

  • true

api_http_method

字符串

用于查询 API 端点的 HTTP 方法。

如果没有给出,则考虑 CLOUDSTACK_METHOD 环境变量。

选项

  • "get" ← (默认)

  • "post"

api_key

字符串 / 必需

CloudStack API 的 API 密钥。

如果没有给出,则考虑 CLOUDSTACK_KEY 环境变量。

api_secret

字符串 / 必需

CloudStack API 的密钥。

如果未设置,则考虑 CLOUDSTACK_SECRET 环境变量。

api_timeout

整数

HTTP 超时时间(秒)。

如果没有给出,则考虑 CLOUDSTACK_TIMEOUT 环境变量。

默认值: 10

api_url

字符串 / 必需

CloudStack API 的 URL,例如 https://cloud.example.com/client/api

如果没有给出,则考虑 CLOUDSTACK_ENDPOINT 环境变量。

api_verify_ssl_cert

字符串

验证 CA 授权证书文件。

如果没有给出,则考虑 CLOUDSTACK_VERIFY 环境变量。

cluster

字符串

ngine_io.cloudstack 2.3.0 中新增

应在其中部署或启动实例的集群。

仅在 *state=started* 或实例正在运行时考虑。

需要 root 管理员权限。

cpu

整数

分配给实例的 CPU 数量,与自定义服务产品一起使用

cpu_speed

整数

分配给实例的时钟速度/份额,与自定义服务产品一起使用

details

字典

用于指定自定义参数的映射。

disk_offering

字符串

要使用的磁盘产品的名称。

disk_size

整数

从 ISO 部署实例时所需的磁盘大小(GB)。

display_name

字符串

实例的自定义显示名称。

如果没有指定,显示名称将设置为 *name*。

*name* 或 *display_name* 为必填项。

domain

字符串

实例相关的域。

force

布尔值

如果需要应用更改,则强制停止/启动实例,否则将不会更改正在运行的实例。

选项

  • false ← (默认)

  • true

group

字符串

新实例所属的组。

host

字符串

应在其中部署或启动实例的主机。

仅在 *state=started* 或实例正在运行时考虑。

需要 root 管理员权限。

hypervisor

字符串

用于创建新实例的虚拟机管理程序的名称。

在使用 *state=present* 时相关,但仅在 ISO/模板上未设置时才考虑。

如果未在 ISO/模板上设置或找到,则将使用第一个找到的虚拟机管理程序。

可能的值为 KVMVMwareBareMetalXenServerLXCHyperVUCSOVMSimulator

ip6_address

字符串

默认实例网络的IPv6地址。

ip_address

字符串

创建期间默认实例网络的IPv4地址。

ip_to_networks

别名:ip_to_network

列表 / 元素=字典

{‘network’: 网络名称, ‘ip’: 1.2.3.4}形式表示的映射列表。

networks选项互斥。

iso

字符串

用于创建新实例的ISO的名称或ID。

使用state=present时必填。

template选项互斥。

keyboard

字符串

实例的键盘设备类型。

选项

  • "de"

  • "de-ch"

  • "es"

  • "fi"

  • "fr"

  • "fr-be"

  • "fr-ch"

  • "is"

  • "it"

  • "jp"

  • "nl-be"

  • "no"

  • "pt"

  • "uk"

  • "us"

memory

整数

分配给实例的内存,与自定义服务产品一起使用。

name

字符串

实例的主机名。name只能包含ASCII字母。

如果未指定,CloudStack将生成名称(UUID),之后无法更改。

namedisplay_name必填。

networks

别名:network

列表 / 元素=字符串

新实例要使用的网络列表。

pod

字符串

ngine_io.cloudstack 2.3.0 中新增

应在其上部署或启动实例的Pod。

仅在 *state=started* 或实例正在运行时考虑。

需要 root 管理员权限。

poll_async

布尔值

轮询异步作业,直到作业完成。

选项

  • false

  • true ← (默认)

project

字符串

要部署实例的项目的名称。

root_disk_size

整数

以GB为单位的根磁盘大小,如果使用KVM虚拟机部署实例并在启动时想要调整根磁盘大小,则需要此参数(需要CloudStack >= 4.4,已安装并启用cloud-initramfs-growroot)。

security_groups

别名:security_group

列表 / 元素=字符串

要应用于实例的安全组列表。

service_offering

字符串

新实例的服务产品的名称或ID。

如果未设置,则使用找到的第一个服务产品。

ssh_key

字符串

要部署到新实例的SSH密钥的名称。

state

字符串

实例的状态。

选项

  • "deployed"

  • "started"

  • "stopped"

  • "restarted"

  • "restored"

  • "destroyed"

  • "expunged"

  • "present" ← (默认)

  • "absent"

tags

别名:tag

列表 / 元素=字典

标签列表。标签是具有键keyvalue的字典列表。

如果要删除所有标签,请设置一个空列表,例如:tags: []

template

字符串

用于创建新实例的模板的名称、显示文本或ID。

使用state=present时必填。

iso选项互斥。

template_filter

别名:iso_filter

字符串

用于搜索模板或iso的过滤器的名称。

用于state=present上的参数isotemplate

选项

  • "all"

  • "featured"

  • "self"

  • "selfexecutable"

  • "sharedexecutable"

  • "executable" ← (默认)

  • "community"

user_data

字符串

可选数据(ASCII),可在成功部署后发送到实例。

数据将自动进行base64编码。

考虑使用CLOUDSTACK_METHOD=post切换到HTTP_POST,以将HTTP_GET的大小限制从2KB增加到32KB。

user_data_name选项互斥。

user_data_details

字典

在ngine_io.cloudstack 2.5.0中添加

用于指定用户数据中变量的参数值的映射。

user_data_name

字符串

在ngine_io.cloudstack 2.5.0中添加

要使用的用户数据的名称。

user_data选项互斥。

validate_certs

布尔值

在ngine_io.cloudstack 2.4.0中添加

如果false,则不会验证SSL证书。

如果未给出,则考虑CLOUDSTACK_DANGEROUS_NO_TLS_VERIFY环境变量。

这仅应在使用自签名证书的个人控制站点上使用。

选项

  • false

  • true ← (默认)

zone

字符串 / 必需

应在其中部署实例的区域的名称。

注释

注意

  • 有关cloudstack模块的详细指南,请参阅CloudStack云指南

  • 此模块支持检查模式。

示例

# NOTE: Names of offerings and ISOs depending on the CloudStack configuration.
- name: create a instance from an ISO
  ngine_io.cloudstack.cs_instance:
    name: web-vm-1
    iso: Linux Debian 7 64-bit
    hypervisor: VMware
    project: Integration
    zone: ch-zrh-ix-01
    service_offering: 1cpu_1gb
    disk_offering: PerfPlus Storage
    disk_size: 20
    networks:
      - Server Integration
      - Sync Integration
      - Storage Integration

- name: for changing a running instance, use the 'force' parameter
  ngine_io.cloudstack.cs_instance:
    name: web-vm-1
    zone: zone01
    display_name: web-vm-01.example.com
    iso: Linux Debian 7 64-bit
    service_offering: 2cpu_2gb
    force: yes

# NOTE: user_data can be used to kickstart the instance using cloud-init yaml config.
- name: create or update a instance on Exoscale's public cloud using display_name.
  ngine_io.cloudstack.cs_instance:
    display_name: web-vm-1
    zone: zone01
    template: Linux Debian 7 64-bit
    service_offering: Tiny
    ssh_key: [email protected]
    tags:
      - key: admin
        value: john
      - key: foo
        value: bar
    user_data: |
        #cloud-config
        packages:
          - nginx

- name: create an instance with multiple interfaces specifying the IP addresses
  ngine_io.cloudstack.cs_instance:
    name: web-vm-1
    zone: zone01
    template: Linux Debian 7 64-bit
    service_offering: Tiny
    ip_to_networks:
      - network: NetworkA
        ip: 10.1.1.1
      - network: NetworkB
        ip: 192.0.2.1

- name: ensure an instance is stopped
  ngine_io.cloudstack.cs_instance:
    name: web-vm-1
    zone: zone01
    state: stopped

- name: ensure an instance is running
  ngine_io.cloudstack.cs_instance:
    name: web-vm-1
    zone: zone01
    state: started

- name: remove an instance
  ngine_io.cloudstack.cs_instance:
    name: web-vm-1
    zone: zone01
    state: absent

返回值

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

描述

account

字符串

实例相关的账户。

返回:成功

示例:"example account"

affinity_groups

列表 / 元素=字符串

实例所在的关联组。

返回:成功

示例:["[ \"webservers\" ]"]

created

字符串

实例创建的日期。

返回:成功

示例:"2014-12-01T14:57:57+0100"

default_ip

字符串

实例的默认IP地址。

返回:成功

示例:"10.23.37.42"

default_ip6

字符串

实例的默认IPv6地址。

返回:如果可用

示例:"2a04:c43:c00:a07:4b4:beff:fe00:74"

display_name

字符串

实例的显示名称。

返回:成功

示例:"web-01"

domain

字符串

实例相关的域。

返回:成功

示例:"example domain"

group

字符串

实例相关的组名。

返回:成功

示例:"web"

host

字符串

实例运行所在的虚拟机管理程序的主机名。

返回:成功且实例正在运行

示例:"host-01.example.com"

hypervisor

字符串

与此实例相关的虚拟机管理程序。

返回:成功

示例:"KVM"

id

字符串

实例的UUID。

返回:成功

示例:"04589590-ac63-4ffc-93f5-b698b8ac38b6"

instance_name

字符串

实例的内部名称(仅限ROOT管理员)。

返回:成功

示例:"i-44-3992-VM"

iso

字符串

部署实例的ISO的名称。

返回:如果可用

示例:"Debian-8-64bit"

name

字符串

实例的名称。

返回:成功

示例:"web-01"

password

字符串

如果存在,则为实例的密码。

返回:如果可用

示例:"Ge2oe7Do"

password_enabled

布尔值

如果启用了密码设置,则为True。

返回:成功

示例:true

project

字符串

实例相关的项目的名称。

返回:成功

示例:"Production"

public_ip

字符串

通过静态NAT规则与实例关联的公共IP地址。

返回:如果可用

示例:"1.2.3.4"

security_groups

列表 / 元素=字符串

实例所在的安全性组。

返回:成功

示例:["[ \"default\" ]"]

service_offering

字符串

实例拥有的服务产品的名称。

返回:成功

示例:"2cpu_2gb"

ssh_key

字符串

部署到实例的SSH密钥的名称。

返回:如果可用

示例:"key@work"

ssh_keys

列表 / 元素=字符串

在ngine_io.cloudstack 2.5.0中添加

部署到实例的SSH密钥的名称。

返回:如果可用

示例:["key@work", "key@home"]

state

字符串

实例的状态。

返回:成功

示例:"Running"

tags

列表 / 元素=字符串

与实例关联的资源标签列表。

返回:成功

示例:["[ { \"key\": \"foo\"", " \"value\": \"bar\" } ]"]

template

字符串

部署实例的模板的名称。

返回:成功

示例:"Linux Debian 9 64-bit"

template_display_text

字符串

部署实例的模板的显示文本。

返回:成功

示例:"Linux Debian 9 64-bit 200G Disk (2017-10-08-622866)"

user-data

字符串

发送到实例的可选数据。

返回:成功

示例:"VXNlciBkYXRhIGV4YW1wbGUK"

zone

字符串

实例所在的区域的名称。

返回:成功

示例:"ch-gva-2"

作者

  • René Moser (@resmo)