एक विशिष्ट निर्देशिका में Ansible गैलेक्सी भूमिकाएँ स्थापित करता है?




ansible-galaxy (4)

अपने भंडार फ़ोल्डर के भीतर अपनी भूमिकाओं को सहेजने के लिए (जो कि आप जो चाहते हैं, आपके सभी सामान संस्करण-नियंत्रित-अवसंरचना-जैसे-कोड में से एक है), और यह मानते हुए कि यह आपकी निर्देशिका लेआउट है:

repo-folder
    inventory     << likely you have this already
    roles         << this, too
    roles.galaxy  << create if you dont have it
    site.yml      << or whatever your playbook is called
    ansible.cfg   << repo-local config overriding gloabal ~/.ansible.cfg

ऊपर दिखाए गए ansible.cfg खोलें (या यदि आपके पास पहले से एक नहीं है तो इसे नए सिरे से बनाएं), और इस सामग्री को जोड़ें:

[defaults]
roles_path = roles.galaxy:roles

चल ansible-galaxy install SOMETHING चल ansible-galaxy install SOMETHING तब roles.galaxy भीतर अपनी सामग्री को roles.galaxy

इसलिए मुझे लगा कि मुझे अपनी भूमिकाएं लिखने के बजाय, जब संभव हो तो Ansible Galaxy का उपयोग शुरू कर देना चाहिए। मैंने अभी अपनी पहली भूमिका स्थापित की है और इसे /etc/local/ansible/roles पर स्थापित किया गया है (मैं OSX पर हूँ)। अब मुझे आश्चर्य है कि आप इस भूमिका को कैसे स्थापित करते हैं जहां मुझे वास्तव में इसकी आवश्यकता है? क्या मुझे केवल उस भूमिका की प्रतिलिपि करनी है जहाँ मुझे इसकी आवश्यकता है या क्या इसे करने का एक Ansible तरीका है?


मुझे अपनी भूमिकाओं के लिए एक वैश्विक रास्ता चाहिए था। आप यह कर सकते हैं मेरे डालने ansible.cfg ~ / .ansible.cfg पर। एक परियोजना आधारित हमेशा एक मिसाल होगी।

cat ~/.ansible.cfg
[defaults]
roles_path = ~/.ansible/roles

यहाँ बताया गया है कि मैंने आकाशगंगा की भूमिकाओं और किसी भी प्लेटफ़ॉर्म के लिए काम करने की समस्या को कैसे हल किया।

अपनी ansible.cfg फ़ाइल संपादित करें, जो आपके स्रोत नियंत्रण का हिस्सा होनी चाहिए और इसे इसमें जोड़ें:

roles_path = roles.galaxy:roles

एक निर्देशिका का निर्माण करें जिसका नाम roles.galaxy । अब से और जब आप ansible-galaxy install xxx.yyy , तो वह roles.galaxy में स्थापित हो roles.galaxy

आप roles निर्देशिका के अंदर अपनी स्थानीय भूमिकाओं और roles में समुदाय वालों को रखना जारी रखेंगे। दोनों को आपके गिट रेपो में रखा जाना चाहिए।

कभी भी उन्हें आकाशगंगा से स्थापित करने पर विचार न करें, यह विफलता के कई अतिरिक्त बिंदुओं को जोड़ने के अलावा एक बड़ा सुरक्षा जोखिम होगा।


सामान्य तौर पर, मैं अपनी सभी साझा भूमिकाओं को एक एकल मास्टर फ़ोल्डर में चिपका देता हूं जो मेरी सभी परियोजनाओं में साझा हो जाती है। यह मैनुअल कॉपी / पेस्ट करने की थकाऊता और एक ही भूमिका की कई प्रतियों को अपडेट करने से बचता है।

स्थानीय प्रोजेक्ट फ़ोल्डर के अलावा उस मास्टर फ़ोल्डर में भूमिकाएँ देखने के लिए ansible को बताने के लिए मैं प्रत्येक प्रोजेक्ट के ansible.cfg को संशोधित करता हूं।

नमूना ansible.cfg :

[defaults]
roles_path = ~/Code/ansible_roles 

पहले एक भूमिका के लिए स्थानीय प्रोजेक्ट खोजता है, उसके बाद roles_path खोजता roles_path । आप उन्हें कॉलन के साथ अलग करके कई पथ निर्दिष्ट कर सकते हैं।

डिफ़ॉल्ट रूप से, ansible-galaxy install username.rolename , भूमिका को स्थापित करेगा जिससे roles_path कॉन्फ़िगर किए गए ansible.cfg को रोल किया जा ansible.cfg , इसलिए आपको यह सब करने की बहुत जरूरत है।

कभी-कभी मैं विशिष्ट प्रोजेक्ट में भूमिका स्थापित करना चाहता हूं, न कि मास्टर फ़ोल्डर। उदाहरण के लिए, संस्करण संघर्षों से बचने के लिए जब दो भूमिकाओं की भूमिका निर्भरता होती है, जिसमें एक ही भूमिका के विभिन्न संस्करणों की आवश्यकता होती है। उस स्थिति में, आप -p ROLES_PATH या --roles-path=ROLES_PATH विकल्प का उपयोग कर सकते हैं:

ansible-galaxy install username.rolename -p ~/Code/project_deploy/ansible/roles/

Ansible 1.9 में, आप मैन्युअल रूप से निर्दिष्ट कर सकते हैं कि आप अपनी परियोजना की requirements.yml में कहाँ स्थापित होना चाहते requirements.yml । दुर्भाग्यवश, यह path परम को 2 में हटा दिया गया था :

# from galaxy
- src: jeffwidman.elasticsearch

# from private github repo, installing to a relative path
- src: https://github.com/jeffwidman/private_ansible_role
  path: vagrant/roles/

यदि आप चीजों को और अधिक अनुकूलित करना चाहते हैं, तो कई ansible.cfg फ़ाइलों के लिए समर्थन जोड़ने के लिए एक खुला मुद्दा है जो आपको आसानी से roles_path को विशिष्टता के विभिन्न स्तरों पर सेट करने roles_path । Ansible मौजूदा वर्किंग डायरेक्टरी में .ansible.cfg , .ansible.cfg , .ansible.cfg को होम डायरेक्टरी या /etc/ansible/ansible.cfg , जो भी पहले पाता है।





ansible-galaxy