根据 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