Documentation

4. 清单文件导入

控制器允许用户从来源控制中选择清单文件的功能,而不是从头开始创建清单文件。这个功能与自定义清单脚本相同,唯一的不同是从源控制系统获取内容而不是编辑其内容浏览器。这意味着,这些文件不可编辑,并且因为清单在来源中更新,项目内的清单也会相应更新,包括与它们关联的 group_varshost_vars 文件或目录。SCM 类型可能会消耗清单文件和脚本、清单文件和自定义类型之间的重叠,两者均编写脚本。

默认情况下,任何导入的主机都会有一个 "imported" 的描述。这可以通过在给定主机上设置 _awx_description 变量来覆盖。例如,如果从源的 .ini 文件中导入,您可以添加以下主机变量:

[main]
127.0.0.1 _awx_description="my host 1"
127.0.0.2 _awx_description="my host 2"

同样,组描述也默认为 "imported",但也可以被 _awx_description 覆盖。

要在源控制中使用旧的清单脚本,请参阅 Automation Controller User Guide 中的 导出旧的清单脚本

4.1. 自定义动态清单脚本

存储在版本控制系统中的自定义动态清单脚本可以导入并运行。这有助于对清单脚本进行修改,而不必将脚本复制并粘贴到控制器中,而是直接从来源控制拉取出来,然后执行。该脚本必须编写来处理所有执行其操作所需的凭证,并且您负责安装该脚本所需的任何 Python 库(这与自定义动态清单脚本的要求相同)。这会应用到用户定义的清单源脚本和 SCM 来源,因为它们都对与 playbook 相关的 Ansible virtualenv 要求公开。

在编辑 SCM 清单源自身时,您可以指定环境变量。对于某些脚本来说,这已足够了,但这并不是一种安全的方法来存储可访问云提供程序或清单的 secret 信息。

更好的方法是为要使用的清单脚本创建新凭证类型。凭证类型需要指定所有必要的输入类型。然后,当您创建该类型的凭证时,secret 将以加密的形式保存。如果您将该凭证应用到清单源中,该脚本将能够访问这些输入,如环境变量或文件。

如需更多详情,请参阅 Credential types

4.2. SCM 清单源字段

使用的源字段有:

  • source_project:要使用的项目

  • source_path:项目内的相对路径指定目录或文件。如果留空,"" 仍是一个相对路径,指定项目的根目录

  • source_vars:如果在“文件”类型清单源上设置,则会在运行时将其传递给环境变量

项目更新会在使用清单更新的地方自动触发清单更新。创建清单源后立即调度项目更新。在相关作业运行时,清单或项目更新都不会阻断。当您有大型项目(大约 10 GB)时,/tmp 可能会出现磁盘空间的问题。

您可以通过 Create Inventory Source 页面手动在控制器用户界面中指定位置。有关创建清单源的信息,请参阅 Automation Controller User Guide清单 部分。

此列表应当在项目更新时刷新为最新的 SCM 信息。如果没有将项目作为 SCM 清单源,则在更新时不会刷新清单列表。

对于 SCM 来源的清单,清单更新的作业详情页面显示项目更新的状态指示符以及项目的名称。状态指示符链接到项目更新作业。项目名称链接到项目。

_images/jobs-details-scm-sourced-inventories.png

在相关作业运行时可以进行清单更新。

4.2.1. 支持的文件语法

automation controller 使用 Ansible 中的 ansible-inventory 模块来处理清单文件,并支持控制器所需的所有有效的清单语法。