vmware.vmware_rest.vcenter_ovf_libraryitem 模块 – 从虚拟机或虚拟设备在内容库中创建库项目

注意

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

vmware.vmware_rest 2.0.0 中的新增功能

概要

  • 从虚拟机或虚拟设备在内容库中创建库项目。

要求

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

  • vSphere 7.0.3 或更高版本

  • python >= 3.6

  • aiohttp

参数

参数

注释

client_token

字符串

客户端生成的令牌,用于在客户端无法从服务器获得响应时重试请求。如果原始请求成功,将返回该请求的结果,否则将重试操作。

如果未设置,服务器将创建一个令牌。

create_spec

字典

用于从源虚拟机或虚拟设备创建 OVF 包的信息。当 state=[‘present’] 时为必需。

有效属性为

  • name (str):要在存储在库项目中的 OVF 描述符中使用的名称。

如果未设置,服务器将使用源的当前名称。([‘present’])

  • description (str):要在存储在库项目中的 OVF 描述符中使用的描述。

如果未设置,服务器将使用源的当前注释。([‘present’])

  • flags (list):用于创建 OVF 包的标志。可以使用 ExportFlag.list 获取支持的标志。

如果未设置,将不使用任何标志。([‘present’])

deployment_spec

字典

应如何将 OVF 包部署到目标的规范。当 state=[‘deploy’] 时为必需。

有效属性为

  • name (str):分配给已部署的目标虚拟机或虚拟设备的名称。

如果未设置,服务器将使用 OVF 包中的名称。([‘deploy’])

  • annotation (str):分配给已部署的目标虚拟机或虚拟设备的注释。

如果未设置,服务器将使用 OVF 包中的注释。([‘deploy’])

  • accept_all_EULA (bool):是否接受所有最终用户许可协议。请参见 ([‘deploy’])

此键在 [‘deploy’] 中是必需的。

  • network_mappings (dict):指定用于 OVF 描述符中类型为 ovf:NetworkSection 的部分的 目标网络。映射中的键是 OVF 描述符中 ovf:NetworkSection 部分的节标识符,值是用于部署的目标网络。

如果未设置,服务器将选择一个网络映射。

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

  • storage_mappings (dict):指定用于 OVF 描述符中类型为 vmw:StorageGroupSection 的部分的 目标存储。映射中的键是 OVF 描述符中 ovf:StorageGroupSection 部分的节标识符,值是用于部署的目标存储规范。请参见

如果未设置,服务器将选择一个存储映射。([‘deploy’])

  • storage_provisioning (str):此选项定义可以为目标平台上的磁盘设置的虚拟磁盘置备类型。([‘deploy’])

  • 接受的值

  • eagerZeroedThick

  • thick

  • thin

  • storage_profile_id (str):用于 OVF 描述符中所有类型为 vmw:StorageSection 的部分的默认存储配置文件。

如果未设置,服务器将选择默认配置文件。

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

  • locale (str):用于解析 OVF 描述符的区域设置。

如果未设置,将使用服务器区域设置。([‘deploy’])

  • flags (list):用于部署的标志。可以使用 ImportFlag.list 获取支持的标志值。

如果未设置,将不使用任何标志。([‘deploy’])

  • additional_parameters (list):部署可能需要的其他 OVF 参数。库项目中 OVF 包的 OVF 描述符可能需要其他 OVF 参数。可以通过此字段指定的 OVF 参数示例包括但不限于

  • DeploymentOptionParams

  • ExtraConfigParams

  • IpAllocationParams

  • PropertyParams

  • ScaleOutParams

  • VcenterExtensionParams

如果未设置,服务器将为 LibraryItem.deploy 操作所需的所有参数选择默认设置。请参见 LibraryItem.deploy。

当客户端将此结构的 value 作为参数传递时,字段必须包含 OvfParams 中定义的所有属性。([‘deploy’])

  • default_datastore_id (str):用于 OVF 描述符中所有类型为 vmw:StorageSection 的部分的默认数据存储。

如果未设置,服务器将选择默认数据存储。

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

  • vm_config_spec (字典): resource_pool_deployment_spec.vm-config-spec 用于虚拟机配置设置,包括代替 OVF 描述符使用的硬件规格。如果设置,OVF 描述符将作为磁盘描述符。resource_pool_deployment_spec 参数中的字段,例如与 resource_pool_deployment_spec.vm-config-spec 中设置重叠的 resource_pool_deployment_spec.name 不会被覆盖,将继续使用。类似地,resource_pool_deployment_spec 中影响虚拟机磁盘的存储设置,即 resource_pool_deployment_spec.storage-mappings、resource_pool_deployment_spec.storage-profile-id、resource_pool_deployment_spec.storage-provisioning 和 resource_pool_deployment_spec.default-datastore-id 也将被遵循。

如果未设置,将使用 OVF 模板的 OVF 描述符中的相关虚拟机规格。([‘deploy’])

  • 接受的键

  • provider (字符串): vm_config_spec_provider 用于提供部署 OVF 模板时使用的可选 vm_config_spec

此字段接受的值

  • XML

  • xml (字符串): xml 是在选择 XML 时提供的条件配置。它用于传递已序列化为 XML 并经过 base64 编码的虚拟机的 vim.vm.ConfigSpec。

此字段是可选的,仅当 provider 的值为 XML 时才相关。

ovf_library_item_id

字符串

包含要部署的 OVF 包的内容库项的标识符。

该参数必须是由 vmware.vmware_rest.content_library_item_info 返回的资源的 ID。state=['deploy', 'filter'] 时为必填项

session_timeout

浮点数

在 vmware.vmware_rest 2.1.0 中添加

客户端会话的超时设置。

整个操作(包括建立连接、发送请求和响应)的最大秒数。

默认值为 300 秒。

source

字典

用作源的虚拟机或虚拟设备的标识符。state=['present'] 时为必填项

有效属性为

  • type (字符串): 可部署资源的类型。

当客户端将此结构的某个值作为参数传递时,该字段必须是 VirtualMachine 或 VirtualApp 之一。([‘present’])

此键在 [‘present’] 时为必填项。

  • id (字符串): 可部署资源的标识符。

当客户端将此结构的某个值作为参数传递时,该字段必须是以下资源类型之一的标识符:VirtualMachine 或 VirtualApp。([‘present’])

此键在 [‘present’] 时为必填项。

state

字符串

选项

  • "deploy"

  • "filter"

  • "present" ← (默认)

target

字典 / 必需

目标内容库和库项的规范。此参数是强制性的。

有效属性为

  • library_id (字符串): 应在其中创建新库项的库的标识符。如果指定了 library_item_id 字段,则不使用此字段。

此字段当前是必需的。

将来,如果未设置,则必须指定 library_item_id 字段。

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

  • library_item_id (字符串): 应更新的库项的标识符。

如果未设置,将创建一个新的库项。如果设置此字段,则必须指定 library_id 字段。

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

  • resource_pool_id (字符串): 虚拟机或虚拟设备应附加到的资源池的标识符。

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

此键在 [‘deploy’, ‘filter’] 时为必填项。

  • host_id (字符串): 虚拟机或虚拟设备将在其上运行的目标主机的标识符。目标主机必须是包含由 标识的资源池的集群的成员。

如果未设置,如果 resource_pool_id 是独立主机或启用了分布式资源调度 (DRS) 的集群,则服务器将自动从资源池中选择目标主机。

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

  • folder_id (字符串): 应包含虚拟机或虚拟设备的 vCenter 文件夹的标识符。该文件夹必须是虚拟机文件夹。

如果未设置,服务器将选择部署文件夹。

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

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

注释

注意

  • 已在 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 content library pointing on a NFS share
  vmware.vmware_rest.content_locallibrary:
    name: my_library_on_nfs
    description: automated
    publish_info:
      published: true
      authentication_method: NONE
    storage_backings:
    - storage_uri: nfs://datastore.test/srv/share/content-library
      type: OTHER
    state: present
  register: nfs_lib

- name: Export the VM as an OVF on the library
  vmware.vmware_rest.vcenter_ovf_libraryitem:
    session_timeout: 2900
    source:
      type: VirtualMachine
      id: '{{ my_vm.id }}'
    target:
      library_id: '{{ nfs_lib.id }}'
    create_spec:
      name: golden_image
      description: an OVF example
      flags: []
    state: present
  register: ovf_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: Create a new VM from the OVF
  vmware.vmware_rest.vcenter_ovf_libraryitem:
    ovf_library_item_id: '{{ (lib_items.value|selectattr("name", "equalto", "golden_image")|first).id }}'
    state: deploy
    target:
      resource_pool_id: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}"
    deployment_spec:
      name: my_vm_from_ovf
      accept_all_EULA: true
      storage_provisioning: thin

- name: Create a new VM from the OVF and specify the host and folder
  vmware.vmware_rest.vcenter_ovf_libraryitem:
    ovf_library_item_id: '{{ (lib_items.value|selectattr("name", "equalto", "golden_image")|first).id }}'
    state: deploy
    target:
      resource_pool_id: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}"
      folder_id: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}"
      host_id: "{{ lookup('vmware.vmware_rest.host_moid', '/my_dc/host/my_cluster/esxi1.test/test_vm1') }}"
    deployment_spec:
      name: my_vm_from_ovf_on_a_host
      accept_all_EULA: true
      storage_provisioning: thin

返回值

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

描述

字典

从 OVF 创建新的虚拟机并指定主机和文件夹

返回: 成功时

示例: {"error": {"errors": [], "information": [], "warnings": []}, "resource_id": {"id": "vm-1078", "type": "VirtualMachine"}, "succeeded": 1}

作者

  • Ansible 云团队 (@ansible-collections)