Ansible:如何通过主机名获取特定于主机的变量值

Ansible:如何通过主机名获取特定于主机的变量值,ansible,ansible-playbook,Ansible,Ansible Playbook,我想通过Ansible将初始值插入到客户机的sqlite中,每个主机的值都不同 我创建了myrole/vars/main.yml: hostname1: id: id_1 value: value_1 hostname2: id: id_2 value: value_2 我想通过{{{{inventory\u hostname}}.id}获得它,并插入.sql的模板,但它不起作用。可以通过如下方式修改变量来实现: clients: hostname1:

我想通过Ansible将初始值插入到客户机的sqlite中,每个主机的值都不同

我创建了myrole/vars/main.yml:

hostname1:
    id: id_1
    value: value_1
hostname2:
    id: id_2
    value: value_2

我想通过
{{{{inventory\u hostname}}.id}
获得它,并插入.sql的模板,但它不起作用。

可以通过如下方式修改变量来实现:

clients:
  hostname1:
    id: id_1
    value: value_1
  hostname2:
    id: id_2
    value: value_2
然后在模板中:

{{ clients[inventory_hostname].id }}
其中,
inventory\u主机名
将是
hostname1
hostname2


希望对您有所帮助。

角色不应包括特定于主机的配置。而是将特定于主机的配置存储在主机变量中。在
host\u vars
目录中为与您的playbook相关的每个主机创建一个文件,例如带有内容的
host\u vars/hostname1

id: id_1
value: value_1
Ansible会自动加载此文件,您可以立即使用vars
id
value

如果需要从其他主机或本地任务访问变量,可以通过全局
hostvars
dict:

hostvars[inventory_hostname].id