में set_facts और with_items का उपयोग करके मैं वर्तमान में उत्तर 1.7.2 का उपयोग कर रहा हूं। मेरे पास निम्न परीक्षण प्लेबुक है:Ansible
---
- hosts: localhost
tasks:
- name: set fact 1
set_fact: foo="[ 'zero' ]"
- name: set fact 2
set_fact: foo="{{ foo }} + [ 'one' ]"
- name: set fact 3
set_fact: foo="{{ foo }} + [ 'two', 'three' ]"
- name: set fact 4
set_fact: foo="{{ foo }} + [ '{{ item }}' ]"
with_items:
- four
- five
- six
- debug: var=foo
पहला कार्य एक तथ्य सेट करता है जो इसमें एक आइटम के साथ एक सूची है। बाद के कार्य उस सूची में अधिक मूल्यों के साथ संलग्न होते हैं। पहले तीन कार्य अपेक्षित के रूप में काम करते हैं, लेकिन आखिरी वाला नहीं है। यहाँ उत्पादन जब मैं इस चलाने है:
PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [set fact 1] ************************************************************
ok: [localhost]
TASK: [set fact 2] ************************************************************
ok: [localhost]
TASK: [set fact 3] ************************************************************
ok: [localhost]
TASK: [set fact 4] ************************************************************
ok: [localhost] => (item=four)
ok: [localhost] => (item=five)
ok: [localhost] => (item=six)
TASK: [debug var=foo] *********************************************************
ok: [localhost] => {
"foo": [
"zero",
"one",
"two",
"three",
"six"
]
}
PLAY RECAP ********************************************************************
localhost : ok=6 changed=0 unreachable=0 failed=0
कार्य 4 में with_items और तथ्य यह है कि उत्पादन ठीक से कि सूची में आइटम्स से अधिक दोहराया कार्य चलता देखते हुए, मैं सभी नंबरों को शामिल करने के लिए परिणाम की उम्मीद है | छह के माध्यम से शून्य। लेकिन वह अंतिम कार्य सूची में अंतिम आइटम के साथ केवल set_fact का मूल्यांकन करना प्रतीत होता है। क्या यह संभवतः उत्तर में एक बग है?
संपादित करें: मैंने अभी भी उत्तर 1.8 पर इसका परीक्षण किया और आउटपुट समान था।
मेरे सबसे अच्छा अनुमान है कि ansible होगा '{{foo}} का मूल्यांकन करता है 'कार्य के निष्पादन के दौरान केवल एक बार' तथ्य तथ्य 'निर्धारित करता है। क्या आप यह समझना चाहते हैं कि दो सूचियों को कैसे मर्ज करना है या सिर्फ जिज्ञासा है? – Kashyap
हाँ, ऐसा लगता है कि यह मामला है। नहीं, सिर्फ सूचियों को मर्ज करने की कोशिश नहीं कर रहा है। मैं गतिशील रूप से जेनरेट किए गए फ़ाइल नामों का ट्रैक रखने की कोशिश कर रहा हूं ताकि अन्य कार्य उनके माध्यम से पुनरावृत्त हो सकें। –
ऐसा लगता है कि यह एक विशेषता है जो बहुत से लोगों की इच्छा है, और इसके लिए एक [पुल अनुरोध] (https://github.com/ansible/ansible/pull/8019) भी है, लेकिन यह किसी कारण से बाहर निकलता रहता है ... –