Documentation

3. 自定义清单脚本

注解

从 Automation Controller Version 4.0.0 开始,清单脚本已弃用。

_images/api_inventory_script_deprecation.png

如果您使用自定义清单脚本,请迁移至从项目中获取这些脚本。如需更多详情,请参阅后续部分中的 清单文件导入,并参阅 Automation Controller User Guide 中的 清单源

控制器提供了从 Amazon AWS、Google Compute Engine 等云环境中同步动态清单的内置支持。控制器还能够使用自定义脚本从您自己的清单源中拉取。

注解

只要 --overwrite_vars **没有**设置,对清单进行同步后编辑和添加的 Inventory 主机变量仍然会保持。

要管理控制器中的自定义清单脚本,请点左侧导航栏中的 Inventory Scripts

Inventory scripts

要添加一个新的自定义清单脚本,请点击 add 按钮。

Inventory scripts - create new

输入脚本的名称以及可选的描述。然后选择该脚本所属的 Organization

然后,您可以将本地系统上的脚本拖放到 Custom Script 文本框中,或者剪切并粘贴清单脚本的内容。

Inventory scripts - created

3.1. 编写清单脚本

您可以使用控制器机器上安装的任何动态语言(如 shell 或 python)编写清单脚本。它们必须以普通的脚本 shebang 行(如 #!/bin/bash#!/usr/bin/python)开头。它们以 awx 用户身份运行。清单脚本调用 '--list' 来列出返回 JSON 哈希/字典的清单。

通常,它们连接到网络以从其他来源检索清单。在启用多租户安全时(详情请参阅 Security),清单脚本将无法访问大多数控制器机器。如果需要访问本地控制器机器,请在 /etc/tower/conf.d/custom.py 中进行配置。

如需有关动态清单脚本以及如何编写这些脚本的更多信息,请参阅 Ansible 文档的 Intro to Dynamic InventoryDeveloping Dynamic Inventory Sources 部分,或者参阅 GitHub 上的 example dynamic inventory scripts