vmware.vmware_rest.content_subscribedlibrary 模块 – 创建新的订阅库

注意

此模块是 vmware.vmware_rest 集合 (版本 4.3.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install vmware.vmware_rest。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。

要在 playbook 中使用它,请指定:vmware.vmware_rest.content_subscribedlibrary

vmware.vmware_rest 2.0.0 中的新增功能

概要

  • 创建一个新的订阅库。

要求

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

  • vSphere 7.0.3 或更高版本

  • python >= 3.6

  • aiohttp

参数

参数

注释

client_token

字符串

为每个创建请求在客户端生成的唯一令牌。令牌应为通用唯一标识符 (UUID),例如:b8a2a2e3-2314-43cd-a871-6ede0f429751。此令牌可用于保证幂等创建。

如果未指定,则创建不具有幂等性。

creation_time

字符串

创建此库的日期和时间。

此字段不用于创建操作。它始终存在于 get 或 list 操作的结果中。它不用于更新操作。

description

字符串

此库的人类可读描述。

此字段对于创建操作是可选的。在创建过程中将其留空将导致空字符串值。它始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。在更新过程中将其留空表示应保持描述不变。

id

字符串

唯一标识此 LibraryModel 的标识符。

此字段不用于创建操作。它不会出现在 get 或 list 操作的结果中。它不用于更新操作。

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

last_modified_time

字符串

上次更新此库的日期和时间。

更改库属性时,此字段会自动更新。添加、删除或修改库项或库中的内容不会影响此字段。标记库或同步订阅库不会更改此字段。

此字段不用于创建操作。它始终存在于 get 或 list 操作的结果中。它不用于更新操作。

last_sync_time

字符串

上次同步此库的日期和时间。

此字段仅适用于订阅库。每次触发库上的同步时都会更新它。本地库的值未设置。

此字段不用于创建操作。它是 get 或 list 操作结果中的可选字段。它不用于更新操作。

library_id

字符串

应逐出其内容的订阅库的标识符。

该参数必须是 vmware.vmware_rest.content_library_info 返回的资源的 id。state=[‘absent’, ‘evict’, ‘present’, ‘sync’] 时需要。

name

字符串

库的名称。

库由人类可读的名称标识。库名称不能未定义或为空字符串。名称不必唯一。

此字段必须提供用于创建操作。它始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。

optimization_info

字典

定义应用于此库的各种优化和优化参数。

此字段对于创建操作是可选的。它是 get 或 list 操作结果中的可选字段。对于更新操作,它是可选的。

有效属性为

  • optimize_remote_publishing (布尔值): 如果设置为 true,则库将针对远程发布进行优化。

如果远程发布是此库的主要用例,则将其打开。这里的远程发布是指发布者和订阅者不是同一个 Vcenter SSO 域的一部分。

在库创建过程中打开此优化后,可以进行任何优化。例如,库内容可以以不同的格式存储,但优化不限于存储格式。

注意,此切换开关的值只能在创建库时设置,如果需要更改此值(针对不同的用例优化库),则需要迁移您的库。

此字段对于创建操作是可选的。如果在创建时未指定,则默认情况下库不会针对特定用例进行优化。它不用于更新操作。([‘present’])

publish_info

字典

定义此库的发布方式,以便远程订阅库可以订阅它。

PublishInfo 定义此本地库的元数据在何处以及如何访问。只有当 PublishInfo.published 为 true 时,本地库才会公开发布。

此字段对于创建和更新操作是可选的。如果在创建期间未指定,则默认情况下库不会发布。如果在更新期间未指定,则字段保持不变。

有效属性为

  • authentication_method (str): 此选项指示订阅库应如何对已发布的库端点进行身份验证。([‘present’])

  • 接受的值

  • BASIC

  • NONE

  • published (bool): 本地库是否已发布。

此字段对于 LocalLibrary.create 操作是必需的。对于 LocalLibrary.update 操作,它是可选的,如果未设置,则值不会更改。当现有身份验证方法为 BASIC 且本地库已发布时,在关闭发布之前,需要 PublishInfo.current-password 字段。此字段将始终存在于 LocalLibrary.get 操作的结果中。([‘present’])

  • publish_url (str): 内容库服务发布库元数据的 URL。

此值可用于在创建订阅库时设置 SubscriptionInfo.subscription-url 属性。

此字段不用于创建操作。它将始终存在于 get 或 list 操作的结果中。它不用于更新操作。([‘present’])

  • user_name (str): 需要进行身份验证的用户名。

此字段对于 LocalLibrary.create 和 LocalLibrary.update 操作是可选的。当身份验证方法为 NONE 时,可以不设置用户名。当身份验证方法为 BASIC 时,在当前版本中会忽略用户名。默认为“vcsp”。最好将其留空。如果指定,则必须设置为“vcsp”。([‘present’])

  • password (str): 需要进行身份验证的新密码。

此字段对于 LocalLibrary.create 操作是可选的。当身份验证方法为 NONE 时,可以不设置密码。当身份验证方法为 BASIC 时,密码应为非空字符串。此字段对于 LocalLibrary.update 操作是可选的。在更新期间将其留空表示密码未更改。更改密码时,需要 PublishInfo.current-password 字段。此字段不用于 LocalLibrary.get 操作。([‘present’])

  • current_password (str): 用于验证的当前密码。此字段从 vSphere 6.7 开始可用。

此字段不用于 LocalLibrary.create 操作。此字段对于 LocalLibrary.update 操作是可选的。当现有身份验证方法为 NONE 时,可以不设置当前密码。当现有身份验证方法为 BASIC 时,会在应用新的 PublishInfo.password、关闭身份验证或取消发布库之前验证当前密码。此字段不用于 LocalLibrary.get 操作。([‘present’])

  • persist_json_enabled (bool): 库和库项元数据是否作为 JSON 文件保存在后端存储中。此标志仅适用于已发布的本地库。

启用 JSON 持久性允许您手动同步订阅库,而不是通过 HTTP 同步。您可以手动将本地库内容和元数据复制到另一个后端存储,然后创建一个订阅库,该库引用 SubscriptionInfo.subscription-url 中库 JSON 文件的位置。当订阅库的后端存储与订阅 URL 匹配时,无需将文件复制到订阅库。

对于由数据存储支持的库,库 JSON 文件将存储在数据存储上的 contentlib-{library_id}/lib.json 路径中。

对于由远程文件系统支持的库,库 JSON 文件将存储在远程文件系统路径中的 {library_id}/lib.json 中。

此字段对于创建操作是可选的。它将始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。([‘present’])

security_policy_id

字符串

表示应用于此库的安全策略。

设置此字段将使库安全。如果 LibraryModel.unset-security-policy-id 设置为 true,则在更新操作中会忽略此字段。

此字段对于创建和更新操作是可选的。如果在创建操作中未设置,则库将不安全。如果在更新操作中未指定,则字段保持不变。

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

server_guid

字符串

库存在的 vCenter Server 的唯一标识符。

此字段对于创建操作是可选的。它将始终存在于 get 或 list 操作的结果中。它不用于更新操作。

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

session_timeout

float

添加到 vmware.vmware_rest 2.1.0 中

客户端会话的超时设置。

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

默认值为 300 秒。

state

字符串

选项

  • "absent"

  • "evict"

  • "present" ← (默认)

  • "probe"

  • "sync"

storage_backings

列表 / 元素=字典

此库可用的默认存储备份列表。

StorageBacking 定义一个默认存储位置,可用于存储此库中库项的文件。某些库项(例如,虚拟机模板项)支持可能分布在各种存储备份中的文件。一个或多个项目文件可能位于或可能不位于默认存储备份上。

目前不支持多个默认存储位置,但在将来的版本中可能会支持。

创建操作必须提供此字段。它将始终存在于 get 或 list 操作的结果中。它不用于更新操作。

有效属性为

  • type (str): 此选项指定 StorageBacking 的类型。([‘present’])

  • 接受的值

  • DATASTORE

  • OTHER

  • datastore_id (str): 用于存储库中内容的数据存储的标识符。

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

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

  • storage_uri (str): 用于标识存储库中内容的位置的 URI。

支持以下 URI 格式

vSphere 6.5

vSphere 6.0 更新 1

  • nfs://server:/path(仅适用于 vCenter Server Appliance)

  • file://unc-server/path(仅适用于 Windows 版 vCenter Server)

  • file:///mount/point(仅适用于 vCenter Server Appliance) - 只有当路径是 NFS 文件系统的本地挂载点时,才支持本地文件 URI。强烈建议不要使用文件 URI。相反,请使用 NFS URI 指定远程文件系统。

vSphere 6.0

此字段是可选的,只有当 StorageBacking.type 的值为 OTHER 时才相关。([‘present’])

subscription_info

字典

定义此库的订阅行为。

SubscriptionInfo 定义此订阅库如何与远程源同步。设置该值将确定库同步到的远程源以及同步方式。更改订阅将导致与新源同步。如果新源与旧源不同,则旧的库项和数据将丢失。将 SubscriptionInfo.automatic-sync-enabled 设置为 false 将停止订阅,但不会删除现有的缓存数据。

此字段对于创建和更新操作是可选的。如果在创建期间未指定,则将创建一个没有活动订阅的默认值。如果在更新期间未指定,则字段保持不变。

有效属性为

  • authentication_method (str): 指示订阅库应如何对已发布的库端点进行身份验证。([‘present’, ‘probe’])

  • 接受的值

  • BASIC

  • NONE

  • automatic_sync_enabled (bool): 库是否应参与自动库同步。为了进行自动同步,全局 ConfigurationModel.automatic-sync-enabled 选项也必须为 true。即使关闭自动同步,订阅仍然处于活动状态,但同步只能通过显式调用 SubscribedLibrary.sync 或 SubscribedItem.sync 来激活。换句话说,即使禁用自动同步,手动同步仍然可用。

创建操作必须提供此字段。它将始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。([‘present’, ‘probe’])

  • on_demand (bool): 指示库项的内容是否仅按需同步。

如果将其设置为 true,则将同步库项的元数据,但不会同步项的内容(其文件)。内容库服务仅在请求时同步内容。这可能会导致第一次使用内容时出现明显的延迟。

可以使用将 forceSyncContent 设置为 true 的 SubscribedItem.sync 调用提前强制同步没有同步内容的项目。同步内容后,可以使用 SubscribedItem.evict 调用删除内容。

如果将此值设置为 false,则将提前同步所有内容。

创建操作必须提供此字段。它将始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。([‘present’, ‘probe’])

  • password (str): 用于身份验证的密码。

使用基于密码的身份验证方法时,必须设置密码;不允许使用空字符串。

此字段对于创建操作是可选的。它不会出现在 get 或 list 操作的结果中。对于更新操作,它是可选的。([‘present’, ‘probe’])

  • ssl_thumbprint (str): 远程端点的 SSL 证书的可选 SHA-1 哈希值。

如果定义此值,则将通过将其与 SSL 指纹进行比较来验证 SSL 证书。SSL 证书必须针对指纹进行验证。指定此值时,不使用标准证书链验证行为。如果未设置此值,则会正常验证证书链。如果也设置了 {SubscriptionInfo#sslCertificate},则不会检查指定的 sslThumbprint 以进行 SSL 证书验证。

此字段对于创建操作是可选的。它不会出现在 get 或 list 操作的结果中。对于更新操作,它是可选的。([‘present’, ‘probe’])

  • subscription_url (str): 提供远程发布库元数据的端点的 URL。

此 URL 可以是已发布库的 PublishInfo.publish-url(例如,https://server/path/lib.json)。

如果源内容来自具有 PublishInfo.persist-json-enabled 的已发布库,则订阅 URL 可以是指向数据存储或远程文件系统上的库 JSON 文件的 URL。支持的格式为:

vSphere 6.5

vSphere 6.0

指定 DS 订阅 URL 时,数据存储必须与已订阅库位于相同的 vCenter Server 上。指定 NFS 或 SMB 订阅 URL 时,已订阅库的 StorageBacking.storage-uri 必须位于相同的远程文件服务器上,并且应与订阅 URL 共享一个公共父路径。

创建操作必须提供此字段。它将始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。([‘present’, ‘probe’])

  • user_name (str): 用于身份验证的用户名。

使用基于密码的身份验证方法时,必须设置用户名。允许用户名为空字符串。

此字段对于创建操作是可选的。它在 get 或 list 操作的结果中是可选的。对于更新操作,它是可选的。([‘present’, ‘probe’])

  • source_info (dict): 关于源已发布库的信息。此字段将为与已发布库的订阅关联的已订阅库设置。

此字段对于创建操作是可选的。它在 get 或 list 操作的结果中是可选的。对于更新操作,它是可选的。([‘present’, ‘probe’])

  • 接受的键:

  • source_library (string): 已发布库的标识符。

此字段必须提供用于创建操作。它始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。

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

  • subscription (string): 与已订阅库关联的订阅的标识符。

此字段必须提供用于创建操作。它始终存在于 get 或 list 操作的结果中。对于更新操作,它是可选的。

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

类型

字符串

library_type 枚举类型定义了 LibraryModel 的类型。

库的类型可用于确定可以使用库执行哪些附加服务。

选项

  • "LOCAL"

  • "SUBSCRIBED"

unset_security_policy_id

布尔值

这表示在更新操作中对 LibraryModel.security-policy-id 进行更改的意图。

如果此字段设置为 true,则将删除应用于库的任何安全策略。如果此字段设置为 false,则将任何应用于库的安全策略更改为 LibraryModel.security-policy-id 中指定的值(如果存在)。

此字段对于更新操作是可选的。如果未设置,则任何现有安全策略都将更改为 LibraryModel.security-policy-id 中指定的值(如果存在)。

选项

  • false

  • true

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

version

字符串

在元数据更改时更新的版本号。此值允许客户端检测并发更新并防止意外覆盖数据。

此值表示一个数字,每次更改库属性(例如名称或描述)时都会递增。库内库项的更改(包括添加或删除项)不会递增它。它也不会受库标记的影响。

此字段不用于创建操作。它始终出现在 get 或 list 操作的结果中。对于更新操作,它是可选的。在更新期间将其保留为未设置表示您不需要检测并发更新。

备注

注意

  • 在 vSphere 7.0.3 上测试。

示例

- 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: Create subscribed library
  vmware.vmware_rest.content_subscribedlibrary:
    name: sub_lib
    subscription_info:
      subscription_url: '{{ nfs_lib.value.publish_info.publish_url }}'
      authentication_method: NONE
      automatic_sync_enabled: false
      on_demand: true
    storage_backings:
    - datastore_id: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/rw_datastore') }}"
      type: DATASTORE
  register: sub_lib

- name: Create subscribed library (again)
  vmware.vmware_rest.content_subscribedlibrary:
    name: sub_lib
    subscription_info:
      subscription_url: '{{ nfs_lib.value.publish_info.publish_url }}'
      authentication_method: NONE
      automatic_sync_enabled: false
      on_demand: true
    storage_backings:
    - datastore_id: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/rw_datastore') }}"
      type: DATASTORE
  register: result

- name: Clean up the cache
  vmware.vmware_rest.content_subscribedlibrary:
    name: sub_lib
    library_id: '{{ sub_lib.id }}'
    state: evict

- name: Trigger a library sync
  vmware.vmware_rest.content_subscribedlibrary:
    name: sub_lib
    library_id: '{{ sub_lib.id }}'
    state: sync

返回值

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

描述

msg

字符串

删除所有已订阅的库

返回:成功时

示例: "所有 已完成"

results

列表 / 元素=字符串

删除所有已订阅的库

返回:成功时

示例: [{"_ansible_item_label": {"creation_time": "2022-11-23T20:06:05.189Z", "description": "", "id": "8b4e355e-a463-44f1-9b04-d0786a49cc7d", "last_modified_time": "2022-11-23T20:06:05.189Z", "last_sync_time": "2022-11-23T20:06:07.717Z", "name": "sub_lib", "server_guid": "52fb0b5e-ffc3-465b-bf4f-e4e6d5423cf5", "storage_backings": [{"datastore_id": "datastore-1065", "type": "DATASTORE"}], "subscription_info": {"authentication_method": "NONE", "automatic_sync_enabled": 0, "on_demand": 1, "subscription_url": "https://vcenter.test:443/cls/vcsp/lib/a66d5c73-57f8-4a3a-9361-292a55f68516/lib.json"}, "type": "SUBSCRIBED", "version": "4"}, "_ansible_no_log": null, "ansible_loop_var": "item", "changed": 1, "failed": 0, "invocation": {"module_args": {"client_token": null, "creation_time": null, "description": null, "id": null, "last_modified_time": null, "last_sync_time": null, "library_id": "8b4e355e-a463-44f1-9b04-d0786a49cc7d", "name": null, "optimization_info": null, "publish_info": null, "server_guid": null, "session_timeout": null, "state": "absent", "storage_backings": null, "subscription_info": null, "type": null, "vcenter_hostname": "vcenter.test", "vcenter_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "vcenter_rest_log_file": "/tmp/vmware_rest.log", "vcenter_username": "[email protected]", "vcenter_validate_certs": 0, "version": null}}, "item": {"creation_time": "2022-11-23T20:06:05.189Z", "description": "", "id": "8b4e355e-a463-44f1-9b04-d0786a49cc7d", "last_modified_time": "2022-11-23T20:06:05.189Z", "last_sync_time": "2022-11-23T20:06:07.717Z", "name": "sub_lib", "server_guid": "52fb0b5e-ffc3-465b-bf4f-e4e6d5423cf5", "storage_backings": [{"datastore_id": "datastore-1065", "type": "DATASTORE"}], "subscription_info": {"authentication_method": "NONE", "automatic_sync_enabled": 0, "on_demand": 1, "subscription_url": "https://vcenter.test:443/cls/vcsp/lib/a66d5c73-57f8-4a3a-9361-292a55f68516/lib.json"}, "type": "SUBSCRIBED", "version": "4"}, "value": {}}]

作者

  • Ansible 云团队 (@ansible-collections)