Ansible 101 – Ansible Vault

ကျွန်တော်တို့ ansible roles and playbooks တွေမှာ sensitive ဖြစ်တဲ့ password, ssh key, api key, api token တွေကို ansible vault ကိုသုံးပြီး encrypt လုပ်ထားလို့ရပါတယ်. ansible vault ကိုသုံးပြီး variables and files တွေကိုလဲ encrypt လုပ်လို့ရပါတယ်.

variables, files, and playbooks တွေမှာ sensitive ဖြစ်တဲ့ password, ssh key, api key, api token တွေကို plain text အနေနဲ့သုံးတာ secure မဖြစ်ပါဘူး.

ansible roles and playbooks တွေကို source control ( SCM ) ကိုသုံးပြီး sharing လုပ်တဲ့အခါမှာ sensitive ဖြစ်တဲ့ password, ssh key, api key, api token တွေကို plain text နဲ့သိမ်းတာ အဆင်မပြေပါဘူး. ansible vault နဲ့ decrypt လုပ်ပြီးမှ သိမ်းတာ ပိုအဆင်ပြေပါတယ်.

ကျွန်တော်တို့ ansible vault ကို သုံးပြီး ရှိပြီးတာ variables, files and playbooks တွေကို encrypt လုပ်လို့ရပါတယ်.

ansible vault ကိုသုံးပြီး encrypt လုပ်ထားတဲ့ variables, files and playbooks တွေကို create လုပ်လို့ရပါတယ်.

ansible vault က encryption standard အနေနဲ့ AES256 ကိုသုံးထားပါတယ်.

ansible vault ကိုသုံးပြီး files တွေကို encrypt လုပ်တဲ့အခါမှာ password ကိုသတ်မှတ်ပေးရမှာပါ, password file ကိုသုံးလဲရပါတယ်.

encrypt လုပ်ထားတဲ့ files တွေကို ansible ad hoc commands and playbooks တွေမှာသုံးလို့ရပါတယ်.

ansible vault နဲ့ variables, files, playbooks တွေကို encrypt လုပ်တာကိုနမူနာကြည့်ပါ.

aws s3 bucket list ကို ansible playbook ကိုသုံးပြီး manage လုပ်ကြည့်ရအောင်.

sensitive ဖြစ်တဲ့ aws access key and secret access key ကို variables file မှာသတ်မှတ်ထားပါတယ်.

aws access key and secret access key သတ်မှတ်ထားတဲ့ variables files ကို ansible vault ကိုသုံးပြီး encrypt လုပ်ထားပါတယ်.

vim aws_api_key.yml

aws_api_key.yml file ကို ansible vault ကို သုံးပြီး encrypt လုပ်ကြည့်ရအောင်.

ansible-vault encrypt aws_api_key.yml

ansible vault နဲ့ encrypt လုပ်ထားတဲ့ variables file ကိုဖွင့်ကြည့်ပါ.

ansible vault နဲ့ encrypt လုပ်ထားတဲ့ files ကိုဖွင့်ချင်းရင် “ansible-vault view” command ကိုသုံးပြီးကြည့်လို့ရပါတယ်.

ansible-vault view aws_api_key.yml

ansible vault နဲ့ encrypt လုပ်ထားတဲ့ variables file ကို ansible playbook မှာသုံးဖို့ password ထည့်ပေးရပါတယ်.

ansible vault နဲ့ variables files ကို encrypt လုပ်သုံးကပေးခဲ့တဲ့ password ကိုထည့်ပေးရမှာပါ.

ansible vault နဲ့ encrypt လုပ်ထားတဲ့ variables file ကို ansible playbook မှာသုံးတာကိုနမူနာကြည့်ပါ.

vim aws_s3.yml
---
- name: check aws s3
  hosts: localhost
  vars_files:
    - aws_api_key.yml
  tasks:
    - name: check aws s3 bucket list
      amazon.aws.aws_s3:
        bucket: test-s3-bucket-htunn
        mode: list
        aws_access_key: "{{ aws_access_key }}"
        aws_secret_key: "{{ aws_secret_key }}"
      register: s3_ls

    - name: use debug module
      debug:
        var: s3_ls

amazon collections က aws_s3 module ကိုသုံးဖို့ control node မှာ dependencies တွေကိုအရင် install လုပ်ထားဖို့လိုပါတယ်.

python boto3 and botocore ကို install လုပ်ထားဖို့လိုပါတယ်.

aws ကို ansible နဲ့ automate လုပ်တဲ့အကြောင်းကို ကျွန်တော်အရင်က sharing လုပ်ထားတာရှိပါတယ်.

ansible playbook ကို run ကြည့်ရအောင်.

ansible-playbook aws_s3.yml --ask-vault-pass -K

ansible vault password ကို password file create လုပ်ပြီးသုံးလဲရပါတယ်.

 vim vault_pass.txt

ansible playbook ကို run တဲ့အချိန်မှာ ansible vault password file ကိုထည့်ပေးရမှာပါ.

ansible-playbook aws_s3.yml -K --vault-password-file=vault_pass.txt

ansible vault နဲ့ encrypt လုပ်ထားတဲ့ file တွေရဲ့ password ကို ” ansible-vault rekey” command ကိုသုံးပြီး password ပြောင်းလို့ရပါတယ်.

” ansible-vault rekey ” command ကိုသုံးပြီး password ပြောင်းတာကိုနမူနာကြည့်ပါ.

“ansible-vault rekey” command မှာလဲ options တွေရွေးလို့ရပါတယ်.

“ansible-vault rekey” command ကိုသုံးပြီး password ကို ask-vault-pass or vault-password-file ကိုသုံးပြီးပြောင်းလို့ရပါတယ်.

complex ဖြစ်တဲ့ password တွေကိုပြောင်းတဲ့အခါမှာ password file ကိုသုံးတာပိုအဆင်ပြေပါတယ်.

ask-vault-pass ကိုသုံးပြီး password ပြောင်းတာကိုကြည့်ပါ.

 ansible-vault rekey aws_api_key.yml --ask-vault-password

“–ask-vault-password” နေရာမှာ “–vault-password-file” ကိုသုံးလို့ရပါတယ်. password file ကိုတော့သတ်မှတ်ပေးရမှာပါ.

“new-vault-password-file” ကိုသုံးပြီး password ပြောင်းတာကိုကြည့်ပါ.

 vim new_password.txt
 ansible-vault rekey aws_api_key.yml --vault-password-file vault_pass.txt --new-vault-password-file new_password.txt

new-vault-password file ကိုသတ်မှတ်ပေးဖို့လိုပါတယ်.

ansible vault အတွက် document ကို အောက်ပါ link မှာကြည့်ပါ.

https://docs.ansible.com/ansible/latest/user_guide/vault.html

ansible ကိုဆက်လေ့လာလိုလျှင်.

https://www.ansiblefordevops.com/

https://www.jeffgeerling.com/blog/2020/ansible-101-jeff-geerling-youtube-streaming-series

Thanks

Leave a Reply

Your email address will not be published. Required fields are marked *