文档

26. 最佳实践

26.1. 使用源代码控制

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

26.2. Ansible 文件和目录结构

请查看 Ansible 文档中的 Ansible 技巧和窍门。如果创建跨项目使用的通用角色集,应通过源代码控制子模块或 /opt 等通用位置访问这些角色。项目不应该期望从其他项目导入角色或内容。

注意

剧本不应使用 vars_prompt 功能,因为 Tower 不允许交互式地进行 vars_prompt 询问。如果您必须使用 vars_prompt,请参考并使用 Tower 的 调查 功能。

注意

剧本不应使用 Ansible 的 pause 功能,除非设置超时,因为 Tower 不允许交互式地取消暂停。如果您必须使用 pause,请确保设置超时。

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

26.3. 使用动态清单源

如果您有基础设施的外部事实来源,无论是云提供商还是本地 CMDB,最好定义一个清单同步过程并使用 Tower 对动态清单的支持(包括云清单源和 自定义清单脚本)。这样可以确保您的清单始终是最新的。

注意

对清单主机变量的编辑和添加将持续存在于清单同步之外,只要未设置 --overwrite_vars

26.4. 清单的变量管理

建议将变量数据与 Tower 中的对象一起保存(参见清单编辑器),而不是使用 group_vars/host_vars/。如果您使用动态清单源,只要未设置“覆盖变量”选项,Tower 就可以将此类变量与数据库同步。

26.5. 自动伸缩

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

26.6. 更大的主机计数

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

26.7. 持续集成 / 持续部署

对于像 Jenkins 这样的持续集成系统,要生成 Tower 作业,它应该向作业模板发出 curl 请求。作业模板的凭据不应要求提示任何特定密码。有关配置和使用说明,请参考 AWX CLI Ansible Tower 文档

26.8. LDAP 身份验证性能技巧

当 LDAP 用户在 Tower 中进行身份验证时,默认情况下,所有与用户相关的属性将在每次登录时更新到数据库中。在某些环境中,由于性能问题,可以跳过此操作。要避免这种情况,您可以禁用选项 AUTH_LDAP_ALWAYS_UPDATE_USER。有关其配置和使用说明,请参考 知识库文章 5823061。请注意,新用户仍将在首次登录时创建并将其属性推送到数据库。

警告

将此选项设置为 False 后,LDAP 用户属性的任何更改都不会推送到 Tower。属性只会在用户首次创建时推送到 Tower。