您可以将 Ansible Tower 与 Cloud Assembly 集成,以支持已部署资源的配置管理。配置集成后,可以从云模板编辑器将 Ansible Tower 虚拟组件添加到新部署或现有部署中。
前提条件
- 授予非管理员用户访问 Ansible Tower 的适当权限。对于大多数配置,有两种适用方法。请选择最适合您配置的方法。
- 在组织级别为用户授予清单管理员和作业模板管理员角色。
- 为用户授予特定清单的管理员权限,以及用于置备的所有作业模板的执行角色。
-
您必须在 Ansible Tower 中配置相应的凭据和模板,以与您的部署配合使用。模板可以是作业模板或工作流模板。作业模板定义用于部署的清单和 playbook。作业模板和 playbook 之间存在 1:1 映射。Playbook 使用类似 YAML 的语法来定义与模板关联的任务。对于大多数典型部署,请使用计算机凭据进行身份验证。
工作流模板允许用户创建序列,这些序列包含作业模板、项目同步和清单同步的任意组合,并链接在一起以便您可以作为一个单元执行。Ansible Tower 工作流可视化工具可帮助用户设计工作流模板。对于大多数典型部署,可以使用计算机凭据进行身份验证。
- 登录到 Ansible Tower 并导航到“模板”部分。
- 选择“添加新作业”模板。
- 选择已创建的凭据。这些是将由 Ansible Tower 管理的计算机的凭据。每个作业模板可以有一个凭据对象。
- 对于“限制”选择,选择“启动时提示”。这可确保作业模板针对正从 Cloud Assembly 置备或取消置备的节点运行。如果未选择此选项,则在部署包含作业模板的蓝图时,将显示“未设置限制”错误。
- 选择“添加新工作流”模板。
- 选择已创建的凭据,然后定义清单。使用工作流可视化工具,设计工作流模板。
对于工作流模板或作业模板的“限制”框,通常会选择“启动时提示”。选择此选项可确保作业模板或工作流模板针对正从 Cloud Assembly 置备或取消置备的节点运行。
- 您可以在 Ansible Tower 的“作业”选项卡上查看从 Cloud Assembly 调用的作业模板或工作流模板的执行情况。
过程
结果
Ansible Tower 可在云模板中使用。
下一步做什么
将 Ansible Towe 组件添加到所需云模板。必须为在集成帐户中指定的用户指定适用的作业模板和执行权限。
- 在云模板画布页面上,选择蓝图选项菜单上“配置管理”标题下的“Ansible”,然后将 Ansible Tower 组件拖动到画布。
- 使用右侧面板配置相应的 Ansible Tower 属性,例如作业模板。
将 Ansible Tower 图标添加到云模板时,vRealize Automation 会在 Ansible Tower 中为连接的虚拟机创建主机条目。默认情况下,vRealize Automation 将使用虚拟机的资源名称创建主机条目,但可以使用蓝图 YAML 中的 hostName
属性指定任何名称。为了与计算机进行通信,vRealize Automation 将为主机条目创建 ansible_host: IP Address
变量。可以覆盖默认行为,使用 FQDN 配置通信,具体方法为在 hostVariables
下指定关键字 ansible_host
,并提供 FQDN 作为其值。以下 YAML 代码片段显示了如何配置主机名和 FQDN 通信的示例:
Cloud_Ansible_Tower_1: type: Cloud Ansible Tower properties: host: name of host account: name of account hostName: resource name hostVariables: ansible_host:Host FQDN
在此示例中,通过提供 FQDN 覆盖默认的 ansible_host
值。如果用户希望 Ansible Tower 使用 FQDN 连接到主机,此功能可能非常有用。
YAML 中 hostVariables
的默认值为 ansible_host:IP_address
,并且 IP 地址用来与服务器通信。
如果 Ansible Tower 的 YAML 计数属性大于 1,则主机名可以映射到相应虚拟机的任何属性。以下示例显示了名为 Ubuntu-VM 的虚拟机资源的映射(如果要将其地址属性映射到主机名)。
hostname: '${resource.Ubuntu-VM.address[count.index]}'
将 Ansible Tower 组件添加到云模板时,可以指定要在云模板 YAML 中调用的作业模板。此外,还可以指定工作流模板或作业模板和工作流模板的组合。如果未指定模板类型,则默认情况下,vRealize Automation 会假定您将调用作业模板。
以下 YAML 代码段显示了如何在 Ansible Tower 云模板中调用作业模板和工作流模板组合的示例。
Cloud_Ansible_1: type: Cloud.Ansible.Tower properties: host: ‘${resource.CentOS_Machine.*}’ account: maxConnectionRetries: 2 maxJobRetries: 2 templates: provision: - name: My workflow type: workflow - name: My job template
我们添加了 maxConnectionsRetries
和 maxJobRetries
以处理 Ansible 相关故障。云模板接受自定义值,如果未提供值,则使用默认值。对于 maxConnectionRetries
,默认值为 10,对于 maxJobRetries
,默认值为 3。
Ansible Tower 集成的 Cloud Assembly 云模板包括 useDefaultLimit
属性,该属性具有 true 或 false 值,用于定义 Ansible 模板的执行位置。Ansible 模板可以是作业模板或工作流模板。如果该值设置为 true,则指定的模板将针对在 Ansible“模板”页面上的“限制”框中指定的计算机运行。如果该值设置为 false,则模板将针对已置备的计算机运行,但用户应选中 Ansible Tower“模板”页面上的“启动时提示”复选框。默认情况下,此属性的值为 false。以下 YAML 示例展示了 useDefaultLimit
属性在云模板中的显示方式。
templates: provision: - name: ping aws_credentials type: job useDefaultLimit: false extraVars: '{"rubiconSurveyJob" : "checkSurvey"}'
此外,如上例所示,可以使用 extraVars
属性指定额外变量或调查变量。此功能对于运行需要输入的模板非常有用。如果用户保留了调查变量,则您必须在云模板的 extraVars
部分中传递该变量,以避免出现错误。