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

Defining host as variable in Ansible hosts file

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

[clients]
qas0062
[dbs_server]
qas0063

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

之类的条目
dbs_server: qas0065

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

很确定您不能模板化清单中的实际主机密钥条目,但您可以模板化其 ansible_host 连接变量的值以实现大致相同的效果,例如:

[clients]
clienthost ansible_host="{{ clienthost_var }}"
[dbs_server]
dbsserver ansible_host="{{ dbsserver_var }}"

然后在播放开始执行之前从外部变量设置这些变量的值(例如,使用 vars_files 指令或 -e)。

还有另一种方法可以做同样的事情。我们可以在 playbook

中使用以下语法来简单地引用主机(清单)文件中的值

host={{ groups['dbs_server'][0] }}

当您在组中有一个条目时(db_server 在这种情况下)