我想通过Ansible将初始值插入客户端的sqlite,并且每个主机的值都不同。
我创建了myrole / vars / main.yml:
hostname1:
id: id_1
value: value_1
hostname2:
id: id_2
value: value_2
我希望通过{{ {{ inventory_hostname }}.id }}
获取并插入.sql的模板,但它无效。
答案 0 :(得分:1)
您可以通过修改您的变量来实现:
clients:
hostname1:
id: id_1
value: value_1
hostname2:
id: id_2
value: value_2
然后在你的模板中:
{{ clients[inventory_hostname].id }}
其中inventory_hostname
为hostname1
,hostname2
等。
希望能帮助你。
答案 1 :(得分:1)
角色不应包含特定于主机的配置。而是将主机特定配置存储在主机变量中。为host_vars
目录中与您的剧本相关的每个主机创建一个文件,例如host_vars/hostname1
内容
id: id_1
value: value_1
此文件由Ansible自动加载,您可以立即使用变量id
和value
。
如果您需要从其他主机或本地任务访问变量,您可以通过全局hostvars
dict访问它们:
hostvars[inventory_hostname].id