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

时间:2016-06-15 10:32:23

标签: ansible ansible-playbook

我想通过Ansible将初始值插入客户端的sqlite,并且每个主机的值都不同。

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

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

我希望通过{{ {{ inventory_hostname }}.id }}获取并插入.sql的模板,但它无效。

2 个答案:

答案 0 :(得分:1)

您可以通过修改您的变量来实现:

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

然后在你的模板中:

{{ clients[inventory_hostname].id }}

其中inventory_hostnamehostname1hostname2等。

希望能帮助你。

答案 1 :(得分:1)

角色不应包含特定于主机的配置。而是将主机特定配置存储在主机变量中。为host_vars目录中与您的剧本相关的每个主机创建一个文件,例如host_vars/hostname1内容

id: id_1
value: value_1

此文件由Ansible自动加载,您可以立即使用变量idvalue

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

hostvars[inventory_hostname].id