카이도스의 Tech Blog

Ansible 기본3(Ansible Vault) 본문

Ansible

Ansible 기본3(Ansible Vault)

카이도스 2024. 3. 26. 17:34
728x90
반응형

2024.03.11 - [Ansible] - Ansible 기본1(설치 후 기본 활용)

 

Ansible 기본1(설치 후 기본 활용)

Ansible 실무에 활용 전 vm 통해 테스트하는 방법 안내하도록 하겠습니다. 관련하여 Ansible 사용하실분들은 참고하여 실무에 적용하시면 좋을 것 같습니다. 무작정 따라하시기보다, 내용 변경해가

djdakf1234.tistory.com

2024.03.26 - [Ansible] - Ansible 기본2(변수)

 

Ansible 기본2(변수)

2024.03.11 - [Ansible] - Ansible 기본1(설치 후 기본 활용) Ansible 기본1(설치 후 기본 활용) Ansible 실무에 활용 전 vm 통해 테스트하는 방법 안내하도록 하겠습니다. 관련하여 Ansible 사용하실분들은 참고하

djdakf1234.tistory.com

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/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

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