본문 바로가기

Engineering/Ansible

[Ansible] 6. Ansible Vault

 

인벤토리 파일이나 플레이북에 passwd, api 키 값, token 값 등 텍스트로 관리되서는 안되는 데이터들이 포함될 수 있다. 앤서블은 ansible vault 기능을 제공하여 암호화를 가능케한다.


암호화된 파일 만들기

파일 생성 단계부터 ansible-vault create 명령어를 이용하여 암호화된 파일을 생성할 수 있다.

[root@Ansible-Controller ansible]# ansible-vault create vault_ex.yml
New Vault password:  	
Confirm New Vault password:  
[root@Ansible-Controller ansible]# cat vault_ex.yml 
$ANSIBLE_VAULT;1.1;AES256
66356533663065643539366331396565353563653961386532316534343264376565623362393264
6537393839336665616133626438626431623262616632620a653732663935663131613837326233
33306164666239373362343938633038313238633266376230393434346535393939353339333938
3638643237616539660a356661326665653462326339613037653330643862623138356632303566
3261

위와 같이 생성 시에 파일의 비밀번호를 입력하는 프롬프트가 등장한다. 작성한 파일을 출력해보면 암호화가 되어 출력되는 것을 확인할 수 있다.

암호화된 파일을 수정하거나 열람하려면 생성 시 설정했던 패스워드가 수반되어야 한다. 각각 ansible-vault edit 명령어와 ansible-vault view로 수정 및 열람을 할 수있다.


파일을 이용한 암호화

텍스트 파일을 참조하여 파일 생성 시에 Vault password 입력 없이 파일을 암호화 할 수 있다.

1. vault password 파일 생성
[root@Ansible-Controller ansible]# echo "ansible" > vault_key
[root@Ansible-Controller ansible]# cat vault_key 
ansible

2. ansible-vault create --vault-pass-file 옵션 사용
[root@Ansible-Controller ansible]# ansible-vault create --vault-pass-file ./vault_key vault_ex3.yml

*참고: vault 암호화된 파일을 vault 암호키로 사용 시도를 해보았다. 암호화된 데이터는 vault 암호키로 사용이 불가했다.


기존 파일 암호화

ansible-vault encryt 명령어와 ansible-vault decrypt 명령어로 기존 파일을 암호화 복호화 할 수 있다.

 #파일 출력
[root@Ansible-Controller playbook]# cat ping.yml 
---
- hosts: all
  tasks:
   - ping:
   
 #파일 암호화
[root@Ansible-Controller playbook]# ansible-vault encrypt ping.yml
New Vault password: 
Confirm New Vault password: 
Encryption successful

 #암호화된 파일 출력
[root@Ansible-Controller playbook]# cat ping.yml 
$ANSIBLE_VAULT;1.1;AES256
37666639393865623038616439343332333039303033353964326533613837363633376436373738
3362656635613630383231383238633331366163666662390a633064336138656137643838393632
62386135306561663339333238333831363631316435656261356232386436393963363836303530
6165646265613433360a656137343139316634313630303534613165613632386237653533323134
37373565306634336332636661376539343962346364316131373736646332303631633839333063
6161366437393832376231623136336137616531343633396462

암호화된 파일의 패스워드 변경

ansible-vault rekey 명령어를 통하여 ansible-vault로 암호화된 파일의 패스워드를 변경할 수 있다.

[root@Ansible-Controller playbook]# ansible-vault rekey ping.yml        
Vault password: 
New Vault password: 
Confirm New Vault password: 
Rekey successful

현재 패스워드와 변경할 패스워드를 묻는 프롬프트가 등장한다. 이에 알맞게 입력해주면 비밀번호가 변경된다.


암호화된 플레이북 실행

일반 playbook 명령어로는 암호화된 플레이북을 실행할 수 없다.

 

따라서 암호화된 파일이 포함된 플레이북을 실행할 때는 --vault-id @prompt 옵션을 추가하여 패스워드를 입력하는 과정이 필요하다.