3. 库存文件导入

AWX 允许您从源代码控制中选择一个库存文件,而不是从头开始创建。此功能与自定义库存脚本相同,只是内容是从源代码控制中获取的,而不是在浏览器中编辑其内容。这意味着,这些文件是不可编辑的,并且随着库存更新到源代码,项目中的库存也会相应更新,包括与它们相关的 group_varshost_vars 文件或目录。SCM 类型可以同时使用库存文件和脚本,库存文件和自定义类型之间存在重叠,因为两者都使用脚本。

任何导入的主机默认情况下将具有“导入”的描述。这可以通过在给定主机上设置 _awx_description 变量来覆盖。例如,如果从源 .ini 文件导入,则可以添加以下主机变量

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

类似地,组描述也默认设置为“导入”,但也可以由 _awx_description 覆盖。

要使用源代码控制中的旧库存脚本,请参阅《AWX 用户指南》中的 导出旧库存脚本 获取详细信息。

3.1. 自定义动态库存脚本

可以导入并运行存储在版本控制中的自定义动态库存脚本。这使得更改库存脚本变得容易得多 - 不用将脚本复制粘贴到 AWX 中,而是直接从源代码控制中提取并执行。脚本必须编写为处理执行其工作所需的任何凭据,您负责安装脚本所需的任何 Python 库(这与自定义动态库存脚本的要求相同)。这适用于用户定义的库存源脚本和 SCM 源,因为它们都暴露于与剧本相关的 Ansible virtualenv 要求。

您可以在编辑 SCM 库存源本身时指定环境变量。对于某些脚本,这将足够,但是,这不是存储用于访问云提供商或库存的秘密信息的安全方法。

更好的方法是为要使用的库存脚本创建新的凭据类型。凭据类型将需要指定所有必要的输入类型。然后,在创建此类型的凭据时,秘密将以加密形式存储。如果您将该凭据应用于库存源,则脚本将能够像环境变量或文件一样访问这些输入。

有关更多详细信息,请参阅 凭据类型

3.2. SCM 库存源字段

使用的源字段是

  • source_project:要使用的项目

  • source_path:项目内部的相对路径,指示目录或文件。如果留空,“” 仍然是一个相对路径,指示项目的根目录

  • source_vars:如果在“文件”类型库存源上设置,则它们将在运行时传递给环境变量

项目的更新会自动触发库存更新,并在其中使用。项目的更新在创建库存源后立即安排。在相关作业运行期间,不会阻止库存或项目更新。在项目很大的情况下(约 10 GB),/tmp 上的磁盘空间可能会成为问题。

您可以在 AWX 用户界面中从“创建库存源”页面手动指定位置。有关创建库存源的说明,请参阅《AWX 用户指南》中的 库存 部分。

此列表应在项目更新时刷新到最新的 SCM 信息。如果没有库存源使用项目作为 SCM 库存源,则库存列表可能不会在更新时刷新。

对于具有 SCM 源的库存,库存更新的“作业详细信息”页面显示项目更新的状态指示器以及项目的名称。状态指示器链接到项目更新作业。项目名称链接到项目。

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

可以在相关作业运行时执行库存更新。

3.2.1. 支持的文件语法

AWX 使用 Ansible 的 ansible-inventory 模块来处理库存文件,并支持 AWX 所需的所有有效库存语法。