vmware.vmware_rest.vcenter_vmtemplate_libraryitems 模块 – 从虚拟机在内容库中创建库项目

注意

此模块是 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_vmtemplate_libraryitems

vmware.vmware_rest 2.2.0 中的新增功能

概要

  • 从虚拟机在内容库中创建库项目。此操作在内容库中创建一个库项目,其内容是使用提供的创建规范从源虚拟机创建的虚拟机模板。虚拟机模板存储在新创建的库项目中。

要求

执行此模块的主机需要以下要求。

  • vSphere 7.0.3 或更高版本

  • python >= 3.6

  • aiohttp

参数

参数

注释

description

字符串

已部署虚拟机的描述。

如果未设置,则已部署的虚拟机与源库项目具有相同的描述。

disk_storage

字典

已部署虚拟机的磁盘的存储规范。

如果 disk_storage_overridesdisk_storage 均未设置,则已部署的虚拟机的磁盘将使用与库项目中包含的源虚拟机模板中的相应磁盘相同的存储规范创建。

如果未设置 disk_storage_overrides 并且指定了 disk_storage,则所有已部署的虚拟机的磁盘都将使用 disk_storage 指定的存储规范创建。

如果指定了 disk_storage_overrides 并且未设置 disk_storage,则标识符不在 disk_storage_overrides 中的磁盘将使用与库项目中包含的源虚拟机模板中的相应磁盘相同的存储规范创建。

如果 disk_storage_overridesdisk_storage 都指定了,则标识符不在 disk_storage_overrides 中的磁盘将使用 disk_storage 指定的存储规范创建。

有效属性为

  • datastore (字符串):与已部署虚拟机的磁盘关联的数据存储的标识符。

此字段当前为必填项。

如果还指定了 storage_policy 并且与 datastore 不兼容,则该磁盘将被标记为与指定的存储策略不合规。

当客户端传递此结构的参数值时,该字段必须是 vmware.vmware_rest.vcenter_datastore_info 返回的资源的 ID。(['deploy', 'present'])

  • storage_policy (字典):已部署虚拟机的磁盘的存储策略。

如果未设置,则必须指定 datastore,并且已部署的虚拟机的磁盘将使用与 datastore 关联的默认存储策略创建。(['deploy', 'present'])

  • 接受的键

  • 类型(字符串):虚拟机模板磁盘的策略类型。

此字段的接受值

  • USE_SPECIFIED_POLICY

  • 策略(字符串):要使用的存储策略的标识符。

此字段是可选的,只有当 type 的值为 USE_SPECIFIED_POLICY 时才相关。

当客户端传递此结构的参数值时,该字段必须是 vmware.vmware_rest.vcenter_storage_policies_info 返回的资源的 ID。

disk_storage_overrides

字典

已部署虚拟机中各个磁盘的存储规范。这是指定为库项目中包含的源虚拟机模板中的磁盘标识符及其存储规范之间的映射。

如果 disk_storage_overridesdisk_storage 均未设置,则已部署的虚拟机的磁盘将使用与库项目中包含的源虚拟机模板中的相应磁盘相同的存储规范创建。

如果未设置 disk_storage_overrides 并且指定了 disk_storage,则所有已部署的虚拟机的磁盘都将使用 disk_storage 指定的存储规范创建。

如果指定了 disk_storage_overrides 并且未设置 disk_storage,则标识符不在 disk_storage_overrides 中的磁盘将使用与库项目中包含的源虚拟机模板中的相应磁盘相同的存储规范创建。

如果 disk_storage_overridesdisk_storage 都指定了,则标识符不在 disk_storage_overrides 中的磁盘将使用 disk_storage 指定的存储规范创建。

当客户端传递此结构的参数值时,字段映射中的键必须是 vmware.vmware_rest.vcenter_vm_hardware_disk 返回的资源的 ID。

guest_customization

字典

要应用于已部署虚拟机的客户机自定义规范。

如果未设置,则部署后不会自定义客户机操作系统。

有效属性为

  • name (字符串):自定义规范的名称。

如果未设置,则不执行客户机自定义。(['deploy'])

hardware_customization

字典

硬件自定义规范,指定对已部署虚拟机的更新。

如果未设置,则已部署的虚拟机与库项目中包含的源虚拟机模板具有相同的硬件配置。

有效属性为

  • nics (字典):要更新的以太网网络适配器的映射。

如果未设置,所有以太网适配器将保持与源虚拟机模板中相同的网络连接。MacAddressType 为 MANUAL 的以太网适配器不会更改。MacAddressType 为 GENERATED 或 ASSIGNED 的以太网适配器将接收一个新的地址。

当客户端将此结构的值作为参数传递时,字段映射中的键必须是 vmware.vmware_rest.vcenter_vm_hardware_ethernet 返回的资源的 ID。([‘deploy’])

  • disks_to_remove (list): 要从部署的虚拟机中移除的磁盘的标识符。

如果未设置,将复制所有磁盘。

当客户端将此结构的值作为参数传递时,该字段必须包含 vmware.vmware_rest.vcenter_vm_hardware_disk 返回的资源的 ID。([‘deploy’])

  • disks_to_update (dict): 部署的虚拟机中各个磁盘的磁盘更新规范。

如果未设置,部署的虚拟机中的磁盘将具有与库项目中包含的源虚拟机模板中相应磁盘相同的设置。

当客户端将此结构的值作为参数传递时,字段映射中的键必须是 vmware.vmware_rest.vcenter_vm_hardware_disk 返回的资源的 ID。([‘deploy’])

  • cpu_update (dict): 部署的虚拟机的 CPU 更新规范。

如果 {@term.unset},则部署的虚拟机的 CPU 设置与库项目中包含的源虚拟机模板相同。([‘deploy’])

  • 接受的键

  • num_cpus (integer): 部署的虚拟机中的虚拟处理器数量。

如果 {@term.unset},则部署的虚拟机的 CPU 计数与库项目中包含的源虚拟机模板相同。

  • num_cores_per_socket (integer): 在部署的虚拟机中分配 CPU 的每个插槽的内核数。

如果 {@term.unset},则部署的虚拟机的每个插槽的内核数与库项目中包含的源虚拟机模板相同。

  • memory_update (dict): 部署的虚拟机的内存更新规范。

如果 {@term.unset},则部署的虚拟机的内存设置与库项目中包含的源虚拟机模板相同。([‘deploy’])

  • 接受的键

  • memory (integer): 虚拟机内存大小,以 MB 为单位。

如果 {@term.unset},则部署的虚拟机的内存大小与源虚拟机模板相同。

library

字符串

应在其中创建新库项目的库的标识符。

当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.content_library_info 返回的资源的 ID。使用 state=[‘present’] 时是必需的

name

string / required

部署的虚拟机的名称。此参数是必需的。

placement

字典

用于放置部署的虚拟机的信息。

此字段当前是必需的。将来,如果未设置此字段,系统将使用库项目中包含的源虚拟机模板中的值。

如果指定,每个字段将用于放置。如果字段导致不相交的放置,则操作将失败。如果字段与源虚拟机模板的放置值导致不相交的放置,则操作将失败。

有效属性为

  • folder (str): 部署的虚拟机应放置到的虚拟机文件夹。

此字段当前为必填项。

如果未设置,系统将尝试为虚拟机选择合适的文件夹;如果无法选择文件夹,则虚拟机部署操作将失败。

当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.vcenter_folder_info 返回的资源的 ID。([‘deploy’, ‘present’])

  • resource_pool (str): 部署的虚拟机应放置到的资源池。

如果未设置,系统将尝试为虚拟机选择合适的资源池;如果无法选择资源池,则虚拟机部署操作将失败。

当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.vcenter_resourcepool_info 返回的资源的 ID。([‘deploy’, ‘present’])

  • host (str): 应将虚拟机放置到的主机。如果同时指定了 hostresource_pool,则 resource_pool 必须属于 host。如果同时指定了 hostcluster,则 host 必须是 cluster 的成员。

如果指定了 resource_poolcluster,则可以取消设置此字段。如果未设置,系统将尝试为虚拟机选择合适的主机;如果无法选择主机,则虚拟机部署操作将失败。

当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.vcenter_host_info 返回的资源的 ID。([‘deploy’, ‘present’])

  • cluster (str): 应将部署的虚拟机放置到的集群。如果同时指定了 clusterresource_pool,则 resource_pool 必须属于 cluster。如果同时指定了 clusterhost,则 host 必须是 cluster 的成员。

如果指定了 resource_poolhost,建议取消设置此字段。

当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.vcenter_cluster_info 返回的资源的 ID。([‘deploy’, ‘present’])

powered_on

boolean

指定部署后是否应打开部署的虚拟机的电源。

如果未设置,则部署后将不会打开虚拟机的电源。

选项

  • false

  • true

session_timeout

float

在 vmware.vmware_rest 2.1.0 中添加

客户端会话的超时设置。

包括连接建立、请求发送和响应在内的整个操作的最长秒数。

默认值为 300 秒。

source_vm

字符串

从中创建库项目的源虚拟机的标识符。

当客户端将此结构的值作为参数传递时,该字段必须是 vmware.vmware_rest.vcenter_vm_info 返回的资源的 ID。使用 state=[‘present’] 时是必需的

state

字符串

选项

  • "deploy"

  • "present" ← (默认)

template_library_item

字符串

包含要部署的源虚拟机模板的内容库项目的标识符。

该参数必须是 vmware.vmware_rest.content_library_item_info 返回的资源的 ID。使用 state=[‘deploy’] 时是必需的

vcenter_hostname

string / required

vSphere vCenter 的主机名或 IP 地址

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

vcenter_password

string / required

vSphere vCenter 密码

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

vcenter_rest_log_file

字符串

您可以使用此可选参数来设置日志文件的位置。

此文件将用于记录 HTTP REST 交互。

该文件将存储在运行模块的主机上。

如果任务中未指定该值,则将使用

环境变量 VMWARE_REST_LOG_FILE 的值代替。

vcenter_username

string / required

vSphere vCenter 用户名

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

vcenter_validate_certs

boolean

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

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

选项

  • false

  • true ← (默认)

vm_home_storage

字典

虚拟机模板的配置和日志文件的存储位置。

如果未设置,虚拟机模板的配置和日志文件将放置在 指定的库关联的默认存储后备上。

有效属性为

  • datastore (str): 部署的虚拟机的配置和日志文件的数据存储的标识符。

此字段当前为必填项。

当还指定了 storage_policy 并且与 datastore 不兼容时,部署的虚拟机将被标记为不符合指定的存储策略。

当客户端传递此结构的参数值时,该字段必须是 vmware.vmware_rest.vcenter_datastore_info 返回的资源的 ID。(['deploy', 'present'])

  • storage_policy (字典): 已部署虚拟机的配置和日志文件的存储策略。

如果未设置,则必须指定 datastore,并且已部署虚拟机的配置和日志文件将使用与 datastore 关联的默认存储策略创建。 ([‘deploy’, ‘present’])

  • 接受的键

  • type (字符串): 虚拟机模板的配置和日志文件的策略类型。

此字段的接受值

  • USE_SPECIFIED_POLICY

  • 策略(字符串):要使用的存储策略的标识符。

此字段是可选的,只有当 type 的值为 USE_SPECIFIED_POLICY 时才相关。

当客户端传递此结构的参数值时,该字段必须是 vmware.vmware_rest.vcenter_storage_policies_info 返回的资源的 ID。

注释

注意

  • 在 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/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: Create a VM template on the library
  vmware.vmware_rest.vcenter_vmtemplate_libraryitems:
    name: golden-template
    library: '{{ nfs_lib.id }}'
    source_vm: '{{ my_vm.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') }}"
  register: mylib_item

- 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

返回值

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

描述

id

字符串

资源的 MOID

返回: 成功时

示例: "9c6df1f5-faba-490c-a8e6-edb72f787ab8"

字典

在库中创建 VM 模板

返回: 成功时

示例: {"cpu": {"cores_per_socket": 1, "count": 1}, "disks": {"16000": {"capacity": 16106127360, "disk_storage": {"datastore": "datastore-1122"}}, "16001": {"capacity": 32000000000, "disk_storage": {"datastore": "datastore-1122"}}}, "guest_OS": "RHEL_7_64", "memory": {"size_MiB": 1024}, "nics": {"4000": {"backing_type": "STANDARD_PORTGROUP", "mac_type": "ASSIGNED", "network": "network-1123"}}, "vm_home_storage": {"datastore": "datastore-1122"}, "vm_template": "vm-1132"}

作者

  • Ansible 云团队 (@ansible-collections)