संभवतः ऐसा करने का सबसे अच्छा तरीका है - यह मानते हुए कि आप स्कूटॉड द्वारा प्रदान किए गए NOPASSWD समाधान का उपयोग नहीं कर सकते हैं, एमिस्क वॉटकोविसी के समाधान का उपयोग अन्सिबल वॉल्ट के संयोजन में करना है ।
उदाहरण के लिए, आपके पास कुछ इस तरह से एक प्लेबुक हो सकती है:
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
यहां हम एक फाइल को शामिल करते हैं, जिसे कहा जाता है secret
हमारा sudo पासवर्ड होगा।
हम इस फ़ाइल का एन्क्रिप्टेड संस्करण बनाने के लिए ansible-वॉल्ट का उपयोग करेंगे:
ansible-vault create secret
यह आपसे पासवर्ड मांगेगा, फिर फ़ाइल को संपादित करने के लिए अपना डिफ़ॉल्ट संपादक खोलें। आप अपने डाल सकते हैंansible_sudo_pass
यहाँ हैं।
उदाहरण के लिए: secret
:
ansible_sudo_pass: mysudopassword
सहेजें और बाहर निकलें, अब आपके पास एक एन्क्रिप्टेड है secret
फ़ाइल है, जिसे जब आप अपनी प्लेबुक चलाते हैं तो Ansible डिक्रिप्ट करने में सक्षम है। नोट: आप फ़ाइल को संपादित कर सकते हैंansible-vault edit secret
(और उस पासवर्ड को दर्ज करें जिसे आपने फ़ाइल बनाते समय इस्तेमाल किया था)
पहेली का अंतिम टुकड़ा अन्सिबल प्रदान करना है --vault-password-file
जिसके साथ यह आपके डिक्रिप्ट करने के लिए उपयोग करेगाsecret
फ़ाइल ।
नामक एक फ़ाइल बनाएँ vault.txt
और उसमें वह पासवर्ड डालें जो आपने इस्तेमाल करते समय बनाया थाsecret
फ़ाइल । पासवर्ड फ़ाइल में एक लाइन के रूप में संग्रहीत एक स्ट्रिंग होना चाहिए।
Ansible डॉक्स से:
.. सुनिश्चित करें कि फ़ाइल पर अनुमतियाँ ऐसी हों कि कोई अन्य आपकी कुंजी तक न पहुंच सके और आपकी कुंजी को स्रोत नियंत्रण में न जोड़े
अंत में: अब आप अपनी प्लेबुक को कुछ इस तरह से चला सकते हैं
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
ऊपर निम्नलिखित निर्देशिका लेआउट मान रहा है:
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
आप यहाँ पर Ansible Vault के बारे में अधिक पढ़ सकते हैं: https://docs.ansible.com/playbooks_vault.html