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
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定: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’]时必需。 选项
|
|
版本枚举类型定义了虚拟机的有效虚拟硬件版本。请参见 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_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’]) |
|
要更新的串口映射。 如果未设置,则不会更新任何串口。 当客户端将此结构的值作为参数传递时,字段映射中的键必须是 vmware.vmware_rest.vcenter_vm_hardware_serial 返回的资源 ID。 |
|
客户端会话的超时设置。 整个操作(包括连接建立、请求发送和响应)的最大秒数。 默认值为 300 秒。 |
|
要从中进行瞬间克隆的虚拟机。 当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.vcenter_vm_info 返回的资源 ID。在state=[‘clone’, ‘instant_clone’]中需要。 |
|
选项
|
|
storage_policy_spec 结构包含有关要与虚拟机主目录(包含配置和日志文件)关联的存储策略的信息。 如果未设置,则应用数据存储的默认存储策略(如果适用)。目前,默认存储策略仅受对象数据存储支持:VVol 和 vSAN。对于非对象数据存储,如果未设置,则虚拟机主目录将不与任何存储策略关联。在state=[‘present’]中需要。 有效属性为
当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.vcenter_storage_policies_info 返回的资源 ID。([‘present’]) 此键与 [‘present’] 一起是必需的。 |
|
vSphere vCenter 的主机名或 IP 地址 如果任务中未指定该值,则将改用环境变量 |
|
vSphere vCenter 密码 如果任务中未指定该值,则将改用环境变量 |
|
可以使用此可选参数设置日志文件的位置。 此文件将用于记录 HTTP REST 交互。 该文件将存储在运行模块的主机上。 如果任务中未指定该值,则将使用 环境变量 |
|
vSphere vCenter 用户名 如果任务中未指定该值,则将改用环境变量 |
|
当 SSL 证书无效时允许连接。当证书不受信任时,设置为 如果任务中未指定该值,则将改用环境变量 选项
|
|
要注销的虚拟机的标识符。 该参数必须是 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
返回值
常见的返回值已记录在 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
资源的 moid 返回:成功时 示例: |
|
创建虚拟机的瞬间克隆 返回:成功时 示例: |