ใช้งาน Ansible Vault


$ echo 'password' > .ansible_vault_pass
$ ansible create secret.yml --vault-password-file=.ansible_vault_pass
$ ansible view secret.yml --vault-password-file=.ansible_vault_pass
$ ansible edit secret.yml --vault-password-file=.ansible_vault_pass

วิธีใช้งาน

การเก็บในที่นี้จะใช้ รูปแบบ yaml ตัวอย่าง

username : admin
password : passwordsecuremakmak

ใน ansible playbook จะเป็น

- hosts: "{{ environment }}"    
vars_files:      
- secret.yml  
task:    
- name: Log into private registry and force re-authorization      
docker_login:        
registry: "registry.private.com"        
username: "{{ username }}" ## จะเป็นการเอาตัวแปรที่เราประกาศไว้ใน secret.yml มาใช้ 
password: "{{ password }}" ## จะเป็นการเอาตัวแปรที่เราประกาศไว้ใน secret.yml มาใช้        
reauthorize: yes   
....

How to run

ก่อน อื่น โครงสร้างภายในจะเป็น

--
- ansible-playbook
 |- playbook.yml ## playbook ไฟล์ที่จะสั่งว่าให้ทำอะไรบ้าง     
    |- inventory ## ที่เก็บ config ต่างๆ     
    |- secret.yml  ## ข้อความที่สำคัญแล้วต้องการความปลอดภัย     
    |- app.key ## private key ที่จะเข้าไปยัง server ปลายทาง      
    |- vars.json ## ตัวแปรต่างๆ 

** อื่นๆ ถ้าจะให้ง่าย ต้อง ทำการ ssh-keygen แล้ว ssh-copy-id publickey ไปยัง server ปลายทาง หรืออาจจะ ใช้ ansible-playbook -k … เพื่อ ถามหา password ก็ได้ แต่มันไม่่ค่อยลื่นเท่าไร ในกรณีที่ไปใช้ cicd tool **

Ansible Run

$ ansible-playbook playbook.yml \
    -i inventory \
    --private-key app.key \
    --extra-vars @vars.json \
    --vault-password-file=~/.ansible_vault_pass