community.vmware.vmware_guest_instant_clone 模块 – 快速克隆虚拟机

注意

此模块是 community.vmware 集合(版本 5.2.0)的一部分。

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

要安装它,请使用:ansible-galaxy collection install community.vmware

要在 playbook 中使用它,请指定:community.vmware.vmware_guest_instant_clone

概要

  • 此模块可用于创建已开机的虚拟机快速克隆。

  • 需要 community.vmware.vmware_guest 模块来创建一个处于开机状态的虚拟机,该虚拟机将用作父虚拟机。

  • 还需要 community.vmware.vmware_guest_powerstate 模块来关闭快速克隆模块的电源。

  • 关闭电源的虚拟机将再次使用 community.vmware.vmware_guest 模块删除。

  • 因此,当在测试环境中创建虚拟机时,删除快速克隆虚拟机需要 community.vmware.vmware_guest 模块。

  • 此外,现在已通过 guestinfo_vars 参数添加了 GuestOS 自定义功能。

  • 父虚拟机必须具有用于快速克隆的 Guest 自定义引擎才能自定义 Guest OS。

  • 在 vSphere 7 中,只有父虚拟机中的 Linux OS 支持用于快速克隆的本机 vSphere Guest 自定义。

参数

参数

注释

数据中心

字符串 / 必需

要部署虚拟机的的数据中心的名称。

数据存储

字符串 / 必需

数据存储或数据存储群集的名称。

如果指定了数据存储群集名称,则模块将查找该群集中 Storage DRS 推荐的数据存储。

文件夹

字符串

目标文件夹,部署克隆虚拟机的绝对路径。

示例

文件夹:ha-datacenter/vm

文件夹:/datacenter1/vm

guestinfo_vars

列表 / 元素=字典

在快速克隆虚拟机中提供 GuestOS 自定义功能。

将传递到目标虚拟机的键值对列表。

这些键值对应用于提供用户定义的自定义,以区分目标虚拟机和源虚拟机。

dns

字符串

dns 用于在快速克隆的 Guest 操作系统中设置 dns。

域名

字符串

域名用于为快速克隆的 Guest 操作系统设置完全限定域名 (FQDN) 或完整域名。

网关

字符串

netmask 用于在快速克隆的 Guest 操作系统中设置网络掩码。

主机名

字符串

主机名用于获取 DNS(域名系统)名称并设置 Guest 系统的主机名。

IP 地址

字符串

IP 地址用于在快速克隆的 Guest 操作系统中设置 IP 地址。

网络掩码

字符串

netmask 用于在快速克隆的 Guest 操作系统中设置网络掩码。

主机

别名:esxi_hostname

字符串 / 必需

数据中心中用于放置克隆虚拟机的 ESX 主机的名称。

主机必须是包含资源池的群集的成员。

resource_pool 一起使用,以查找资源池详细信息。当存在同名资源池时,这将用作附加信息。

主机名

字符串

vSphere vCenter 或 ESXi 服务器的主机名或 IP 地址。

如果任务中未指定该值,则将改用环境变量 VMWARE_HOST 的值。

moid

字符串

要管理的虚拟机实例的托管对象 ID(如果已知),这是仅在单个 vCenter 实例中唯一的标识符。

如果未提供 parent_vmuuid,则此为必需。

名称

别名:vm_name

字符串 / 必需

克隆虚拟机的名称。

父虚拟机

字符串

父虚拟机的名称。

如果未提供参数 uuidmoid,则此参数为必需参数。

密码

别名:pass, pwd

字符串

vSphere vCenter 或 ESXi 服务器的密码。

如果任务中未指定该值,则将改用环境变量 VMWARE_PASSWORD 的值。

端口

整数

vSphere vCenter 或 ESXi 服务器的端口号。

如果任务中未指定该值,则将使用环境变量 VMWARE_PORT 的值代替。

默认值: 443

proxy_host

字符串

将接收所有 HTTPS 请求并转发它们的代理的地址。

格式为主机名或 IP 地址。

如果任务中未指定该值,则将使用环境变量 VMWARE_PROXY_HOST 的值代替。

proxy_port

整数

将接收所有 HTTPS 请求并转发它们的 HTTP 代理的端口。

如果任务中未指定该值,则将使用环境变量 VMWARE_PROXY_PORT 的值代替。

resource_pool

字符串

数据中心中用于放置已部署虚拟机的资源池的名称。

Resources 是资源池的默认名称。

use_instance_uuid

布尔值

是否使用 VMware 实例 UUID 而不是 BIOS UUID。

选项

  • false ← (默认)

  • true

username

别名:admin, user

字符串

vSphere vCenter 或 ESXi 服务器的用户名。

如果任务中未指定该值,则将使用环境变量 VMWARE_USER 的值代替。

uuid

字符串

要从中克隆的虚拟机实例的 UUID,这是 VMware 的唯一标识符。

如果未提供参数 parent_vmmoid,则此参数是必需的。

validate_certs

布尔值

允许在 SSL 证书无效时进行连接。当证书不受信任时,设置为 false

如果任务中未指定该值,则将使用环境变量 VMWARE_VALIDATE_CERTS 的值代替。

选项

  • false

  • true ← (默认)

vm_password

字符串

用于登录虚拟机的密码。

仅在使用客户机自定义功能时才需要。

vm_username

字符串

用于登录虚拟机的用户。

仅在使用客户机自定义功能时才需要。

wait_vm_tools

布尔值

是否等待虚拟机工具在重启即时克隆虚拟机后启动。

选项

  • false

  • true ← (默认)

wait_vm_tools_timeout

整数

wait_vm_tools 参数定义一个超时时间(以秒为单位)。

默认值: 300

注意事项

注意

  • 所有模块都需要 API 写入访问权限,因此不支持免费的 ESXi 许可证。

  • 所有变量和 VMware 对象名称都区分大小写。

示例

- name: Instant Clone a VM
  community.vmware.vmware_guest_instant_clone:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    validate_certs: false
    folder: "{{ f0 }}"
    datastore: "{{ rw_datastore }}"
    datacenter: "{{ dc1 }}"
    host: "{{ esxi1 }}"
    name: "{{ Clone_vm }}"
    parent_vm: "{{ testvm_1 }}"
    resource_pool: "{{ test_resource_001 }}"
  register: vm_clone
  delegate_to: localhost

- name: set state to poweroff the Cloned VM
  community.vmware.vmware_guest_powerstate:
    validate_certs: false
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    name: "cloned_vm_from_vm_cluster"
    folder: "{{ f0 }}"
    state: powered-off
  register: poweroff_instant_clone_from_vm_when_cluster
  delegate_to: localhost

- name: Clean VM
  community.vmware.vmware_guest:
    validate_certs: false
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    name: "cloned_vm_from_vm_cluster"
    datacenter: "{{ dc1 }}"
    state: absent
  register: delete_instant_clone_from_vm_when_cluster
  ignore_errors: true
  delegate_to: localhost

- name: Instant Clone a VM with guest_customization
  community.vmware.vmware_guest_instant_clone:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    vm_username: "root"
    vm_password: "SuperSecret"
    validate_certs: false
    folder: "{{ f0 }}"
    datastore: "{{ rw_datastore }}"
    datacenter: "{{ dc1 }}"
    host: "{{ esxi1 }}"
    guestinfo_vars:
      - hostname: "{{ guestinfo.ic.hostname }}"
        ipaddress: "{{ guestinfo.ic.ipaddress }}"
        netmask: "{{ guestinfo.ic.netmask }}"
        gateway: "{{ guestinfo.ic.gateway }}"
        dns: "{{ guestinfo.ic.dns }}"
        domain: "{{ guestinfo.ic.domain }}"
    name: "Instant_clone_guest_customize"
    parent_vm: "test_vm1"
    resource_pool: DC0_C0_RP1
  register: Instant_cloned_guest_customize
  delegate_to: localhost

- name: Instant Clone a VM when skipping optional params
  community.vmware.vmware_guest_instant_clone:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    validate_certs: false
    name: "{{ Clone_vm }}"
    parent_vm: "{{ testvm_1 }}"
    datacenter: "{{ dc1 }}"
    datastore: "{{ rw_datastore }}"
    host: "{{ esxi1 }}"
  register: VM_clone_optional_arguments
  delegate_to: localhost

- name: Instant clone in check mode
  community.vmware.vmware_guest_instant_clone:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    validate_certs: false
    folder: "{{ f0 }}"
    datastore: "{{ rw_datastore }}"
    datacenter: "{{ dc1 }}"
    host: "{{ esx1 }}"
    name: "{{ Clone_vm }}"
    parent_vm: "{{ testvm_2 }}"
    resource_pool: "{{ test_resource_001 }}"
  check_mode: true
  register: check_mode_clone
  delegate_to: localhost
- debug:
    var: check_mode_clone

返回值

此处记录了常见的返回值 这里,以下是此模块特有的字段

描述

vm_info

字典

有关虚拟机的元数据

返回值: 始终

示例: {"datastore": "", "host": "", "instance_uuid": "", "vcenter": "", "vm_folder": "", "vm_name": ""}

作者

  • Anant Chopra (@Anant99-sys)