인벤토리 파일이나 플레이북에 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 옵션을 추가하여 패스워드를 입력하는 과정이 필요하다.
'Engineering > Ansible' 카테고리의 다른 글
[Ansible] 8. 반복문과 조건문을 이용한 제어문 구현 (0) | 2024.09.04 |
---|---|
[Ansible] 7. Ansible Facts 활용 (0) | 2024.09.02 |
[Ansible] 5. 변수 (1) | 2024.08.28 |
[Ansible] 4. Playbook 살펴보기 (0) | 2024.08.28 |
[Ansible] 3. Ansible.cfg, Generating SSH key (0) | 2024.08.26 |