컬쥐네 다락방

Ansible | Vault 본문

클라우드/Ansible

Ansible | Vault

코딩하는 갱얼쥐 2022. 4. 21. 17:05

Vault

파일, 일부 텍스트를 암호화

  • 파일 수준
    • 플레이북 전체
    • 변수 파일
    • include/import 작업 파일
  • 텍스트 수준
    • 변수 값

Vault Password: AES

  • 단일 패스워드
    • --ask-vault-pass
    • --vault-password-file
  • 멀티 패스워드
    • --vault-id

ansible-vault 명령

ansible-vault <SUB-COMMAND> <FILE>
  • create: 암호화될 빈 파일 생성
  • decrypt: 암호화된 파일 복호화
  • edit: 암호화된 파일 수정(vi)
  • view: 암호화된 파일 확인
  • encrypt: 평문 파일 암호화
  • rekey: Vault 패스워드 변경
  • encrypt_string: 텍스트 암호화
    ansible-vault encrypt_string
    hello world[ctrl-d][ctrl-d]
    hello world[enter]
    [ctrl-d]

명령의 옵션

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

안전하고 편하게 vault 패스워드를 사용하는 방법

.vaultpass

P@ssw0rd
chmod 600 .vaultpass

ansible.cfg

[defaults]
vault_password_file = ./.vaultpass

암호화된 플레이북 실행

ansible-playbook <Playbook> --ask-vault-pass
ansible-playbook <Playbook> --vault-password-file <Vault_Password_File>

멀티 패스워드

--vault-id 옵션 사용
--vault-id ID@source

source

  • prompt: 패스워드를 대화식의 프롬프트
    • --vault-id user1@prompt
  • file: 파일에서 패스워드를 참조
    • --vault-id user2@.vaultpass
  • script: 패스워드를 참조할 수 있는 스크립트
    • 예: 패스워드는 MySQL 저장, python 코드로 DB에서 패스워드를 가져올 수 있는
    • --vault-id user3@getpass.py

prompt

test.yaml

- hosts: 192.168.100.11
  vars_files:
    - var1.yaml
    - var2.yaml
  tasks:
    - debug:
        msg: "{{ message1 }} {{ message2 }}"
echo "message1: hello" > var1.yaml
echo "message2: world" > var2.yaml
ansible-vault encrypt var1.yaml --vault-id user1@prompt
ansible-vault encrypt var2.yaml --vault-id user2@prompt
ansible-playbook test.yaml --vault-id user1@prompt --vault-id user2@prompt

vault file

echo "message1: hello" > var1.yaml
echo "message2: world" > var2.yaml

echo "P@ssw0rd1" > user1pass
echo "P@ssw0rd2" > user2pass

chmod 600 user1pass 
chmod 600 user2pass 

ansible-vault encrypt var1.yaml --vault-id user1@user1pass
ansible-vault encrypt var2.yaml --vault-id user1@user2pass

ansible-playbook test.yaml --vault-id user1@user1pass --vault-id user1@user2pass

안전하고 편하게 vault 멀티 패스워드를 사용하는 방법

ansible.cfg

[defaults]
vault_identity_list = user1@user1pass, user2@user2pass

복호화

ansible-vault view var2.yaml
ansible-playbook test.yaml

암호화

ansible-vault create var3.yaml --encrypt-vault-id user1
absible-vault encrypt var3.yaml --encrypt-vault-id user1

'클라우드 > Ansible' 카테고리의 다른 글

Ansible | AWX  (0) 2022.04.21
Ansible | 역할(role)  (0) 2022.04.21
Ansible | 아티펙트(Artifact)의 재사용 - 파일  (0) 2022.04.21
Ansible | 템플릿 주석  (0) 2022.04.21
Ansible | 블록과 태그  (0) 2022.04.21
Comments