2016-06-30 16 views
7

मान लीजिए कि मैं group_vars में 3 फ़ाइलें हैं:Ansible समूह वार्स प्राथमिकता

abc.yml 
all.yml 
xyz.yml 

और एक ही चर उन में परिभाषित:

- my_var: abc 
- my_var: all 
- my_var: xyz 

Ansible documentation का कहना है:

किसी भी भीतर अनुभाग, एक var को फिर से परिभाषित करने से पिछले उदाहरण को ओवरराइट किया जाएगा। यदि एकाधिक समूहों में एक ही वैरिएबल होता है, तो आखिरी एक लोड जीत जाता है। यदि आप किसी प्ले के वर्र्स में दो बार एक चर परिभाषित करते हैं: अनुभाग, दूसरा जीतता है।

यह मतलब यह है कि लोड क्रम वर्णानुक्रमानुसार एक और abc.yml है सबसे कम प्राथमिकता है, xyz.yml जबकि उच्चतम है, या यह hosts में समूहों के आदेश पर निर्भर करता है?

लोडिंग ऑर्डर क्या है?


यह दिलचस्प है, कि hosts परिवर्तन में समूहों के आदेश को बदलने के साथ-साथ परिणाम है, लेकिन अप्रत्याशित तरीके से।

मैं ansible-playbook my_var.yml -c local चल रहा है (जो केवल चर मान देता है) के सभी संयोजनों के साथ करने की कोशिश की:

[all] 
localhost 

[xyz] 
localhost 

[abc] 
localhost 

लेकिन मैं अभी भी समझ नहीं है कि यह कैसे काम करता है।

+5

आप यहां बेहद अप्रत्याशित व्यवहार कर रहे हैं। करने के लिए सबसे अच्छी बात इस तरह से चर का पुन: उपयोग नहीं करना होगा। आपको हर कीमत पर विवादों से बचने का लक्ष्य रखना चाहिए, क्योंकि वे आपकी प्लेबुक को बहुत अस्थिर बना देंगे। यदि आपको चरों को ओवरराइड करने के लिए संघर्षों का उपयोग करना चाहिए, तो वे कितने क्रम में लोड होते हैं, यह बहुत स्पष्ट हो। मैं शायद समूह वर्र्स के बजाय कथन शामिल करके इसका उपयोग करूँगा। – smiller171

उत्तर

0

मैं कहूंगा कि इस मामले में उत्तरदायी व्यवहार अनिर्दिष्ट है।

0

यह निम्न समस्या की तरह लग रहा Ansible Git भंडार से, व्यवहार को संबोधित किया है हो सकता है आप का वर्णन: Ansible group_vars from inventory don't support repeated hosts

जुड़े से code changes को देखते हुए प्रतिबद्ध, ऐसा लगता है कि अब समूहों गहराई से तो हल कर दिया जाना चाहिए नाम से (वर्णानुक्रम)।

यह ध्यान देने योग्य है कि यह व्यवहार संभवतः आपके द्वारा चलाए जा रहे उत्तर के संस्करण के आधार पर भिन्न होगा, क्योंकि इन परिवर्तनों को केवल उत्तरदायी भंडार की stable-2.2 शाखा में विलय कर दिया गया था।