2017-04-26 80 views
1

我運行的主機列表上的ansible劇本與主機文件:在多個服務器上ansible劇本不同瓦爾

[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

我如何可以通過不同的變種爲每臺主機?

謝謝!

注:我使用ansible 1.7.1

+1

什麼樣的變量(值)是什麼?您可以在某處創建一個映射,使用host_vars(group_vars),查詢庫存以發現有關其他主機的事實等。 – weirdan

+0

由於您明確說過要「爲每個主機傳遞不同的變量」,因此應該檢出host_vars可在您的1.7版本中使用:http://docs.ansible.com/ansible/intro_inventory.html –

回答

1

兩種方法,你應該能夠做到這一點:

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