[ANSIBLE] Ansible Vault

Posted by Albert 288Day 20Hour 49Min 15Sec ago [2024-07-05]

파일data 암호화 기능으로서 사용방법은 아래와 같다.


ansible-vault

SUB-COMMAND 사용법
create: 암호화될 빈 파일 생성
decrypt: 암호화된 파일 복호화
edit: 암호화된 파일 수정(vi)
view: 암호화된 파일 확인
encrypt: 평문 파일 암호화
rekey: Vault 패스워드 변경
encrypt_string: 텍스트 암호화

Option
--ask-vault-password: 기본 옵션(Vault 패스워드 물음)
--vault-password-file: Vault 패스워드 파일 지정


암호화된 파일생성(파일생성시 비밀번호 입력필요)

[root@asimblecontroller asimble]' ansible-vault create hihi.yml
New Vault password:
Confirm New Vault password:

내용

todo: runjob1
todo1: runjob2

생성된 파일 vi문으로 확인 (암호화된 내용으로 확인됨)

[root@asimblecontroller asimble]' vi hihi.yml
$ANSIBLE_VAULT;1.1;AES256
65643033626335336563376665396438636631323733643339353665393736303530623035616331
6164306434633332323433356365616337316136363933310a376132643032303932643365343535
64653666313363363364333966336137313533323432646363626133626437656331353238306366
3338643734363262370a636532323839326561653737376536346136346161623964343266366562
35613932323434356337356166303466613638666135393036616132373838366630

ansible-vault view xxx 로 확인시 정상적은 텍스트 내용 확인 가능

[root@asimblecontroller asimble]' ansible-vault view hihi.yml
Vault password:
todo: runjob1
todo1: runjob2



위에서 vault파일 생성시 비밀번호를 입력하여 생성하였는데 해당 비밀번호를 별도의 파일에 넣고 해당 파일내용을 옵션으로 지정하여

비밀번호 없이 바로 파일 생성할 수 있다.


우선 비번저장 파일생성

[root@asimblecontroller asimble]' vi vault_pwd
pwd!@'

생성된 비번파일로 파일생성(생성시 비번없이 바로 생성됨)

[root@asimblecontroller asimble]' ansible-vault create --vault-password-file ./vault_pwd hihi2.yml
todo: eat lunch
todo1: hard working


파일내용 확인

[root@asimblecontroller asimble]' ansible-vault view hihi2.yml --vault-password-file ./vault_pwd
todo: eat lunch
todo1: hard working



기존 파일 암호화(encrypt)

[root@asimblecontroller asimble]' ansible-vault encrypt first-playbook.yml --vault-password-file ./vault_pwd
Encryption successful

파일확인

[root@asimblecontroller asimble]' vi first-playbook.yml
$ANSIBLE_VAULT;1.1;AES256
38333339303066313132333866363436346637373637643930616132303362356536346332393631
3332343538383364326538396665333762306235656132300a623337323938376332663032633231
36653864343062333633653131366661393461386433643231646237386434623637383439326362
3430633663313964660a613064353935386639643763343537383039316435303262326664376132
34396564353337663432633333656636376536343739653564383365613361386537646430626664
66373566313832343638393564333735353539663663373430306331636332333231643230313563
37303531353635316266343165343865346363623566663965373065366565363936393132633261
38303033643031626236613437366666343634653937373839306465636332396637376362396635
6163


암호화파일 복호화(decrpt)

[root@asimblecontroller asimble]' ansible-vault decrypt first-playbook.yml --vault-password-file ./vault_pwd --output=decrypt-first-playbook.yml
Decryption successful
[root@asimblecontroller asimble]' vi decrypt-first-playbook.yml
- hosts: all
tasks:
- name: Print message
debug:
msg: Hello albert


암호화된 파일 비번 변경

[root@asimblecontroller asimble]' ansible-vault rekey hihi.yml
Vault password:
New Vault password:
Confirm New Vault password:
Rekey successful
[root@asimblecontroller asimble]' ansible-vault view hihi.yml
Vault password:
todo: runjob1
todo1: runjob2


파일로 비번으로설정한 파일 암호 변경

우선 새로 변경할 암호가 들어있는 파일을 생성

[root@asimblecontroller asimble]' vi new_vault_pwd
newpwd

신규 비밀번호로 변경

[root@asimblecontroller asimble]' ansible-vault rekey --new-vault-password-file=./new_vault_pwd first-playbook.yml
Vault password:
Rekey successful


새로운 비번으로 잘 조회 되는지 확인

[root@asimblecontroller asimble]' ansible-vault view first-playbook.yml
Vault password:
- hosts: all
tasks:
- name: Print message
debug:
msg: Hello albert

참고: https://nayoungs.tistory.com/entry/Ansible-Ansible-Vault


암호화된 플레이북 실행

공통변수 파일생성

[root@asimblecontroller vars]' vi ./vars/userpwd.yml
user: kara
password: pppwww


일단 기존 create-user.yml파일에 해당 공통변수 파일 인클루드 하는걸로 변경해보자

- hosts: web
vars_files:
- vars/userpwd.yml

tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present

플레이북 실행하면 userpwd.yml파일이 암호화 되어있으므로 로유가 뜬다

[root@asimblecontroller asimble]' ansible-playbook create-user.yml                                                                   ser.yml
ERROR! Attempting to decrypt but no vault secrets found

--vault-id @prompt 옵션을 추가하면 vault비번입력후 정상적으로 실행되는 부분 볼수있다. 

(참고로 실행시 비번 입력하는거 불편하니 비번이 포함된 외부파일을 사용하여 실행하는것이 편하

[root@asimblecontroller asimble]' ansible-playbook --vault-password-file=./vault_pwd create-user.yml )

[root@asimblecontroller asimble]' ansible-playbook --vault-id @prompt create-user.yml                                         
Vault password (default): enteryourpassword

PLAY [web] *******************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************
ok: [tnode1]

TASK [Create User kara] ******************************************************************************************************
changed: [tnode1]

PLAY RECAP *******************************************************************************************************************
tnode1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0


[root@asimblecontroller asimble]' ansible-playbook --vault-password-file=./vault_pwd create-user.yml

PLAY [web] *******************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************
ok: [tnode1]

TASK [Create User kara] ******************************************************************************************************
ok: [tnode1]

PLAY RECAP *******************************************************************************************************************
tnode1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0




LIST

Copyright © 2014 visionboy.me All Right Reserved.