在Ansible主机文件中将主机定义为变量

时间:2016-07-29 18:48:44

标签: ansible ansible-inventory

我有一个相当简单的hosts文件

[clients]
qas0062
[dbs_server]
qas0063

对于项目的用户,我们不希望他们修改hosts文件,而是我们有一个单独的user.config.yml文件,其中包含各种用户可配置的参数。我们有条目,如

dbs_server: qas0065

所以问题是:是否可以在hosts文件中使用一个使用user.config.yml中定义的值的变量?什么是格式?

2 个答案:

答案 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)时,这很有效。