vmware.vmware_rest.vcenter_vm 模块 – 创建虚拟机。
注意
此模块是 vmware.vmware_rest 集合(版本 4.3.0)的一部分。
如果您正在使用 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install vmware.vmware_rest
。您需要其他要求才能使用此模块,请参阅 要求 了解详细信息。
要在剧本中使用它,请指定:vmware.vmware_rest.vcenter_vm
。
vmware.vmware_rest 0.1.0 中的新功能
概要
创建虚拟机。
要求
执行此模块的主机需要满足以下要求。
vSphere 7.0.3 或更高版本
python >= 3.6
aiohttp
参数
参数 |
注释 |
---|---|
虚拟机的 128 位 SMBIOS UUID,表示为十六进制字符串,格式为“12345678-abcd-1234-cdef-123456789abc”。 如果未设置,则会生成。 |
|
启动配置。 如果未设置,将使用特定于客户机的默认值。 有效属性为
如果未设置,则默认为建议用于客户机操作系统且受虚拟硬件版本支持的值。(['present'])
如果未设置,则默认值为 0。(['present'])
如果未设置,则默认值为 false。(['present'])
如果未设置,则默认值为 10000。(['present'])
如果未设置,则该值保持不变。(['present']) |
|
启动设备配置。 如果未设置,则将使用特定于服务器的启动顺序。 有效属性为
此键是 ['present'] 所必需的。
|
|
CD-ROM 的列表。 如果未设置,则不会创建 CD-ROM 设备。 有效属性为
如果未设置,服务器将选择可用地址;如果没有任何可用地址,则请求将失败。(['present'])
如果未设置,服务器将选择具有可用连接的适配器。如果没有可用的 IDE 连接,则请求将被拒绝。
如果未设置,服务器将选择可用的连接类型。如果没有可用的 IDE 连接,则请求将被拒绝。
如果未设置,服务器将选择可用地址;如果没有任何可用地址,则请求将失败。(['present'])
如果未设置,服务器将选择指定适配器上的可用单元编号。如果适配器上没有可用的连接,则请求将被拒绝。
如果未设置,则默认为自动检测合适的主机设备。(['present'])
此字段的接受值
此字段是可选的,仅当 type 的值为 ISO_FILE 时才相关。
如果未设置,虚拟 CD-ROM 设备将配置为自动检测合适的主机设备。
此字段的接受值
如果未设置,则默认为 false。(['present'])
如果未设置,则默认为 false。(['present']) |
|
CPU 配置。 如果未设置,将使用特定于客户机的默认值。 有效属性为
支持的 CPU 核心数范围受虚拟机的已配置客户操作系统和虚拟硬件版本的约束。 如果虚拟机正在运行,则只有当 hot_add_enabled 为 true 时才能增加 CPU 核心数,并且只有当 hot_remove_enabled 为 true 时才能减少 CPU 核心数。 如果未设置,则该值保持不变。(['present'])
如果未设置,则该值保持不变。(['present'])
只有在虚拟机关闭电源时才能修改此字段。 如果未设置,则该值保持不变。(['present'])
只有在虚拟机关闭电源时才能修改此字段。 如果未设置,则该值保持不变。(['present']) |
|
用于存储虚拟机配置状态的数据存储标识符。 如果未设置,则 path 也必须未设置,并且 datastore_path 必须已设置。 当客户端传递此结构的值作为参数时,该字段必须是 vmware.vmware_rest.vcenter_datastore_info 返回的资源的 ID。 |
|
虚拟机配置文件的存储路径,格式为“[数据存储名称]路径”。例如“[storage1] Test-VM/Test-VM.vmx”。 如果未设置,则 datastore 和 path 都必须已设置。 |
|
指示是否应将目标虚拟机上的所有 NIC 与网络断开连接 如果未设置,则目标虚拟机上所有 NIC 的连接状态将与源虚拟机上的相同。 选择
|
|
各个磁盘重新定位映射。 如果未设置,则所有磁盘都将迁移到 的 datastore 字段中指定的数据存储。 当客户端传递此结构的值作为参数时,字段映射中的键必须是 vmware.vmware_rest.vcenter_vm_hardware_disk 返回的资源的 ID。 有效属性为
如果未设置,服务器将选择可用地址;如果没有任何可用地址,则请求将失败。(['present'])
如果未设置,服务器将选择具有可用连接的适配器。如果没有可用的 IDE 连接,则请求将被拒绝。
如果未设置,服务器将选择可用的连接类型。如果没有可用的 IDE 连接,则请求将被拒绝。
如果未设置,服务器将选择可用地址;如果没有任何可用地址,则请求将失败。(['present'])
如果未设置,服务器将选择指定适配器上的可用单元编号。如果适配器上没有可用的连接,则请求将被拒绝。
如果未设置,服务器将选择可用地址;如果没有任何可用地址,则请求将失败。(['present'])
如果未设置,服务器将选择指定适配器上的可用单元编号。如果适配器上没有可用的连接,则请求将被拒绝。
如果未设置,服务器将选择可用地址;如果没有任何可用地址,则请求将失败。(['present'])
如果未设置,服务器将选择指定适配器上的可用单元编号。如果适配器上没有可用的连接,则请求将被拒绝。
如果未设置,则虚拟磁盘将不会连接到现有后备。(['present'])
此字段的接受值
此字段是可选的,并且仅当 type 的值为 VMDK_FILE 时才相关。
如果未设置,则不会创建新的 VMDK 后备。(['present'])
如果未设置,则服务器将选择一个名称(从虚拟机的名称派生)。
如果未设置,则默认为特定于客户机的容量。
如果未设置,则应用目标数据存储的默认存储策略(如果适用)。目前,只有基于对象的数据存储(VVol 和 vSAN)支持默认存储策略。对于非对象数据存储,如果未设置,则不会与 VMDK 文件关联任何存储策略。 |
|
要删除的磁盘集。 如果未设置,则将复制所有磁盘。如果 disks_to_update 中存在相同的标识符,则将返回 InvalidArgument 错误。 当客户端传递此结构的值作为参数时,该字段必须包含 vmware.vmware_rest.vcenter_vm_hardware_disk 返回的资源的 ID。 |
|
要更新的磁盘的映射。 如果未设置,则所有磁盘都将复制到 的 datastore 字段中指定的数据存储。如果 disks_to_remove 中存在相同的标识符,则将引发 InvalidArgument 错误。 当客户端传递此结构的值作为参数时,字段映射中的键必须是 vmware.vmware_rest.vcenter_vm_hardware_disk 返回的资源的 ID。 |
|
软盘驱动器的列表。 如果未设置,则不会创建软盘驱动器。 有效属性为
如果未设置,则默认为自动检测合适的主机设备。(['present'])
此字段的接受值
此字段是可选的,并且仅当 type 的值为 IMAGE_FILE 时才相关。
如果未设置,则虚拟软盘驱动器将配置为自动检测合适的主机设备。
如果未设置,则默认为 false。(['present'])
如果未设置,则默认为 false。(['present']) |
|
在部署虚拟机后应用到虚拟机的客户机自定义规范。 如果未设置,则克隆后不会自定义客户机操作系统。 有效属性为
如果未设置,则不执行任何客户机自定义。(['clone']) |
|
GuestOS 枚举类型定义用于配置虚拟机的有效客户机操作系统类型。当 state=[‘present’] 时是必需的。 选择
|
|
version 枚举类型定义虚拟机的有效虚拟硬件版本。请参见 https://kb.vmware.com/s/article/1003746 (虚拟机硬件版本 (1003746))。 选择
|
|
内存配置。 如果未设置,将使用特定于客户机的默认值。 有效属性为
支持的内存大小范围受虚拟机配置的客户操作系统和虚拟硬件版本的限制。 如果虚拟机正在运行,只有当 hot_add_enabled 为 true 时,才能更改此值,并且新的内存大小必须满足 hot_add_increment_size_mib 和 指定的约束。 如果未设置,则该值保持不变。(['present'])
某些客户操作系统在支持运行时添加内存的硬件上运行时,可能会消耗更多资源或效率较低。 只有在虚拟机未开机时才能修改此字段。 如果未设置,则该值保持不变。(['present']) |
|
虚拟机名称。 如果未设置,将使用虚拟机配置文件的显示名称。 |
|
以太网适配器列表。 如果未设置,则不会创建任何以太网适配器。 有效属性为
如果未设置,则不会在新创建的虚拟以太网适配器上启用 UPT。 (['present'])
PR1459647 的解决方法 (['present'])
如果未设置,服务器将在虚拟机开机时选择一个可用地址。 (['present'])
如果未设置,则默认为 false。(['present'])
如果未设置,系统可能会尝试查找合适的后备资源。如果找不到,则请求将失败。 (['present'])
此字段的接受值
此字段是可选的,并且仅当 type 的值是 STANDARD_PORTGROUP、DISTRIBUTED_PORTGROUP 或 OPAQUE_NETWORK 之一时才相关。 当客户端将此结构的值作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_network_info 返回的资源的 ID。
当 network 字段上指定的网络是静态或早期绑定的分布式端口组时,可用于指定端口。 如果未设置,则将根据端口组类型所体现的策略自动将端口分配给以太网适配器。
如果未设置,则默认为 false。(['present'])
如果未设置,则默认为 false。(['present']) |
|
要更新的网卡映射。 如果未设置,则不会更新任何网卡。 当客户端将此结构的值作为参数传递时,字段映射中的键必须是由 vmware.vmware_rest.vcenter_vm_hardware_ethernet 返回的资源的 ID。 |
|
NVMe 适配器列表。 如果未设置,则会创建连接虚拟机存储设备所需的任何适配器;这包括任何显式指定 NVMe 主机总线适配器的设备,以及任何在客户机的首选适配器类型为 NVMe 时未指定主机总线适配器的设备。 有效属性为
如果未设置,服务器将选择一个可用的总线编号;如果没有任何可用的总线编号,则请求将失败。 (['present'])
如果未设置,服务器将在虚拟机开机时选择一个可用地址。 (['present']) |
|
并行端口列表。 如果未设置,则不会创建任何并行端口。 有效属性为
如果未设置,则默认为自动检测合适的主机设备。(['present'])
此字段的接受值
此字段是可选的,并且仅当 type 的值为 FILE 时才相关。
如果未设置,虚拟并行端口将配置为自动检测合适的主机设备。
如果未设置,则默认为 false。(['present'])
如果未设置,则默认为 false。(['present']) |
|
要更新的并行端口映射。 如果未设置,则不会更新任何并行端口。 当客户端将此结构的值作为参数传递时,字段映射中的键必须是由 vmware.vmware_rest.vcenter_vm_hardware_parallel 返回的资源的 ID。 |
|
虚拟机在与 {@link #datastore) 对应的 datastore 上的配置文件的路径。 如果未设置,则 datastore 也必须未设置,并且必须设置 datastore_path。 |
|
虚拟机放置信息。 如果未设置此字段,系统将使用源虚拟机的值。 如果指定,则每个字段将用于放置。 如果字段导致不相交的放置,则操作将失败。 如果字段与虚拟机其他现有的放置导致不相交的放置,则操作将失败。 有效属性为
如果未设置此字段,虚拟机将保留在当前文件夹中。 当客户端将此结构的值作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_folder_info 返回的资源的 ID。 (['clone', 'instant_clone', 'present', 'register', 'relocate'])
如果未设置此字段,虚拟机将保留在当前资源池中。 当客户端将此结构的值作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_resourcepool_info 返回的资源的 ID。 (['clone', 'instant_clone', 'present', 'register', 'relocate'])
如果同时指定了 host 和 resource_pool,则 resource_pool 必须属于 host。 如果同时指定了 host 和 cluster,则 host 必须是 cluster 的成员。 如果未设置此字段,如果 resource_pool 未设置,则虚拟机将保留在当前宿主机上。 如果设置了 resource_pool,并且目标是独立的宿主机,则使用该宿主机。 如果设置了 resource_pool,并且目标是 DRS 集群,则 DRS 将选择一个宿主机。 如果设置了 resource_pool,并且目标是没有 DRS 的集群,则会抛出 InvalidArgument。 当客户端将此结构的值作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_host_info 返回的资源的 ID。 (['clone', 'present', 'register', 'relocate'])
如果同时指定了 cluster 和 resource_pool,则 resource_pool 必须属于 cluster。 如果同时指定了 cluster 和 host,则 host 必须是 cluster 的成员。 如果指定了 resource_pool 或 host,建议不设置此字段。 当客户端将此结构的值作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_cluster_info 返回的资源的 ID。 (['clone', 'present', 'register', 'relocate'])
如果未设置此字段,虚拟机将保留在当前数据存储上。 当客户端将此结构的值作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_datastore_info 返回的资源的 ID。 (['clone', 'instant_clone', 'present', 'relocate']) |
|
在克隆后尝试执行 power_on。 如果未设置,则不会启动虚拟机。 选择
|
|
SATA 适配器列表。 如果未设置,则会创建连接虚拟机存储设备所需的任何适配器;这包括任何显式指定 SATA 主机总线适配器的设备,以及任何在客户机的首选适配器类型为 SATA 时未指定主机总线适配器的设备。 有效属性为
如果未设置,服务器将选择一个可用的总线编号;如果没有任何可用的总线编号,则请求将失败。 (['present'])
如果未设置,服务器将在虚拟机开机时选择一个可用地址。 (['present']) |
|
SCSI 适配器列表。 如果未设置,则会创建连接虚拟机存储设备所需的任何适配器;这包括任何显式指定 SCSI 主机总线适配器的设备,以及任何在客户机的首选适配器类型为 SCSI 时未指定主机总线适配器的设备。 SCSI 适配器的类型将是特定于客户机的默认类型。 有效属性为
如果未设置,服务器将选择一个可用的总线编号;如果没有任何可用的总线编号,则请求将失败。 (['present'])
如果未设置,服务器将在虚拟机开机时选择一个可用地址。 (['present'])
|
|
串行端口列表。 如果未设置,则不会创建串行端口。 有效属性为
如果未设置,则默认为 false。([‘present’])
如果未设置,则默认为自动检测合适的主机设备。(['present'])
此字段的接受值
此字段是可选的,并且仅当 type 的值为 FILE 时才相关。
如果未设置,虚拟串行端口将配置为自动检测合适的主机设备。
此字段是可选的,仅当 type 的值为 PIPE_SERVER 或 PIPE_CLIENT 之一时才相关。
如果未设置,则默认为 false。
此字段是可选的,仅当 type 的值为 NETWORK_SERVER 或 NETWORK_CLIENT 之一时才相关。
如果未设置,则不应使用代理服务。
如果未设置,则默认为 false。(['present'])
如果未设置,则默认为 false。(['present']) |
|
要更新的串行端口的映射。 如果未设置,则不会更新串行端口。 当客户端将此结构的value作为参数传递时,字段映射中的键必须是由 vmware.vmware_rest.vcenter_vm_hardware_serial 返回的资源的 id。 |
|
客户端会话的超时设置。 整个操作(包括连接建立、请求发送和响应)的最大秒数。 默认值为 300 秒。 |
|
从中进行 InstantClone 的虚拟机。 当客户端将此结构的value作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_vm_info 返回的资源的 id。state=[‘clone’, ‘instant_clone’] 时为必需项 |
|
选择
|
|
storage_policy_spec 结构包含有关将与虚拟机主目录(其中包含配置和日志文件)关联的存储策略的信息。 如果未设置,则应用数据存储默认存储策略(如果适用)。当前,对象数据存储(VVol 和 vSAN)仅支持默认存储策略。对于非对象数据存储,如果未设置,则不会将存储策略与虚拟机主目录关联。state=[‘present’] 时为必需项 有效属性为
当客户端将此结构的value作为参数传递时,该字段必须是由 vmware.vmware_rest.vcenter_storage_policies_info 返回的资源的 id。([‘present’]) 此键是 ['present'] 所必需的。 |
|
vSphere vCenter 的主机名或 IP 地址 如果未在任务中指定该value,则将改为使用环境变量 |
|
vSphere vCenter 密码 如果未在任务中指定该value,则将改为使用环境变量 |
|
您可以使用此可选参数来设置日志文件的位置。 此文件将用于记录 HTTP REST 交互。 该文件将存储在运行该模块的主机上。 如果未在任务中指定该value,则将使用 环境变量 |
|
vSphere vCenter 用户名 如果未在任务中指定该value,则将改为使用环境变量 |
|
当 SSL 证书无效时允许连接。当证书不受信任时设置为 如果未在任务中指定该value,则将改为使用环境变量 选择
|
|
要取消注册的虚拟机的标识符。 该参数必须是由 vmware.vmware_rest.vcenter_vm_info 返回的资源的 id。state=[‘absent’, ‘relocate’, ‘unregister’] 时为必需项 |
注释
注意
在 vSphere 7.0.3 上测试
示例
- name: Create a VM
vmware.vmware_rest.vcenter_vm:
placement:
cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/my_dc/host/my_cluster') }}"
datastore: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/rw_datastore') }}"
folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}"
resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}"
name: test_vm1
guest_OS: RHEL_7_64
hardware_version: VMX_11
memory:
hot_add_enabled: true
size_MiB: 1024
register: my_vm
- name: Create a VM
vmware.vmware_rest.vcenter_vm:
placement:
cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/my_dc/host/my_cluster') }}"
datastore: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/local') }}"
folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}"
resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}"
name: test_vm1
guest_OS: RHEL_7_64
hardware_version: VMX_11
memory:
hot_add_enabled: true
size_MiB: 1024
disks:
- type: SATA
backing:
type: VMDK_FILE
vmdk_file: '[local] test_vm1/{{ disk_name }}.vmdk'
- type: SATA
new_vmdk:
name: second_disk
capacity: 32000000000
cdroms:
- type: SATA
sata:
bus: 0
unit: 2
nics:
- backing:
type: STANDARD_PORTGROUP
network: "{{ lookup('vmware.vmware_rest.network_moid', '/my_dc/network/VM Network') }}"
register: my_vm
- name: Create a content library based on a DataStore
vmware.vmware_rest.content_locallibrary:
name: my_library_on_datastore
description: automated
publish_info:
published: true
authentication_method: NONE
storage_backings:
- datastore_id: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/local') }}"
type: DATASTORE
state: present
register: nfs_lib
- name: Get the list of items of the NFS library
vmware.vmware_rest.content_library_item_info:
library_id: '{{ nfs_lib.id }}'
register: lib_items
- name: Use the name to identify the item
set_fact:
my_template_item: "{{ lib_items.value | selectattr('name', 'equalto', 'golden-template')|first }}"
- name: Deploy a new VM based on the template
vmware.vmware_rest.vcenter_vmtemplate_libraryitems:
name: vm-from-template
library: '{{ nfs_lib.id }}'
template_library_item: '{{ my_template_item.id }}'
placement:
cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/my_dc/host/my_cluster') }}"
folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}"
resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}"
state: deploy
register: my_new_vm
- name: Retrieve all the details about the new VM
vmware.vmware_rest.vcenter_vm:
vm: '{{ my_new_vm.value }}'
register: my_new_vm_info
- name: Create an instant clone of a VM
vmware.vmware_rest.vcenter_vm:
placement:
datastore: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/local') }}"
folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}"
resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}"
source: '{{ my_vm.id }}'
name: test_vm2
state: instant_clone
register: my_instant_clone
- name: Create a clone of a VM
vmware.vmware_rest.vcenter_vm:
placement:
datastore: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/local') }}"
folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}"
resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}"
source: '{{ my_vm.id }}'
name: test_vm3
state: clone
register: my_clone_vm
- name: Build a list of all the clusters
vmware.vmware_rest.vcenter_cluster_info:
register: all_the_clusters
- name: Retrieve details about the first cluster
vmware.vmware_rest.vcenter_cluster_info:
cluster: '{{ all_the_clusters.value[0].cluster }}'
register: my_cluster_info
- name: Build a list of all the folders with the type VIRTUAL_MACHINE and called vm
vmware.vmware_rest.vcenter_folder_info:
filter_type: VIRTUAL_MACHINE
filter_names:
- vm
register: my_folders
- name: Set my_virtual_machine_folder
ansible.builtin.set_fact:
my_virtual_machine_folder: '{{ my_folders.value|first }}'
- name: Create a VM
vmware.vmware_rest.vcenter_vm:
placement:
cluster: '{{ my_cluster_info.id }}'
datastore: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/local') }}"
folder: '{{ my_virtual_machine_folder.folder }}'
resource_pool: '{{ my_cluster_info.value.resource_pool }}'
name: test_vm1
guest_OS: DEBIAN_7_64
hardware_version: VMX_10
memory:
hot_add_enabled: true
size_MiB: 1024
register: my_vm
返回值
常见的返回值记录在此处 here,以下是此模块独有的字段
键 |
描述 |
---|---|
资源的 moid 返回: 成功时 示例: |
|
创建虚拟机的即时克隆 返回: 成功时 示例: |