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