community.vmware.vmware_guest 模块 – 管理 vCenter 中的虚拟机

注意

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

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

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

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

概要

  • 此模块可用于从模板或其他虚拟机创建新的虚拟机,管理虚拟机的电源状态,例如开机、关机、挂起、关闭、重启等,修改各种虚拟机组件(如网络、磁盘、自定义等),重命名虚拟机以及删除具有关联组件的虚拟机。

参数

参数

注释

advanced_settings

列表 / 元素=字典

定义要添加到 VMX 配置的高级设置列表。

高级设置对象采用两个字段 keyvalue

不正确的键和值将被忽略。

默认值: []

annotation

别名:notes

字符串

要包含在虚拟机中的注释或批注。

cdrom

列表 / 元素=字典

虚拟机的 CD-ROM 配置列表。

对于 ide 控制器,不支持热添加或热删除 CD-ROM。

默认值: []

controller_number

整数

对于 cdrom[].controller_type=ide,有效值为 0 或 1。

对于 cdrom[].controller_type=sata,有效值为 0 到 3。

controller_type

字符串

当设置为 sata 时,请确保 cdrom[].unit_number 正确且未被 SATA 磁盘使用。

选择

  • "ide" ← (默认)

  • "sata"

iso_path

字符串

要使用的 ISO 文件的 datastore 路径,格式为 [datastore1] path/to/file.iso

如果类型设置为 iso,则为必填项。

state

字符串

如果设置为 absent,则将删除指定的 CD-ROM。

选择

  • "present" ← (默认)

  • "absent"

type

字符串

CD-ROM 的类型。

使用 none,CD-ROM 将断开连接但仍然存在。

选择

  • "none"

  • "client" ← (默认)

  • "iso"

unit_number

整数

对于 cdrom[].controller_type=ide,有效值为 0 或 1。

对于 cdrom[].controller_type=sata,有效值为 0 到 29。

cdrom[].controller_numbercdrom[].unit_number 是强制属性。

cluster

字符串

虚拟机将运行的集群名称。

如果未设置 esxi_hostname,则此为必填参数。

esxi_hostnamecluster 是互斥参数。

convert

字符串

指定克隆模板或虚拟机时转换磁盘类型。

选择

  • "thin"

  • "厚"

  • "急切置零厚"

自定义

字典

从模板或虚拟机克隆时,或者直接应用于现有虚拟机的操作系统自定义参数。

并非所有操作系统都支持使用相应的 vCenter 版本进行自定义,请查看 VMware 文档以了解相应的操作系统自定义。

有关支持的自定义操作系统矩阵,(请参阅 http://partnerweb.vmware.com/programs/guestOS/guest-os-customization-matrix.pdf

基于 Linux 的操作系统需要安装 Perl 包才能进行操作系统自定义。

默认值: {}

自动登录

布尔值

虚拟机自定义后自动登录。

特定于 Windows 自定义。

选择

自动登录次数

整数

重启后自动登录的次数。

特定于 Windows 自定义。

如果 customization.autologon 未设置或设置为 customization.autologon=false,则忽略此项。

如果未设置,则将使用 1。

dns_servers

列表 / 元素=字符串

要配置的 DNS 服务器列表。

Linux 和 Windows 自定义通用。

dns_suffix

列表 / 元素=字符串

域后缀列表,也称为 DNS 搜索路径。

默认 domain 参数。

Linux 和 Windows 自定义通用。

domain

字符串

要使用的 DNS 域名。

Linux 和 Windows 自定义通用。

domainadmin

字符串

用于加入 AD 域的用户。

如果指定了 customization.joindomain,则为必填项。

特定于 Windows 自定义。

domainadminpassword

字符串

用于加入 AD 域的密码。

如果指定了 customization.joindomain,则为必填项。

特定于 Windows 自定义。

existing_vm

布尔值

如果设置为 true,则直接在指定的虚拟机上进行操作系统自定义。

Linux 和 Windows 自定义通用。

选择

fullname

字符串

服务器所有者名称。

特定于 Windows 自定义。

如果未设置,则将使用“Administrator”作为后备名称。

hostname

字符串

计算机主机名。

默认为缩短的 name 参数。

允许的字符为字母数字(大写和小写)和减号,其余字符根据 RFC 952 删除。

Linux 和 Windows 自定义通用。

hwclockUTC

布尔值

指定硬件时钟是使用 UTC 还是本地时间。

特定于 Linux 自定义。

选择

joindomain

字符串

要加入的 AD 域。

customization.joinworkgroup 不兼容。

特定于 Windows 自定义。

joinworkgroup

字符串

要加入的工作组。

customization.joindomain 不兼容。

特定于 Windows 自定义。

如果未设置,则将使用“WORKGROUP”作为后备名称。

orgname

字符串

组织名称。

特定于 Windows 自定义。

如果未设置,则将使用“ACME”作为后备名称。

password

字符串

本地管理员密码。

如果未定义,则密码将设置为空白(即没有密码)。

特定于 Windows 自定义。

productid

字符串

产品 ID。

特定于 Windows 自定义。

runonce

列表 / 元素=字符串

在首次用户登录时运行的命令列表。

特定于 Windows 自定义。

script_text

字符串

在 community.vmware 3.1.0 中添加

要使用 shebang 运行的脚本。

需要在 vmware tools 中使用 vmware-toolbox-cmd config set deployPkg enable-custom-scripts true 启用

https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-9A5093A5-C54F-4502-941B-3F9C0F573A39.html

特定于 Linux 自定义。

timezone

字符串

时区。

请参阅 Linux/Unix 中不同 vSphere 版本支持的时区列表。

Linux 和 Windows 自定义通用。

Windows.

customization_spec

字符串

标识所请求的自定义规范的唯一名称。

如果设置,则会覆盖 customization 参数值。

customvalues

列表 / 元素=字典

定义要在虚拟机上设置的自定义值列表。

自定义值对象采用两个字段 keyvalue

不正确的键和值将被忽略。

默认值: []

datacenter

字符串

部署操作的目标数据中心。

默认值: "ha-datacenter"

datastore

字符串

指定用于配置虚拟机的数据存储或数据存储群集。

此参数优先于 disk[].datastore 参数。

此参数可用于在从模板部署虚拟机时覆盖虚拟机的数据存储或数据存储群集设置。

请参阅示例以了解更多用法。

delete_from_inventory

布尔值

是从清单中删除虚拟机还是从磁盘中删除。

选择

  • false ← (默认)

disk

列表 / 元素=字典

要添加的磁盘列表。

不支持收缩磁盘。

不支持删除虚拟机的现有磁盘。

属性 disk[].controller_typedisk[].controller_numberdisk[].unit_number 用于配置多种类型的磁盘控制器和磁盘,以便创建或重新配置虚拟机。

默认值: []

autoselect_datastore

布尔值

选择使用较少的数据存储。

如果 datastore 在此 disk[] 配置之外指定,则不会使用 disk[].datastoredisk[].autoselect_datastore

选择

controller_number

整数

磁盘控制器总线编号。

每个 VM 的相同类型控制器的最大数量为 4。

选择

  • 0

  • 1

  • 2

  • 3

controller_type

字符串

磁盘控制器的类型。在不支持的 ESXi 或 VM 硬件版本上设置此类型将导致部署失败。

如果设置为 sata,请确保 disk[].unit_number 正确且未被 SATA CDROM 使用。

如果设置为 sata 类型,请确保在 cdrom=sata 时,disk[].controller_numberdisk[].unit_number 设置正确。

选择

  • "buslogic"

  • "lsilogic"

  • "lsilogicsas"

  • "paravirtual"

  • "sata"

  • "nvme"

datastore

字符串

将用于磁盘的数据存储的名称。

如果 disk[].autoselect_datastore 设置为 True,则会选择名称包含此“disk.datastore”字符串的使用较少的数据存储。

disk_mode

字符串

磁盘模式的类型。

如果指定 persistent,则更改会立即永久写入虚拟磁盘。这是默认设置。

如果指定 independent_persistent,则与 persistent 相同,但不受快照影响。

如果指定 independent_nonpersistent,则对虚拟磁盘的更改将写入重做日志,并在关机时丢弃,但不受快照影响。

选择

  • "persistent"

  • "independent_persistent"

  • "independent_nonpersistent"

filename

字符串

要使用的现有磁盘映像。

文件名必须已存在于数据存储中。

[datastore_name] path/to/file.vmdk 格式指定文件名字符串。

size

字符串

磁盘存储大小。

请指定存储单位,如 [kb、mb、gb、tb]。

size_gb

整数

磁盘存储大小(以 gb 为单位)。

size_kb

整数

磁盘存储大小(以 kb 为单位)。

size_mb

整数

磁盘存储大小(以 mb 为单位)。

size_tb

整数

磁盘存储大小(以 tb 为单位)。

type

字符串

磁盘的类型。

如果未指定,则磁盘类型在克隆时从源 VM 或模板继承,否则为厚磁盘,不进行急切置零。

选择

  • "thin"

  • "厚"

  • "急切置零厚"

unit_number

整数

磁盘单元号。

SCSI 控制器的有效值范围为 0 到 15,但 7 除外。

NVME 控制器的有效值范围为 0 到 14。

SATA 控制器的有效值范围为 0 到 29。

使用多种类型的磁盘控制器和磁盘创建或重新配置 VM 时,需要 disk[].controller_typedisk[].controller_numberdisk[].unit_number

创建新的 VM 时,disk[] 列表中的第一个配置的磁盘将是“硬盘 1”。

encryption

字典

在 community.vmware 3.9.0 中添加

管理虚拟机加密设置

默认值: {}

encrypted_ft

字符串

控制容错复制的加密

选择

  • "disabled"

  • "opportunistic"

  • "required"

encrypted_vmotion

字符串

控制使用 vmotion 进行实时迁移的加密

选择

  • "disabled"

  • "opportunistic"

  • "required"

esxi_hostname

字符串

虚拟机将运行的 ESXi 主机名。

如果未设置 cluster,则此为必填参数。

esxi_hostnamecluster 是互斥参数。

folder

字符串

目标文件夹,用于查找现有虚拟机或创建新虚拟机的绝对路径。

文件夹应包含数据中心。ESXi 的数据中心为 ha-datacenter。

如果找到多个同名计算机,则此参数用于标识

虚拟机的唯一性。

示例

文件夹:/ha-datacenter/vm

文件夹:ha-datacenter/vm

文件夹:/datacenter1/vm

文件夹:datacenter1/vm

文件夹:/datacenter1/vm/folder1

文件夹:datacenter1/vm/folder1

文件夹:/folder1/datacenter1/vm

文件夹:folder1/datacenter1/vm

文件夹:/folder1/datacenter1/vm/folder2

强制

布尔值

忽略警告并完成操作。

此参数在移除已开启电源的虚拟机时很有用。

此模块反映了 VMware vCenter API 和 UI 工作流程,因此,在某些情况下,必须使用 `force` 标志来执行操作,以确保您确定必须执行该操作,无论后果如何。这在移除已开启电源的虚拟机(当 state=absent 时)时尤其如此。

选择

  • false ← (默认)

guest_id

字符串

设置客户机 ID。

此字段在创建虚拟机时是必需的,从模板创建时则不需要。

有效值请参考此处:https://code.vmware.com/apis/358/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html

硬件

字典

管理虚拟机的硬件属性。

默认值: {}

boot_firmware

字符串

选择用于启动虚拟机的固件。

选择

  • "bios"

  • "efi"

cpu_limit

整数

虚拟机的 CPU 利用率不会超过此限制。

单位为 MHz。

cpu_reservation

整数

保证虚拟机可用的 CPU 资源量。

cpu_shares

整数

在 community.vmware 3.2.0 中添加

分配给此虚拟机的 CPU 份额数

cpu_shares_level 将自动设置为“custom”

cpu_shares_level

字符串

在 community.vmware 3.2.0 中添加

虚拟机的 CPU 资源分配级别。

选择

  • "low"

  • "normal"

  • "high"

  • "custom"

hotadd_cpu

布尔值

允许在虚拟机运行时添加虚拟 CPU。

选择

hotadd_memory

布尔值

允许在虚拟机运行时添加内存。

选择

hotremove_cpu

布尔值

允许在虚拟机运行时移除虚拟 CPU。

选择

iommu

布尔值

指定是否为此虚拟机启用 I/O MMU 的标志。

选择

max_connections

整数

虚拟机的最大活动远程显示连接数。

mem_limit

整数

虚拟机的内存利用率不会超过此限制。

单位为 MB。

mem_reservation

别名:memory_reservation

整数

保证虚拟机可用的内存资源量。

mem_shares

整数

在 community.vmware 3.2.0 中添加

分配给此虚拟机的内存份额数

mem_shares_level 将自动设置为“custom”

mem_shares_level

字符串

在 community.vmware 3.2.0 中添加

虚拟机的内存资源分配级别。

选择

  • "low"

  • "normal"

  • "high"

  • "custom"

memory_mb

整数

内存量(以 MB 为单位)。

memory_reservation_lock

布尔值

如果设置为 true,则锁定虚拟机的内存资源预留。

选择

nested_virt

布尔值

启用嵌套虚拟化。

选择

num_cpu_cores_per_socket

整数

每个插槽的内核数。

num_cpus

整数

CPU 数量。

必须是 hardware.num_cpu_cores_per_socket 的倍数。

例如,要创建具有 2 个插槽(每个插槽 4 个内核)的虚拟机,请将 hardware.num_cpus 指定为 8,将 hardware.num_cpu_cores_per_socket 指定为 4。

scsi

字符串

有效值为 buslogiclsilogiclsilogicsasparavirtual

paravirtual 是默认值。

选择

  • "buslogic"

  • "lsilogic"

  • "lsilogicsas"

  • "paravirtual"

secure_boot

布尔值

是否启用或禁用 (U)EFI 安全启动。

选择

version

字符串

虚拟机硬件版本。

默认值为 10(ESXi 5.5 及更高版本)。

如果设置为 latest,则会将指定的虚拟机升级到主机上支持的最新硬件版本。

请查看 VMware 文档以了解正确的虚拟机硬件版本。

不正确的硬件版本可能导致部署失败。如果硬件版本已等于给定的版本。

virt_based_security

布尔值

从硬件版本 14 开始,在 ESXi 6.7 及更高版本上为 Windows 启用基于虚拟化的安全功能。

支持的客户机操作系统为 Windows 10 64 位、Windows Server 2016、Windows Server 2019 及更高版本。

虚拟机的固件必须为 EFI,并且必须启用安全启动。

基于虚拟化的安全取决于嵌套虚拟化和 Intel 定向 I/O 虚拟化技术。

在不支持的 ESXi、硬件版本或固件上部署可能会导致失败或部署配置意外的虚拟机。

选择

vpmc_enabled

布尔值

在 community.vmware 3.2.0 中添加

启用虚拟 CPU 性能计数器。

选择

hostname

字符串

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

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

is_template

布尔值

将实例标记为模板。

这将把给定的虚拟机标记为模板。

请注意,这可能需要在专用的任务调用中完成,该调用不进行任何其他更改。例如,用户不能在同一任务中将状态从已开启电源更改为已关闭电源,并另存为模板。

有关更多详细信息,请参阅 community.vmware.vmware_guest 源代码。

选择

  • false ← (默认)

linked_clone

布尔值

是否从指定的快照创建链接克隆。

如果指定,则 snapshot_src 是必需参数。

选择

  • false ← (默认)

name

字符串

要使用的虚拟机名称。

vCenter 中的虚拟机名称不一定是唯一的,这可能会有问题,请参阅 name_match

如果存在多个同名虚拟机,则需要 folder 参数来识别虚拟机的唯一性。

如果 state=poweredonstate=powered-onstate=poweredoffstate=powered-offstate=presentstate=restartedstate=suspended 且虚拟机不存在,则此参数为必需参数。

name_match

字符串

如果存在多个与名称匹配的虚拟机,则使用找到的第一个或最后一个。

选择

  • "first" ←(默认)

  • "last"

networks

列表 / 元素=字典

网络列表(按 NIC 的顺序排列)。

重新配置虚拟机时,不允许移除 NIC。

当创建空白的新虚拟机时,typeipnetmaskgatewaydomaindns_servers 选项不会设置到客户机。它们是通过 vmware-tools 进行自定义设置的。如果要将这些选项的值设置到客户机,则需要从安装了操作系统和 vmware-tools(Linux 系统还需要 Perl)的模板克隆。

默认值: []

connected

布尔值

指示 NIC 当前是否已连接。

选择

device_type

字符串

虚拟网络设备。

有效值可以是 e1000e1000epcnet32vmxnet2vmxnet3sriov 之一。

vmxnet3 是默认值。

每个条目可选。

用于虚拟硬件。

dns_servers

字符串

此网络接口的 DNS 服务器(Windows)。

每个条目可选。

用于操作系统自定义。

domain

字符串

此网络接口的域名(Windows)。

每个条目可选。

用于操作系统自定义。

dvswitch_name

字符串

分布式 vSwitch 的名称。

每个条目可选。

用于虚拟硬件。

gateway

字符串

静态网关。

每个条目可选。

用于操作系统自定义。

gatewayv6

字符串

在 community.vmware 4.1.0 中添加

静态网关。

每个条目可选。

用于操作系统自定义。

ip

字符串

静态 IP 地址。暗示 type=static

每个条目可选。

用于操作系统自定义。

ipv6

字符串

在 community.vmware 4.1.0 中添加

静态 IP 地址。暗示 type=static

每个条目可选。

用于操作系统自定义。

mac

字符串

自定义 MAC 地址。

每个条目可选。

用于虚拟硬件。

name

字符串

此接口的端口组或分布式虚拟端口组的名称。

每个条目都需要。

指定分布式虚拟端口组时,请确保给定的 esxi_hostnamecluster 与之关联。

子网掩码

字符串

ip 需要静态子网掩码。

每个条目可选。

用于操作系统自定义。

netmaskv6

字符串

在 community.vmware 4.1.0 中添加

ip 需要静态子网掩码。

每个条目可选。

用于操作系统自定义。

start_connected

布尔值

指定虚拟机启动时是否连接该设备。

选择

type

字符串

IP 分配类型。

有效值为 dhcpstatic 中的一个。

dhcp 为默认值。

每个条目可选。

用于操作系统自定义。

typev6

字符串

在 community.vmware 4.1.0 中添加

IP 分配类型。

有效值为 dhcpstatic 中的一个。

dhcp 为默认值。

每个条目可选。

用于操作系统自定义。

vlan

整数

此接口的 VLAN 号。

每个条目都需要。

nvdimm

字典

向虚拟机添加或删除虚拟 NVDIMM 设备。

在 vSphere 6.7 或更高版本上,VM 虚拟硬件版本必须为 14 或更高。

在添加虚拟 NVDIMM 设备之前,请验证虚拟机的客户操作系统是否支持 PMem。

验证您是否拥有虚拟机上的 *Datastore.Allocate* 空间权限。

确保虚拟机所在的宿主机或集群具有可用的 PMem 资源。

要向现有虚拟机添加或删除虚拟 NVDIMM 设备,它必须处于关闭电源状态。

默认值: {}

label

字符串

要移除或配置的虚拟 NVDIMM 设备的标签,例如 “NVDIMM 1”。

nvdimm.state=absentnvdimm.state=present 用于重新配置 NVDIMM 设备大小时,此参数是必需的。 添加新设备时,请勿设置。

size_mb

整数

虚拟 NVDIMM 设备大小,以 MB 为单位。

默认值: 1024

state

字符串

如果设置为 absent,则会删除具有指定 nvdimm.label 的 NVDIMM 设备。

选择

  • "present"

  • "absent"

password

别名:pass, pwd

字符串

vSphere vCenter 或 ESXi 服务器的密码。

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

port

整数

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

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

默认值: 443

proxy_host

字符串

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

格式为 hostname 或 IP。

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

proxy_port

整数

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

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

resource_pool

字符串

为虚拟机操作使用给定的资源池。

资源池应为所选宿主机父项的子项。

如果未指定,则默认值为 *Resources*。

snapshot_src

字符串

用于创建虚拟机克隆的现有快照的名称。

使用 linked_clone 参数创建链接克隆时,此参数是必需的。

state

字符串

指定虚拟机应处于的状态。

如果 present 且虚拟机存在,请确保虚拟机配置符合任务参数。

如果 absent 且虚拟机存在,则会删除指定的虚拟机及其关联的组件。

如果设置为 poweredonpowered-onpoweredoffpowered-offpresentrestartedsuspended 之一且虚拟机不存在,则会使用给定的参数部署虚拟机。

如果设置为 poweredonpowered-on 且虚拟机存在且电源状态不是“已开启”,则会开启指定的虚拟机。

如果设置为 poweredoffpowered-off 且虚拟机存在且电源状态不是“已关闭”,则会关闭指定的虚拟机。

如果设置为 restarted 且虚拟机存在,则会重启虚拟机。

如果设置为 suspended 且虚拟机存在,则会将虚拟机设置为挂起模式。

如果设置为 shutdownguestshutdown-guest 且虚拟机存在,则会关闭虚拟机。

如果设置为 rebootguestreboot-guest 且虚拟机存在,则会重启虚拟机。

选择

  • "absent"

  • "poweredon"

  • "powered-on"

  • "poweredoff"

  • "powered-off"

  • "present" ← (默认)

  • "rebootguest"

  • "reboot-guest"

  • "restarted"

  • "suspended"

  • "shutdownguest"

  • "shutdown-guest"

state_change_timeout

整数

如果 state=shutdownguest,默认情况下,模块将在发送关闭信号后立即返回。

如果此参数设置为正整数,则模块将等待虚拟机达到“已关闭电源”状态。

该值设置模块等待状态更改的超时时间(以秒为单位)。

默认值: 0

template

别名:template_src

字符串

用于创建新虚拟机的模板或现有虚拟机。

如果未设置此值,则会创建不使用模板的虚拟机。

如果虚拟机已存在,则会忽略此参数。

从 2.8 版本开始,可以使用虚拟机或模板的绝对路径。

use_instance_uuid

布尔值

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

选择

  • false ← (默认)

username

别名:admin, user

字符串

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

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

uuid

字符串

如果要管理虚拟机,则其 UUID(如果已知),这是 VMware 的唯一标识符。

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

如果虚拟机不存在,则会忽略此参数。

请注意,在虚拟机创建时,将忽略提供的 UUID,因为 VMware 会在内部创建 UUID。

validate_certs

布尔值

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

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

选择

  • true ←(默认)

vapp_properties

列表 / 元素=字典

vApp 属性的列表。

有关属性和类型的完整列表,请参阅:https://code.vmware.com/apis/704/vsphere/vim.vApp.PropertyInfo.html

默认值: []

id

字符串

属性 ID。

每个条目都需要。

operation

字符串

仅当删除属性时才需要 remove 属性。

type

字符串

值类型,默认情况下为字符串类型。

value

字符串

属性值。

wait_for_customization

布尔值

等待 vCenter 检测到所有客户机自定义已成功完成。

启用后,虚拟机将自动开启。

如果 vCenter 未检测到客户机自定义启动或成功,在超过 wait_for_customization_timeout 参数指定的时间后,将打印警告消息,并且任务结果将失败。

选择

  • false ← (默认)

wait_for_customization_timeout

整数

定义 wait_for_customization 参数的超时时间(以秒为单位)。

设置此值时请小心,因为不同客户机操作系统完成客户机自定义所需的时间可能不同。

默认值: 3600

wait_for_ip_address

布尔值

等待直到 vCenter 检测到虚拟机的 IP 地址。

这需要在创建后 vmware-tools (vmtoolsd) 能够正常工作。

为了使此参数生效,需要在给定的虚拟机上安装 vmware-tools。

选择

  • false ← (默认)

wait_for_ip_address_timeout

整数

定义 wait_for_ip_address 参数的超时时间(以秒为单位)。

默认值: 300

注释

注意

  • 请确保用于 community.vmware.vmware_guest 的用户具有正确的权限级别。

  • 例如,以下是用户创建虚拟机所需的最低权限列表。

  • 数据存储 > 分配空间

  • 虚拟机 > 配置 > 添加新磁盘

  • 虚拟机 > 配置 > 添加或移除设备

  • 虚拟机 > 清单 > 创建新

  • 网络 > 分配网络

  • 资源 > 将虚拟机分配到资源池

  • 模块可能还需要其他权限,例如收集事实信息所需的权限 - 例如 ESXi 配置。

  • 当您想通过指定 SCSI 控制器在线扩展磁盘时,请使用 SCSI 磁盘而不是 IDE 磁盘。

  • 使用 SysPrep 进行 Windows VM (取决于 ‘guest_id’ 参数是否匹配 ‘win’) 以及 PyVmomi。

  • 为了更改虚拟机的参数(例如 CPU 数量),必须关闭虚拟机电源,除非启用了热添加支持,并且必须使用 state=present 来应用更改。

  • 有关更多信息,请访问 Ansible VMware 社区 Wiki - https://github.com/ansible/community/wiki/VMware

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

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

示例

- name: Create a virtual machine on given ESXi hostname
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    folder: /DC1/vm/
    name: test_vm_0001
    state: poweredon
    guest_id: centos64Guest
    # This is hostname of particular ESXi server on which user wants VM to be deployed
    esxi_hostname: "{{ esxi_hostname }}"
    disk:
    - size_gb: 10
      type: thin
      datastore: datastore1
    hardware:
      memory_mb: 512
      num_cpus: 4
      scsi: paravirtual
    networks:
    - name: VM Network
      mac: aa:bb:dd:aa:00:14
      ip: 10.10.10.100
      netmask: 255.255.255.0
      device_type: vmxnet3
    wait_for_ip_address: true
    wait_for_ip_address_timeout: 600
  delegate_to: localhost
  register: deploy_vm

- name: Create a virtual machine from a template
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    folder: /testvms
    name: testvm_2
    state: poweredon
    template: template_el7
    disk:
    - size_gb: 10
      type: thin
      datastore: g73_datastore
    # Add another disk from an existing VMDK
    - filename: "[datastore1] testvms/testvm_2_1/testvm_2_1.vmdk"
    hardware:
      memory_mb: 512
      num_cpus: 6
      num_cpu_cores_per_socket: 3
      scsi: paravirtual
      memory_reservation_lock: true
      mem_limit: 8096
      mem_reservation: 4096
      cpu_shares_level: "high"
      mem_shares_level: "high"
      cpu_limit: 8096
      cpu_reservation: 4096
      max_connections: 5
      hotadd_cpu: true
      hotremove_cpu: true
      hotadd_memory: false
      version: 12 # Hardware version of virtual machine
      boot_firmware: "efi"
    cdrom:
        - controller_number: 0
          unit_number: 0
          state: present
          type: iso
          iso_path: "[datastore1] livecd.iso"
    networks:
    - name: VM Network
      mac: aa:bb:dd:aa:00:14
    wait_for_ip_address: true
  delegate_to: localhost
  register: deploy

- name: Clone a virtual machine from Windows template and customize
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: datacenter1
    cluster: cluster
    name: testvm-2
    template: template_windows
    networks:
    - name: VM Network
      ip: 192.168.1.100
      netmask: 255.255.255.0
      gateway: 192.168.1.1
      mac: aa:bb:dd:aa:00:14
      domain: my_domain
      dns_servers:
      - 192.168.1.1
      - 192.168.1.2
    - vlan: 1234
      type: dhcp
    customization:
      autologon: true
      dns_servers:
      - 192.168.1.1
      - 192.168.1.2
      domain: my_domain
      password: new_vm_password
      runonce:
      - powershell.exe -ExecutionPolicy Unrestricted -File C:\Windows\Temp\ConfigureRemotingForAnsible.ps1 -ForceNewSSLCert -EnableCredSSP
  delegate_to: localhost

- name:  Clone a virtual machine from Linux template and customize
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter }}"
    state: present
    folder: /DC1/vm
    template: "{{ template }}"
    name: "{{ vm_name }}"
    cluster: DC1_C1
    networks:
      - name: VM Network
        ip: 192.168.10.11
        netmask: 255.255.255.0
    wait_for_ip_address: true
    customization:
      domain: "{{ guest_domain }}"
      dns_servers:
        - 8.9.9.9
        - 7.8.8.9
      dns_suffix:
        - example.com
        - example2.com
      script_text: |
        #!/bin/bash
        touch /tmp/touch-from-playbook
  delegate_to: localhost

- name: Rename a virtual machine (requires the virtual machine's uuid)
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    uuid: "{{ vm_uuid }}"
    name: new_name
    state: present
  delegate_to: localhost

- name: Remove a virtual machine by uuid
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    uuid: "{{ vm_uuid }}"
    state: absent
  delegate_to: localhost

- name: Remove a virtual machine from inventory
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    name: vm_name
    delete_from_inventory: true
    state: absent
  delegate_to: localhost

- name: Manipulate vApp properties
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    name: vm_name
    state: present
    vapp_properties:
      - id: remoteIP
        category: Backup
        label: Backup server IP
        type: string
        value: 10.10.10.1
      - id: old_property
        operation: remove
  delegate_to: localhost

- name: Set powerstate of a virtual machine to poweroff by using UUID
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    uuid: "{{ vm_uuid }}"
    state: poweredoff
  delegate_to: localhost

- name: Deploy a virtual machine in a datastore different from the datastore of the template
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    name: "{{ vm_name }}"
    state: present
    template: "{{ template_name }}"
    # Here datastore can be different which holds template
    datastore: "{{ virtual_machine_datastore }}"
    hardware:
      memory_mb: 512
      num_cpus: 2
      scsi: paravirtual
  delegate_to: localhost

- name: Create a diskless VM
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ dc1 }}"
    state: poweredoff
    cluster: "{{ ccr1 }}"
    name: diskless_vm
    folder: /Asia-Datacenter1/vm
    guest_id: centos64Guest
    datastore: "{{ ds1 }}"
    hardware:
        memory_mb: 1024
        num_cpus: 2
        num_cpu_cores_per_socket: 1

- name: Create a VM with multiple disks of different disk controller types
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    folder: /DC1/vm/
    name: test_vm_multi_disks
    state: poweredoff
    guest_id: centos64Guest
    datastore: datastore1
    disk:
    - size_gb: 10
      controller_type: 'nvme'
      controller_number: 0
      unit_number: 0
    - size_gb: 10
      controller_type: 'paravirtual'
      controller_number: 0
      unit_number: 1
    - size_gb: 10
      controller_type: 'sata'
      controller_number: 0
      unit_number: 2
    hardware:
      memory_mb: 512
      num_cpus: 4
      version: 14
    networks:
    - name: VM Network
      device_type: vmxnet3
  delegate_to: localhost
  register: deploy_vm

- name: Create a VM with NVDIMM device
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    folder: /DC1/vm/
    name: test_vm_nvdimm
    state: poweredoff
    guest_id: centos7_64Guest
    datastore: datastore1
    hardware:
      memory_mb: 512
      num_cpus: 4
      version: 14
    networks:
    - name: VM Network
      device_type: vmxnet3
    nvdimm:
      state: present
      size_mb: 2048
  delegate_to: localhost
  register: deploy_vm

返回值

通用返回值记录在这里,以下是此模块特有的字段

描述

实例

字典

关于新虚拟机的元数据

返回: 总是

示例: "None"

作者

  • Loic Blot (@nerzhul)

  • Philippe Dellaert (@pdellaert)

  • Abhijeet Kasurde (@Akasurde)