在具有不同vars的多个服务器上的ansible playbook

时间:2017-04-26 15:05:08

标签: ansible

我在带有主机文件的主机列表上运行一个ansible playbook:

[consul]
${HOST1} ansible_ssh_host=${HOST1} ansible_ssh_user=devops ansible_ssh_pass=blabla
${HOST2} ansible_ssh_host=${HOST2} ansible_ssh_user=devops ansible_ssh_pass=blabla
.......so on...

问题是我需要为每个主机传递一个不同的变量。 我知道标志-e允许我使用ansible-playbook命令发送变量,但不是每个主机都有。

我用这个来运行剧本:

ansible-playbook -vvvv site.yml

如何为每个主机传递不同的var?

谢谢!

注意:我使用的是ansible 1.7.1

1 个答案:

答案 0 :(得分:2)

你应该有两种方法可以做到这一点:

1)将变量包含在主机文件中:

[consul]
${HOST1} ansible_ssh_host=${HOST1} .... myvar=x
${HOST2} ansible_ssh_host=${HOST2} .... myvar=y

2)或者使用include_vars任务根据主机名

加载文件
include_vars: "{{ ansible_ssh_host }}.yml"

如果要为主机加载大量变量,第二种方法很好。

对于更复杂的情况,查找模块可能会有所帮助: http://docs.ansible.com/ansible/playbooks_lookups.html