31. 最佳实践

31.1. 使用源代码控制

虽然 AWX 支持直接存储在服务器上的剧本,但最佳实践是将您的剧本、角色和任何相关详细信息存储在源代码控制中。这样,您将拥有一个审计跟踪,描述何时以及为何更改了用于自动化基础设施的规则。此外,它允许您轻松地与基础设施或团队的其他部分共享剧本。

31.2. Ansible 文件和目录结构

请查看 Ansible 文档中的 Ansible 提示和技巧。如果创建要在项目之间使用的通用角色集,则应通过源代码控制子模块或通用位置(例如 /opt)访问这些角色。项目不应期望从其他项目导入角色或内容。

注意

剧本不应使用 vars_prompt 功能,因为 AWX 不允许交互式地回答 vars_prompt 问题。如果您必须使用 vars_prompt,请参考并使用 调查 功能。

注意

剧本不应在没有超时的情况下使用 Ansible 的 pause 功能,因为 AWX 不允许交互式地取消暂停。如果您必须使用 pause,请确保设置超时。

运行的作业使用剧本目录作为当前工作目录,尽管作业应该被编码为使用 playbook_dir 变量,而不是依赖于此。

31.3. 使用动态库存源

如果您有基础设施的外部真相来源,无论是云提供商还是本地 CMDB,最好定义一个库存同步流程并使用对动态库存的支持(包括云库存来源)。这确保您的库存始终是最新的。

注意

对库存主机变量的编辑和添加将在库存同步后持续存在,只要未设置 --overwrite_vars

31.4. 库存变量管理

建议将变量数据与主机和组定义一起保留(请参阅库存编辑器),而不是使用 group_vars/host_vars/。如果您使用动态库存源,AWX 可以将这些变量与数据库同步,只要未设置“覆盖变量”选项。

31.5. 自动扩展a

使用“回调”功能允许新启动的实例请求配置,这对于自动扩展场景或配置集成非常有用。

31.6. 大量主机数量

考虑在作业模板上将“forks”设置为更大的值以增加执行运行的并行性。有关调整 Ansible 的更多信息,请参阅 Ansible 博客

31.7. 持续集成/持续部署

对于诸如 Jenkins 之类的持续集成系统,要生成作业,它应该向作业模板发出 curl 请求。作业模板的凭据不应要求提示任何特定密码。请参阅 CLI 文档,以获取配置和使用说明。