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 (str): 与已部署虚拟机的磁盘关联的数据存储的标识符。

此字段当前是必需的。

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

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

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

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

  • 接受的键

  • type (string): 虚拟机模板磁盘的策略类型。

此字段的接受值

  • USE_SPECIFIED_POLICY

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

此字段是可选的,只有当 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 (str): 自定义规范的名称。

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

hardware_customization

字典

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

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

有效属性为

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

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

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

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

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

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

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

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

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

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

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

  • 接受的键

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

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

  • num_cores_per_socket (整数): 在已部署虚拟机中分配 CPU 的核心数。

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

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

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

  • 接受的键

  • memory (整数): 虚拟机内存大小(MB)。

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

library

字符串

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

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

name

字符串 / 必填

已部署虚拟机的名称。此参数为必填项。

placement

字典

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

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

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

有效属性为

  • folder (字符串): 应将已部署虚拟机放置到的虚拟机文件夹。

此字段当前是必需的。

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

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

  • resource_pool (字符串): 应将已部署虚拟机放置到的资源池。

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

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

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

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

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

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

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

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

powered_on

布尔值

指定部署后是否应启动已部署的虚拟机。

如果未设置,则部署后虚拟机将不会启动。

选项

  • false

  • true

session_timeout

浮点数

在 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

字符串 / 必填

vSphere vCenter 的主机名或 IP 地址

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

vcenter_password

字符串 / 必填

vSphere vCenter 密码

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

vcenter_rest_log_file

字符串

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

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

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

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

环境变量 VMWARE_REST_LOG_FILE 的值。

vcenter_username

字符串 / 必填

vSphere vCenter 用户名

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

vcenter_validate_certs

布尔值

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

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

选项

  • false

  • true ← (默认)

vm_home_storage

字典

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

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

有效属性为

  • datastore (字符串): 已部署虚拟机的配置和日志文件的存储库标识符。

此字段当前是必需的。

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

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

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

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

  • 接受的键

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

此字段的接受值

  • USE_SPECIFIED_POLICY

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

此字段是可选的,只有当 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"

字典

在库中创建虚拟机模板

返回:成功时

示例: {"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)