2016-02-17 173 views
1

夥計們, 在我.j2模板,我想用一個ansible變量從每臺主機像這樣ansible EC2 AZ變量

dc_suffix={{ ansible_ec2_placement }} 

然而,出現"msg": "AnsibleUndefinedVariable: ERROR! 'ansible_ec2_placement' is undefined"}錯誤。

什麼是正確的語法來獲取特定實例的可用區域?該ec2_facts docs稀少

回答

2

我已經能夠做到這一點:

- name: Gather facts 
    action: ec2_facts 
    register: ec2_facts 
在termplate

然後:

dc_suffix={{ ec2_facts.ansible_facts.ansible_ec2_placement_availability_zone }} 

任何問題這樣做呢?

謝謝!

+1

不,這看起來像是正確的做法。不幸的是,很多事實的文件等都很缺乏,部分原因是因爲它們太多了,它們依賴於你的環境和其他因素。我發現最好的方法就是像調用任務一樣調用任務,然後使用調試任務來顯示結果並將其用作指導。 –

0

這比@ CMAG的回答更簡單,至少ansible v 1.9:

- name: gather ec2 facts 
    action: ec2_facts 

- name: display AZ 
    debug: msg="region is {{ ansible_ec2_placement_availability_zone }}" 

從貝,您可以查看ec2_facts設定的所有事實有以下:

echo "localhost ansible_connection=local" >inv 
ansible -m ec2_facts localhost -i inv 

這將打印出json格式的大量變量。