माइकल डीहैन (अन्सिबल के निर्माता) ने कोडरवेल पर एक पोस्ट किया जो बहुत ही समान मुद्दे के बारे में बात करता है। आप अपनी आवश्यकताओं (जैसे अनुमति और स्वामित्व) के अनुसार इसे समायोजित और विस्तारित कर सकते हैं। पोस्ट का प्रासंगिक हिस्सा यहां है:
इसे " with_items
" और एकल notify
कथन का उपयोग करके सरल बनाया जा सकता है । यदि कोई भी कार्य बदलता है, तो सेवा को ठीक उसी तरह से अधिसूचित किया जाएगा, जिसे प्लेबुक चलाने के अंत में फिर से शुरू करना होगा।
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items:
- { src: 'templates/foo.j2', dest: '/etc/splat/foo.conf' }
- { src: 'templates/bar.j2', dest: '/etc/splat/bar.conf' }
notify:
- restart fooserv
ध्यान दें कि चूंकि हमारे पास एक से अधिक अद्वितीय तर्क रखने वाले कार्य हैं, इसलिए हम " item
" template:
लाइन में " " नहीं कहते हैं , लेकिन with_items
हैश (शब्दकोश) चर के साथ उपयोग करते हैं। आप चाहें तो सूचियों का उपयोग करके इसे थोड़ा छोटा भी रख सकते हैं। यह एक शैलीगत प्राथमिकता है:
- name: template everything for fooserv
template: src={{item.0}} dest={{item.1}}
with_items:
- [ 'templates/foo.j2', '/etc/splat/foo.conf' ]
- [ 'templates/bar.j2', '/etc/splat/bar.conf' ]
notify:
- restart fooserv
बेशक, हम उस सूची को भी परिभाषित कर सकते हैं जो आप किसी अन्य फ़ाइल में चल रहे थे, जैसे groupvars/webservers
कि webservers
समूह के लिए आवश्यक सभी चर को परिभाषित करने के लिए " " फ़ाइल , या varsfiles
playbook के अंदर निर्देश से भरी हुई एक YAML फ़ाइल । देखो अगर हम ऐसा करते हैं तो यह कैसे साफ हो सकता है।
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items: {{fooserv_template_files}}
notify:
- restart fooserv
with_fileglob
हमेशा से संचालित होता हैfiles/
, आप के साथ खाका प्राप्त कर सकते हैं../templates/mytemplate/*
। stackoverflow.com/a/27407566/1695680