Documentation

31. 最佳实践

31.1. 使用源控制

虽然 automation controller 支持把 playbook 直接存储在服务器上,但最佳实践方案是将 playbook 、role 以及任何关联的信息数据存储在源控制系统中。通过这种方式,您可以了解何时和为什么更改了用于自动化基础架构的规则。另外,它还可以帮助您轻松地与其他相关团队共享 playbook。

31.2. Ansible 文件和目录结构

请参阅 Ansible 文档中的 Ansible Tips and Tricks。如果创建了一组可用于多个项目的常用角色,则应该通过源控制子模块或常见位置(如 /opt )来访问这些角色。项目不应该从其他项目中输入角色或内容。

注解

playbook 不应该使用 vars_prompt 功能,因为 automation controller 并不能以互动方式处理 vars_prompt 问题。如果您必须使用 vars_prompt,请使用 调查 功能。

注解

playbook 不应该在没有设置超时的情况下使用 Ansible 的 pause 功能,因为 automation controller 不允许交互式取消暂停。如果必须使用 pause,请设置超时。

作业运行会使用 playbook 目录作为当前工作目录,当最佳做法是将作业设置为使用 playbook_dir 变量。

31.3. 使用动态清单源(Dynamic Inventory Sources)

如果您的基础架构有外部的数据源,无论是云供应商还是本地 CMDB,最好定义一个清单同步过程,并使用对动态清单(包括云清单源)的支持。 这样可确保您的清单始终保持最新状态。

注解

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

31.4. 清单的变量管理

我们建议将变量数据与主机和组定义一起保留(请参阅清单编辑器),而不是使用 group_vars/host_vars/。如果使用动态清单源,只要未设置 Overwrite Variables 选项,控制器就可以与数据库同步这些变量。

31.5. 自动缩放

在自动缩放或置备集成的情况下,使用 "callback" 功能来允许新引导的实例请求配置是非常有用的。

31.6. 大量主机

考虑在一个作业模板中把 "forks" 设置为一个大的值来增加任务执行的并行性。如需了解更多与微调 Ansible 相关的信息,请参阅 the Ansible blog

31.7. 持续集成/持续部署

对于为一个持续集成的系统(如 Jenkins)生成作业,应该向作业模板发出 curl 请求。作业模板的凭证应该可以在不需要提示任何特定密码的情况下提供。更多相关信息,请参阅 CLI documentation