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 模块对于删除即时克隆虚拟机是必要的。

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

  • 父虚拟机必须具有 Guest Customization Engine,即时克隆才能自定义 Guest OS。

  • 只有父虚拟机中的 Linux 操作系统才支持 vSphere 7 中即时克隆的原生 vSphere Guest Customization。

参数

参数

注释

datacenter

字符串 / 必需

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

datastore

字符串 / 必需

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

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

folder

字符串

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

示例

folder: ha-datacenter/vm

folder: /datacenter1/vm

guestinfo_vars

列表 / 元素=字典

在即时克隆的虚拟机中提供 GuestOS 自定义功能。

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

这些对应该用于提供用户定义的自定义,以将目标虚拟机与源虚拟机区分开来。

dns

字符串

dns 用于在即时克隆的客户操作系统中设置 dns。

domain

字符串

domain 用于为即时克隆的客户操作系统设置完全限定域名 (FQDN) 或完整域名。

gateway

字符串

netmask 用于在即时克隆的客户操作系统中设置子网掩码。

hostname

字符串

hostname 用于获取 DNS(域名系统)名称并设置客户系统的 hostname。

ipaddress

字符串

ipaddress 用于在即时克隆的客户操作系统中设置 ipaddress。

netmask

字符串

netmask 用于在即时克隆的客户操作系统中设置子网掩码。

host

别名:esxi_hostname

字符串 / 必需

要放置克隆虚拟机的虚拟中心中的 ESX 主机的名称。

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

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

hostname

字符串

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

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

moid

字符串

如果已知,则为要管理的 vm 实例的管理对象 ID,这是单个 vCenter 实例中唯一的标识符。

如果未提供 parent_vmuuid,则需要此参数。

name

别名:vm_name

字符串 / 必需

克隆虚拟机的名称。

parent_vm

字符串

父虚拟机的名称。

这是一个必需参数,如果参数uuidmoid未提供。

密码

别名:pass,pwd

字符串

vSphere vCenter 或 ESXi 服务器的密码。

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

端口

整数

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

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

默认值:443

代理主机

字符串

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

格式为主机名或 IP 地址。

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

代理端口

整数

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

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

资源池

字符串

要放置已部署虚拟机的资源池的名称。

Resources 是资源池的默认名称。

使用实例 UUID

布尔值

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

选项

  • false ← (默认)

  • true

用户名

别名:admin,user

字符串

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

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

UUID

字符串

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

这是一个必需参数,如果参数parent_vmmoid未提供。

验证证书

布尔值

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

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

选项

  • false

  • true ← (默认)

虚拟机密码

字符串

用于登录虚拟机的密码。

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

虚拟机用户名

字符串

用于登录虚拟机的用户。

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

等待虚拟机工具

布尔值

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

选项

  • false

  • true ← (默认)

等待虚拟机工具超时

整数

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

返回值

常见的返回值已记录在此处,以下是此模块独有的字段

描述

虚拟机信息

字典

有关虚拟机的元数据

返回:始终

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

作者

  • Anant Chopra (@Anant99-sys)