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
参数
参数 |
注释 |
---|---|
实例相关的账户。 |
|
要应用于新实例的亲和性组名称。 |
|
当新大小小于旧大小时,启用卷缩减。 选项
|
|
用于查询 API 端点的 HTTP 方法。 如果没有给出,则考虑 选项
|
|
CloudStack API 的 API 密钥。 如果没有给出,则考虑 |
|
CloudStack API 的密钥。 如果未设置,则考虑 |
|
HTTP 超时时间(秒)。 如果没有给出,则考虑 默认值: |
|
CloudStack API 的 URL,例如 https://cloud.example.com/client/api。 如果没有给出,则考虑 |
|
验证 CA 授权证书文件。 如果没有给出,则考虑 |
|
应在其中部署或启动实例的集群。 仅在 *state=started* 或实例正在运行时考虑。 需要 root 管理员权限。 |
|
分配给实例的 CPU 数量,与自定义服务产品一起使用 |
|
分配给实例的时钟速度/份额,与自定义服务产品一起使用 |
|
用于指定自定义参数的映射。 |
|
要使用的磁盘产品的名称。 |
|
从 ISO 部署实例时所需的磁盘大小(GB)。 |
|
实例的自定义显示名称。 如果没有指定,显示名称将设置为 *name*。 *name* 或 *display_name* 为必填项。 |
|
实例相关的域。 |
|
如果需要应用更改,则强制停止/启动实例,否则将不会更改正在运行的实例。 选项
|
|
新实例所属的组。 |
|
应在其中部署或启动实例的主机。 仅在 *state=started* 或实例正在运行时考虑。 需要 root 管理员权限。 |
|
用于创建新实例的虚拟机管理程序的名称。 在使用 *state=present* 时相关,但仅在 ISO/模板上未设置时才考虑。 如果未在 ISO/模板上设置或找到,则将使用第一个找到的虚拟机管理程序。 可能的值为 |
|
默认实例网络的IPv6地址。 |
|
创建期间默认实例网络的IPv4地址。 |
|
以{‘network’: 网络名称, ‘ip’: 1.2.3.4}形式表示的映射列表。 与networks选项互斥。 |
|
用于创建新实例的ISO的名称或ID。 使用state=present时必填。 与template选项互斥。 |
|
实例的键盘设备类型。 选项
|
|
分配给实例的内存,与自定义服务产品一起使用。 |
|
实例的主机名。 如果未指定,CloudStack将生成名称(UUID),之后无法更改。
|
|
新实例要使用的网络列表。 |
|
应在其上部署或启动实例的Pod。 仅在 *state=started* 或实例正在运行时考虑。 需要 root 管理员权限。 |
|
轮询异步作业,直到作业完成。 选项
|
|
要部署实例的项目的名称。 |
|
以GB为单位的根磁盘大小,如果使用KVM虚拟机部署实例并在启动时想要调整根磁盘大小,则需要此参数(需要CloudStack >= 4.4,已安装并启用cloud-initramfs-growroot)。 |
|
要应用于实例的安全组列表。 |
|
新实例的服务产品的名称或ID。 如果未设置,则使用找到的第一个服务产品。 |
|
要部署到新实例的SSH密钥的名称。 |
|
实例的状态。 选项
|
|
标签列表。标签是具有键 如果要删除所有标签,请设置一个空列表,例如:tags: []。 |
|
用于创建新实例的模板的名称、显示文本或ID。 使用state=present时必填。 与iso选项互斥。 |
|
用于搜索模板或iso的过滤器的名称。 用于state=present上的参数iso或template。 选项
|
|
可选数据(ASCII),可在成功部署后发送到实例。 数据将自动进行base64编码。 考虑使用CLOUDSTACK_METHOD=post切换到HTTP_POST,以将HTTP_GET的大小限制从2KB增加到32KB。 与user_data_name选项互斥。 |
|
用于指定用户数据中变量的参数值的映射。 |
|
要使用的用户数据的名称。 与user_data选项互斥。 |
|
如果 如果未给出,则考虑 这仅应在使用自签名证书的个人控制站点上使用。 选项
|
|
应在其中部署实例的区域的名称。 |
注释
注意
有关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
返回值
公共返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
实例相关的账户。 返回:成功 示例: |
|
实例所在的关联组。 返回:成功 示例: |
|
实例创建的日期。 返回:成功 示例: |
|
实例的默认IP地址。 返回:成功 示例: |
|
实例的默认IPv6地址。 返回:如果可用 示例: |
|
实例的显示名称。 返回:成功 示例: |
|
实例相关的域。 返回:成功 示例: |
|
实例相关的组名。 返回:成功 示例: |
|
实例运行所在的虚拟机管理程序的主机名。 返回:成功且实例正在运行 示例: |
|
与此实例相关的虚拟机管理程序。 返回:成功 示例: |
|
实例的UUID。 返回:成功 示例: |
|
实例的内部名称(仅限ROOT管理员)。 返回:成功 示例: |
|
部署实例的ISO的名称。 返回:如果可用 示例: |
|
实例的名称。 返回:成功 示例: |
|
如果存在,则为实例的密码。 返回:如果可用 示例: |
|
如果启用了密码设置,则为True。 返回:成功 示例: |
|
实例相关的项目的名称。 返回:成功 示例: |
|
通过静态NAT规则与实例关联的公共IP地址。 返回:如果可用 示例: |
|
实例所在的安全性组。 返回:成功 示例: |
|
实例拥有的服务产品的名称。 返回:成功 示例: |
|
部署到实例的SSH密钥的名称。 返回:如果可用 示例: |
|
部署到实例的SSH密钥的名称。 返回:如果可用 示例: |
|
实例的状态。 返回:成功 示例: |
|
与实例关联的资源标签列表。 返回:成功 示例: |
|
部署实例的模板的名称。 返回:成功 示例: |
|
部署实例的模板的显示文本。 返回:成功 示例: |
|
发送到实例的可选数据。 返回:成功 示例: |
|
实例所在的区域的名称。 返回:成功 示例: |