Ansible:如何通过主机名获取特定于主机的变量值
我想通过Ansible将初始值插入到客户机的sqlite中,每个主机的值都不同 我创建了myrole/vars/main.yml: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:
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会自动加载此文件,您可以立即使用varsid
和value
如果需要从其他主机或本地任务访问变量,可以通过全局hostvars
dict:
hostvars[inventory_hostname].id