Cloud Assembly 中创建云模板时,资源类型调色板包括受支持云帐户和集成端点的资源类型。在一些用例中,可能要根据资源类型的扩展列表创建云模板。可以创建自定义资源类型,将其添加到设计画布,然后创建支持设计和部署需求的云模板。

自定义资源名称和资源类型

自定义资源名称可标识云模板资源类型调色板中的自定义资源。

自定义资源的资源类型必须以 Custom. 开头且每个资源类型必须唯一。例如,可以将 Custom.ADUser 设置为添加 Active Directory 用户的自定义资源的资源类型。尽管未验证文本框中是否包含 Custom.,但如果将其移除,会自动添加该字符串。

可扩展性操作自定义资源

使用自定义资源类型,您可以在云模板中使用可扩展性操作来构建复杂的应用程序。例如,可以使用可扩展性操作与 Amazon Web ServicesMicrosoft Azure 的原生集成,以便轻松集成其各自的服务。可以通过单击自定义资源编辑器中的基于选项并选择 ABX 用户定义的结构定义创建可扩展性操作自定义资源。

可扩展性操作自定义资源的生命周期操作

对自定义资源使用可扩展性操作时,您可以定义以下生命周期操作:

  • 创建:启动部署时调用此可扩展性操作。
  • 读取:使用此可扩展性操作检索已部署资源的最新状态。
  • 更新:更新云模板属性时调用此可扩展性操作。仅当属性未标记 recreateOnUpdate 时,才会触发此操作。
  • 销毁:删除部署时调用此可扩展性操作。

可以从现有可扩展性操作中手动选择这些生命周期操作,也可以通过选择生成操作自动生成这些操作。选择生成操作时,必须指定将在其中生成新可扩展性操作的项目。

注: 可以通过单击特定操作旁边的 打开选项编辑与生命周期操作关联的可扩展性操作。

vRealize Orchestrator 自定义资源

每个 vRealize Orchestrator 自定义资源都基于 SDK 清单类型,并通过具有所需 SDK 类型实例的输出的 vRealize Orchestrator 工作流创建。创建自定义资源类型不支持基本类型,例如 PropertiesDatestringnumber
注: SDK 对象类型可与其他属性类型区分开,它使用冒号(“:”)分隔插件名称和类型名称。例如, AD:UserGroup 是用于管理 Active Directory 用户组的 SDK 对象类型。
可以使用 vRealize Orchestrator 中的内置工作流,也可以创建自己的工作流。使用 vRealize Orchestrator 创建一切即服务/XaaS 工作流意味着,可以创建在部署时将 Active Directory 用户添加到计算机的云模板,也可以将自定义 F5 负载均衡器添加到部署。可以通过单击自定义资源编辑器中的 基于选项并选择 vRO 清单创建 vRealize Orchestrator 自定义资源。

vRealize Orchestrator 自定义资源外部类型

外部类型属性定义 vRealize Orchestrator 自定义资源的类型。在 Cloud Assembly 中,当您在自定义资源类型中选择创建工作流时,将在其下方显示“外部类型”下拉列表。下拉列表包括从 vRealize Orchestrator 工作流的输出参数中选择的外部类型属性。下拉列表包括的选定工作流输出属性必须是非数组 SDK 对象类型,例如 VC:VirtualMachineAD:UserGroup

注: 创建使用动态类型插件的自定义工作流时,请验证其变量是否使用 DynamicTypesManager.getObject() 方法进行创建。

定义自定义资源类型时,还可以定义所选外部类型的可用性范围。选定外部类型可以:

  • 在项目之间共享。
  • 仅适用于所选项目。

每个定义的范围只能有一个具有特定外部类型值的自定义资源类型。例如,如果在项目中创建自定义资源时使用 VC:VirtualMachine 作为外部类型,则无法为同一项目创建使用相同外部类型的其他自定义资源。此外,也无法创建两个使用相同外部类型的共享自定义资源。

vRealize Orchestrator 生命周期操作验证

将创建、删除和更新工作流作为生命周期操作添加到自定义资源时,Cloud Assembly 会验证所选工作流是否具有正确的输入和输出属性定义。

  • 创建工作流的输出参数必须为 SDK 对象类型,例如 SSH:HostSQL:Database。如果所选工作流未通过验证,将无法添加更新或删除工作流,也无法保存对自定义资源所做的更改。
  • 删除工作流的输入参数必须是与自定义资源的外部类型匹配的 SDK 对象类型。
  • 更新工作流的输入和输出参数必须是与自定义资源的外部类型匹配的 SDK 对象类型。

自定义资源属性结构定义

可以通过选择 属性选项卡查看自定义资源属性结构定义。结构定义包括名称、数据类型、属性类型以及给定属性的说明(如果可用)。此外,结构定义还定义特定属性在云模板中是必需项还是可选项。
注: 对于可扩展性操作自定义资源的属性结构定义,所有属性都在云模板中是必需项。
vRealize Orchestrator 工作流添加到自定义资源时,其输入和输出参数将添加为属性。

对于可扩展性操作自定义资源,必须在属性选项卡中手动创建可扩展性操作自定义资源的属性结构定义。可以使用代码表单选项卡创建属性结构定义。

  • 代码:使用 YAML 内容创建属性结构定义。
  • 表单:通过单击新建属性并配置其名称、显示名称、描述、属性类型和默认值,创建新属性。

实施后操作自定义请求表单

您可以通过添加和修改不同类型的资源属性来简化自定义资源中所包含的实施后操作的请求表单。

例如,可以将请求表单中输入参数的值绑定到外部源,例如,检索部署名称或项目名称的 vRealize Orchestrator 操作。此外,还可以将特定输入参数的值绑定到同一请求表单中包含的其他两个文本框的计算值。

注: 此功能可用于自定义资源和资源操作。可以从自定义资源或资源操作编辑器的 请求参数页面的 选项卡,自定义请求表单中输入属性的值。

实施后操作请求表单验证

可以通过添加外部验证对实施后操作的请求表单进行验证。通过使用外部验证,您可以阻止用户在满足验证参数之前提交请求表单。可以从自定义资源或资源操作编辑器的请求参数页面的验证选项卡添加外部验证。选择该选项卡后,可以将 Orchestrator 验证元素拖动到画布中,并添加要用于验证的 vRealize Orchestrator 操作。

例如,可以创建包含更改用户密码实施后操作的自定义资源。对于此类用例,可以添加具有使用 SecureString 类型的 newPasswordconfirmPassword 输入参数的 vRealize Orchestrator 操作。

注: 这是用于验证用户密码的示例脚本。对于您自己的用例,您可以决定使用不同的脚本。
if (newPassword != confirmPassword) {
    return 'passwords are different';
}
if (newPassword.lenght < 7) {
    return 'password must be at least 10 symbols';
}
return null;