虽然 Tower 支持把 playbook 直接存储在 Tower 服务器上,但最佳实践方案是将 playbook 、role 以及任何关联的信息数据存储在源控制系统中。通过这种方式,您可以了解何时和为什么更改了用于自动化基础架构的规则。另外,它还可以帮助您轻松地与其他相关团队共享 playbook。
请参阅 Ansible 文档中的 Ansible 最佳实践部分中的内容(http://docs.ansible.com/playbooks_best_practices.html)。如果创建了一组可用于多个项目的常规角色,则最好把它们保存在源控制系统中,或放置在一个公共的目录中,如 /opt
。项目不应该从其他项目中输入角色或内容。
注解
playbook 不应该使用 vars_prompt
功能,因为 Tower 并不能以互动方式处理 vars_prompt
的问题。如果您必须使用 vars_prompt
,请使用 Tower 的 调查 功能。
注解
playbook 不应该在没有超时设置的 Ansible 中使用 pause
功能,因为 Tower 不允许交互式地取消暂停行为。如果需要使用 pause
,请设置超时功能。
在 Tower 中运行的作业会使用 playbook 目录作为当前工作目录,虽然应该将作业设置为使用 playbook_dir
变量。
如果您的基础架构有外部的数据源,无论是云供应商还是本地 CMDB,最好定义一个清单同步过程,并使用 Tower 对动态清单(包括云清单源和 custom inventory scripts)的支持。 这样可确保您的清单始终保持最新状态。
注解
只要 --overwrite_vars
**没有**设置,对清单进行同步后编辑和添加的 Inventory 主机变量仍然会保持。
我们鼓励将变量数据与 Tower 中的对象同步(请参阅清单编辑器),而不是使用 group_vars/
和 host_vars/
。如果使用动态清单源,只要未设置 Overwrite Variables 选项,Tower 就可以与数据库同步这些变量。
在自动缩放或置备集成的情况下,使用 "callback" 功能来允许新引导的实例请求配置是非常有用的。
考虑在一个作业模板中把 "forks" 设置为一个大的值来增加任务执行的并行性。如需了解更多与微调 Ansible 相关的信息,请参阅 the Ansible blog。
对于为一个持续集成的系统(如 Jenkins)生成 Tower 作业,应该向作业模板发出 curl 请求。作业模板的凭证应该可以在不需要提示任何特定密码的情况下提供。更多相关信息,请参阅 AWX CLI Ansible Tower documentation。
当 LDAP 用户在 Tower 中进行身份验证时,默认情况下,所有用户相关属性都会在每次登录时在数据库中更新。在某些环境中,可能会因为性能问题而跳过此操作。为了避免这个现象,您可以禁用选项 AUTH_LDAP_ALWAYS_UPDATE_USER。如需相关配置和用法说明,请参阅 Knowledge Base Article 5823061。请注意,在第一次登录时新用户会被创建,并将其属性推送到数据库。
警告
将此选项设置为 False 时,不会将对 LDAP 用户属性的更改推送到 Tower。属性仅在首次创建用户时推送到 Tower。