카이도스의 Tech Blog
Ansible 기본3(Ansible Vault) 본문
728x90
반응형
2024.03.11 - [Ansible] - Ansible 기본1(설치 후 기본 활용)
2024.03.26 - [Ansible] - Ansible 기본2(변수)
2024.03.26 - [Ansible] - Ansible 기본4(Facts)
Ansible 실무에 활용 전 vm 통해 테스트하는 방법 안내하도록 하겠습니다.
관련하여 Ansible 사용하실분들은 참고하여 실무에 적용하시면 좋을 것 같습니다.
무작정 따라하시기보다, 내용 변경해가며 따라하시는걸 추천드립니다.
서버 정보
ansible-control | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.123 |
ansible1 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.124 |
ansible2 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.125 |
ansible3 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.126 |
설정파일 수정이 많다보니 vscode로 진행했습니다.
DevOps 업무하게 되면 vscode에 익숙해져야 할 것 같네요.
https://code.visualstudio.com/
패스워드를 안전하게 보관할 수 있는 Ansible Vault
Ansible Vault
- 암호화된 파일 만들기 : ansible-vault 명령어를 통해 파일 생성/암호화하여 사용 및 해독과 확인 가능
- ansible/mysecret.yml
# ansible-vault create 로 생성하려는 플레이북 파일 생성
ansible-vault -h
ansible-vault create mysecret.yml
New Vault password: xgtest!@
Confirm New Vault password: xgtest!@
# vi 에디터와 같이 파일을 편집할 수 있는 창으로 전환되면 아래와 같이 입력 후 저장하고 빠져나옵니다
user: ansible
password: xgtest!@
:wq
- 파일 확인
# 파일을 생성한 소유자만 읽고 쓸수 있음을 확인
ll | grep mysecret.yml
-rw------- 1 root root 484 Mar 26 07:09 mysecret.yml
# ubuntu 유저로 파일 확인 시도
su - ubuntu -c 'cat /root/ansible/mysecret.yml'
# 파일 내용 확인 : 암호화되어 있음
cat mysecret.yml
$ANSIBLE_VAULT;1.1;AES256
66646136306263303238333636663965323134623964323732313765326631353464363266393435
3763396433613232613436376634616239613665613039320a333534613062633131616266353161
66373165373931346334643139356665623138323936353032653535383162653135626666646132
3731656637636166330a666537646237353635383931633731383662383262636365346631336665
39393935393235356165623666636635663233303835383137353435323861343436636436306633
6439363031633034616264343836303234623562613036643366
- 원래 파일 내용 확인(복호화)
# 원래 파일 내용 확인(복호화)
ansible-vault view mysecret.yml
Vault password: xgtest!@
user: ansible
password: xgtest!@
- 파일을 이용한 암호화 파일 만들기 : 별도의 파일에 암호를 저장하고 사용 가능
- ansible/vault-pass
echo 'xgtest!@' > vault-pass
- ansible-vault create
# ansible-vault create 로 생성하려는 플레이북 파일 생성
ansible-vault create --vault-pass-file ./vault-pass mysecret1.yml
# 암호 묻지 않고 바로 에디터 창으로 전환 → 아래 내용 입력 후 저장하고 빠져나오기
user: ansible
password: xgtest!@
:wq
- 생성된 파일 확인 : 접근 권한, 파일 내용 확인
# 파일을 생성한 소유자만 읽고 쓸수 있음을 확인
ll mysecret1.yml
-rw------- 1 root root 484 Dec 27 14:56 mysecret1.yml
# 파일 내용 확인 : 암호화되어 있음
cat mysecret1.yml
# 원래 파일 내용 확인(복호화)
ansible-vault view --vault-pass-file ./vault-pass mysecret1.yml
user: ansible
password: xgtest!@
- 기존 파일 암호화 : 기존에 이미 만들어놓은 파일도 암호화 및 복호화 가능
- ansible/create-user.yml
# 기존 평문 파일 확인
ll create-user.yml
-rw-r--r-- 1 root root 131 Dec 26 14:16 create-user.yml
# 기존 평문 파일 암호화 설정
ansible-vault encrypt create-user.yml
# 암호화 설정 후 확인 : 파일소유자만 읽고 쓸수 있음
ll create-user.yml
-rw------- 1 root root 873 Dec 28 04:18 create-user.yml
cat create-user.yml
- 확인
#
ansible-vault decrypt create-user.yml --output=create-user-decrypted.yml
# 확인 : 암호화,복호화 파일은 파일 소유자만 읽고 쓸 수 있음
cat create-user-decrypted.yml
---
- hosts: all
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
# ubuntu 유저로 파일 확인 시도
su - ubuntu -c 'cat /root/ansible/create-user-decrypted.yml'
cat: /root/ansible/create-user-decrypted.yml: Permission denied
- 암호화된 파일의 패스워드 변경 : ansible-vault로 암호화된 파일의 패스워드 변경 가능
- rekey 명령어로 변경
# rekey 명령어로 변경
ansible-vault rekey mysecret.yml
Vault password: xgtest!@
New Vault password: xgtest!@
Confirm New Vault password: xgtest!@
Rekey successful
- 패스워드 입력 파일을 이용해 패스워드 변경
# 패스워드 입력 파일을 이용해 패스워드 변경
cat vault-pass
xgtest!@
ansible-vault rekey --new-vault-password-file=./vault-pass mysecret.yml
Vault password: xgtest!@
Rekey successful
- 암호화된 플레이북 실행
- 암호화된 파일 내용 확인
# mysecret.yml 파일을 vars 디렉터리로 이동
mv ./mysecret.yml vars/
# view로 파일 내용 확인
ansible-vault view vars/mysecret.yml
Vault password: xgtest!@
user: ansible
password: xgtest!@
- ansible/create-user5.yml
# 파일 복사
cp create-user3.yml create-user5.yml
# create-user5.yml 파일 편집
---
- hosts: db
vars_files:
- vars/mysecret.yml
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
- 확인
# 실행
ansible-playbook create-user5.yml
ERROR! Attempting to decrypt but no vault secrets found
- 암호화된 파일이 포함된 플레이북을 실행할 때는 vault-id @prompt 옵션 사용
# (터미널2) 모니터링
watch -d "ssh ansible3 tail -n 3 /etc/passwd"
# 실행
ansible-playbook --vault-id @prompt create-user5.yml
Vault password (default): xgtest!@
...
# 패드워드 입력 없이 실행
cat vault-pass
ansible-playbook --vault-password-file=./vault-pass create-user5.yml
728x90
반응형
'Ansible' 카테고리의 다른 글
Ansible 기본4(Facts) (0) | 2024.03.26 |
---|---|
Ansible 기본2(변수) (0) | 2024.03.26 |
Ansible 기본1(설치 후 기본 활용) (0) | 2024.03.11 |
Comments