Ansible:针对特定清单运行附加任务

Ansible:针对特定清单运行附加任务

根据 Ansible 文档中的“最佳实践”一章,我为开发和生产环境分别设置了清单文件。虽然这两个环境都安装了相同的软件堆栈,但还是存在一些差异:cron 作业仅安装在生产主机上,指向 VirtualBox 共享文件夹的符号链接应仅存在于开发环境中。我目前除了使用“common”角色外,还使用开发和生产角色,并main.yml根据inventory_hostname变量导入它们。

这感觉很笨拙,因为现在有很多文件夹和文件只用于少数额外任务,并且使用它inventory_hostname来区分开发和生产环境违反了 DRY 原则,因为我们是在开发还是在生产中现在由库存文件和变量的选择决定inventory_hostname。有没有更优雅的方式来处理这个问题?

答案1

如果你正在使用https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#alternative-directory-layoutenv您可以在 dev/group_vars/all.yml 和 prod/group_vars/all.yml 中放置一个变量。

如果没有,您可以将其添加到库存文件的末尾:

[all:vars]
env=foo

相关内容