我有一个相当简单的hosts
文件
[clients]
qas0062
[dbs_server]
qas0063
对于项目的用户,我们不希望他们修改hosts
文件,而是我们有一个单独的user.config.yml
文件,其中包含各种用户可配置的参数。我们有条目,如
dbs_server: qas0065
所以问题是:是否可以在hosts
文件中使用一个使用user.config.yml
中定义的值的变量?什么是格式?
答案 0 :(得分:3)
非常确定您无法对库存中的实际主机密钥条目进行模板化,但您可以将其ansible_host
连接变量的值模板化以实现大致相同的效果,例如:
[clients]
clienthost ansible_host="{{ clienthost_var }}"
[dbs_server]
dbsserver ansible_host="{{ dbsserver_var }}"
然后在播放开始执行之前设置来自外部变量的变量的值(例如,使用vars_files
指令或-e)。
答案 1 :(得分:0)
还有另一种方法可以做同样的事情。我们可以使用playbook中的以下语法简单地引用hosts(inventory)文件中的值
host={{ groups['dbs_server'][0] }}
当组中有一个条目(在这种特定情况下为db_server)时,这很有效。