我在带有主机文件的主机列表上运行一个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
答案 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