Ansible:为多组共用主机指定主机变量的DRY实现方法
如何用DRY原则为多组主机定义Ansible主机变量?
有没有办法遵循DRY原则,给同时属于多个组的Ansible主机指定主机变量?比如下面的示例里,bar.example.com和three.example.com分别归属两个组,它们的ansible_host被重复定义:
all: hosts: mail.example.com: ansible_host: 10.10.10.33 children: webservers: hosts: foo.example.com: ansible_host: 10.10.10.17 bar.example.com: ansible_host: 10.10.10.18 dbservers: hosts: one.example.com: ansible_host: 10.10.10.1 two.example.com: ansible_host: 10.10.10.2 three.example.com: ansible_host: 10.10.10.3 test: hosts: bar.example.com: ansible_host: 10.10.10.18 # 不想在这里重复定义 three.example.com: ansible_host: 10.10.10.3 # 同样的重复问题
能不能让ansible_host(或是软件许可证这类主机变量)仅定义一次?在Ansible官方文档中未找到适配方案,目前可以用YAML锚点作为临时解决办法:
all: hosts: mail.example.com: ansible_host: 10.10.10.33 children: webservers: hosts: foo.example.com: ansible_host: 10.10.10.17 bar.example.com: &bar ansible_host: 10.10.10.18 dbservers: hosts: one.example.com: ansible_host: 10.10.10.1 two.example.com: ansible_host: 10.10.10.2 three.example.com: &three ansible_host: 10.10.10.3 test: hosts: bar.example.com: << : *bar three.example.com: << : *three
内容的提问来源于stack exchange,提问作者Vasiliy Sharapov
相关产品推荐
相关产品推荐

