ansible
गुप्त एन्क्रिप्शन
खोज…
टिप्पणियों
संवेदनशील डेटा एन्क्रिप्शन को संभालने के लिए Ansible वॉल्ट ( HashiCorp वॉल्ट के साथ गलत नहीं है!) प्रदान करता है। वॉल्ट मुख्य रूप से किसी भी संरचित डेटा जैसे चर, कार्य, हैंडलर को एन्क्रिप्ट करने का लक्ष्य रखता है।
संवेदनशील संरचित डेटा को एन्क्रिप्ट करना
सबसे पहले, एक प्रमुख फ़ाइल बनाएं, जैसे, vault_pass_file
, जिसमें आदर्श रूप से यादृच्छिक वर्णों का एक लंबा अनुक्रम होता है। एक यादृच्छिक पासवर्ड फ़ाइल बनाने के लिए लिनक्स सिस्टम में आप pwgen
का उपयोग कर सकते हैं:
pwgen 256 1 > vault_pass_file
फिर, संवेदनशील डेटा एन्क्रिप्ट करने के लिए इस फ़ाइल का उपयोग करें, जैसे, groups_vars/group.yml
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml
अब से, एक प्लेबुक चलाने के लिए आपको vault_pass_file
आवश्यकता है:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml
ध्यान दें, आप ANSIBLE_VAULT_PASSWORD_FILE
पर्यावरण चर सेट करने के बजाय ध्वज --vault-password-file vault_pass_file
उपयोग कर सकते हैं।
डिस्क पर मौजूद रहस्य को संपादित या डिक्रिप्ट करने के लिए आप क्रमशः ansible-vault decrypt
ansible-vault edit
और ansible-vault decrypt
उपयोग कर सकते हैं।
गैर-संरचित वॉल्ट-एन्क्रिप्टेड डेटा को डिक्रिप्ट करने के लिए लुकअप पाइप का उपयोग करना
वॉल्ट के साथ आप गैर-संरचित डेटा को भी एन्क्रिप्ट कर सकते हैं, जैसे कि निजी कुंजी फाइलें और फिर भी lookup
मॉड्यूल के साथ अपने प्ले में उन्हें डिक्रिप्ट कर सकते हैं।
---
- name: Copy private key to destination
copy:
dest=/home/user/.ssh/id_rsa
mode=0600
content=lookup('pipe', 'ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault view keys/private_key.enc')
तिजोरी-एन्क्रिप्टेड टेम्पलेट्स को डिक्रिप्ट करने के लिए local_action का उपयोग करना
आप एक नाटक चला सकते हैं जो local_action
मॉड्यूल का उपयोग करके वॉल्ट-एन्क्रिप्टेड टेम्पलेट्स पर निर्भर करता है।
---
- name: Decrypt template
local_action: "shell {{ view_encrypted_file_cmd }} {{ role_path }}/templates/template.enc > {{ role_path }}/templates/template"
changed_when: False
- name: Deploy template
template:
src=templates/template
dest=/home/user/file
- name: Remove decrypted template
local_action: "file path={{ role_path }}/templates/template state=absent"
changed_when: False
कृपया नोट changed_when: False
। यह महत्वपूर्ण है कि जब आप अपनी सुयोग्य भूमिकाओं के साथ बेवकूफी परीक्षण चलाते हैं - अन्यथा हर बार जब आप प्लेबुक चलाते हैं तो एक परिवर्तन का संकेत दिया जाता है। group_vars/all.yml
आप reuse के लिए एक वैश्विक डिक्रिप्ट कमांड सेट कर सकते हैं, उदाहरण के लिए, view_encrypted_file_cmd
रूप में।
group_vars / all.yml
---
view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"
अब, जब कोई नाटक चल रहा हो तो आपको अपनी वॉल्ट पासवर्ड फ़ाइल (आदर्श रूप से पूर्ण पथ के साथ) को इंगित करने के लिए ANSIBLE_VAULT_PASSWORD_FILE
पर्यावरण चर सेट करने की आवश्यकता है।