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