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"

  • "thick"

  • "eagerzeroedthick"

customization

字典

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

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

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

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

默认值: {}

autologon

布尔值

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

特定于 Windows 自定义。

选项

  • false

  • true

autologoncount

整数

重启后自动登录的次数。

特定于 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 自定义通用。

选项

  • false

  • true

fullname

字符串

服务器所有者名称。

特定于 Windows 自定义。

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

hostname

字符串

计算机主机名。

默认为缩短的 name 参数。

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

Linux 和 Windows 自定义通用。

hwclockUTC

布尔值

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

特定于 Linux 自定义。

选项

  • false

  • true

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 ← (默认)

  • true

disk

列表 / 元素=字典

要添加的磁盘列表。

不支持收缩磁盘。

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

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

默认值: []

autoselect_datastore

布尔值

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

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

选项

  • false

  • true

controller_number

整数

磁盘控制器总线号。

每个虚拟机最多支持 4 个相同类型的控制器。

选项

  • 0

  • 1

  • 2

  • 3

controller_type

字符串

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

设置为 sata 时,请确保 disk[].unit_number 正确,并且未被 SATA CD-ROM 使用。

如果设置为 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

字符串

磁盘的类型。

如果未指定,则在克隆时,磁盘类型将从源虚拟机或模板继承,否则为厚磁盘,没有 eagerzero。

选项

  • "thin"

  • "thick"

  • "eagerzeroedthick"

unit_number

整数

磁盘单元号。

SCSI 控制器的有效值范围为 0 到 15,但不包括 7。

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

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

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

创建新的虚拟机时,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。

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

虚拟机的唯一性。

示例

folder: /ha-datacenter/vm

folder: ha-datacenter/vm

folder: /datacenter1/vm

folder: datacenter1/vm

folder: /datacenter1/vm/folder1

folder: datacenter1/vm/folder1

folder: /folder1/datacenter1/vm

folder: folder1/datacenter1/vm

folder: /folder1/datacenter1/vm/folder2

force

布尔值

忽略警告并完成操作。

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

此模块反映了 VMware vCenter API 和 UI 工作流程,因此,在某些情况下,`force` 标志将是强制性的,以执行操作,以确保您确定必须执行操作,无论后果如何。 这尤其适用于在 state=absent 时删除已打开电源的虚拟机。

选项

  • false ← (默认)

  • true

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。

选项

  • false

  • true

hotadd_memory

布尔值

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

选项

  • false

  • true

hotremove_cpu

布尔值

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

选项

  • false

  • true

iommu

布尔值

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

选项

  • false

  • true

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,则锁定虚拟机的内存资源预留。

选项

  • false

  • true

nested_virt

布尔值

启用嵌套虚拟化。

选项

  • false

  • true

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 安全启动。

选项

  • false

  • true

version

字符串

虚拟机硬件版本。

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

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

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

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

virt_based_security

布尔值

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

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

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

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

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

选项

  • false

  • true

vpmc_enabled

布尔值

在 community.vmware 3.2.0 中添加

启用虚拟 CPU 性能计数器。

选项

  • false

  • true

hostname

字符串

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

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

is_template

布尔值

将实例标记为模板。

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

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

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

选项

  • false ← (默认)

  • true

linked_clone

布尔值

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

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

选项

  • false ← (默认)

  • true

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 当前是否已连接。

选项

  • false

  • true

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 与其关联。

netmask

字符串

ip 所需的静态子网掩码。

每个条目都是可选的。

用于操作系统自定义。

netmaskv6

字符串

在 community.vmware 4.1.0 中添加

ip 所需的静态子网掩码。

每个条目都是可选的。

用于操作系统自定义。

start_connected

布尔值

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

选项

  • false

  • true

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 的值。

端口

整数

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

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

默认值: 443

proxy_host

字符串

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

格式为主机名或 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 ← (默认)

  • true

username

别名: admin, user

字符串

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

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

uuid

字符串

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

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

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

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

validate_certs

布尔值

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

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

选项

  • false

  • 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 ← (默认)

  • true

wait_for_customization_timeout

整数

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

设置此值时请小心,因为客户机自定义所花费的时间可能因客户机操作系统而异。

默认值: 3600

wait_for_ip_address

布尔值

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

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

需要在给定的虚拟机上安装 vmware-tools 才能使用此参数。

选项

  • false ← (默认)

  • true

wait_for_ip_address_timeout

整数

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

默认值: 300

注意

注意

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

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

  • 数据存储 > 分配空间

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

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

  • 虚拟机 > 清单 > 创建新项

  • 网络 > 分配网络

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

  • 模块可能还需要其他特权,这些特权可能用于收集事实 - 例如,ESXi 配置。

  • 如果要通过指定 SCSI 控制器来在线扩展磁盘,请使用 SCSI 磁盘而不是 IDE 磁盘。

  • 将 SysPrep 用于带有 PyVmomi 的 Windows VM(取决于 ‘guest_id’ 参数匹配 ‘win’)。

  • 为了更改虚拟机的参数(例如,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

返回值

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

描述

instance

字典

有关新虚拟机的元数据

返回值: 始终

示例: "None"

作者

  • Loic Blot (@nerzhul)

  • Philippe Dellaert (@pdellaert)

  • Abhijeet Kasurde (@Akasurde)