Documentation

3. 自定义清单脚本

注解

从 Ansible Tower Version 3.8.3 开始,清单脚本已弃用。

_images/api_inventory_script_deprecation.png

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

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

注解

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

要管理 Tower 中的自定义清单脚本,请点击左侧导航栏中的 Inventory Scripts (inv-scripts) 图标。

Inventory scripts

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

Inventory scripts - create new

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

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

Inventory scripts - created

3.1. 编写清单脚本

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

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

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