1. 소개
ansible은 IAC(Infrastructure as a code) 툴인데 오늘 소개할 기능은 데이터베이스 비밂번호와 같이 외부에 노출되면 안되는 중요한 정보를 처리하는 법을 다뤄보도록 하겠다.
2. 설정하기
1단계: ansible 설치하기
Ansible valut를 사용하기 위해서는 먼저 ansible
을 설치해야한다.
pip install ansible
``
로 하거나 poetry를 사용한다.
poetry add ansible
### 2단계: valut pass 파일 설정하기
유저 홈디렉토리에 이 파을을 만들고 그 안에 비밀번호를 하나 넣어둔다.
`~/.valut_pass`
vZY6CbLTN5g5%3k&
### 3단계: valut로 encrypt할 파일들을 넣을 폴더를 하나 만들어준다.
`ansible/valut`
### 4단계: ansilbe.cfg 파일에 valut_password_file을 설정해준다.
`ansible/ansible.cfg`
```[defaults]
inventory=./hosts.yaml
roles_path=../../common/ansible/roles
allow_world_readable_tmpfiles=True
host_key_checking=False
vault_password_file=~/.vault_pass
vault_path=../../common/ansible/vault
5단계: 일반 파일을 valut로 암호화하기
먼저 암호화하기를 원하는 파일을 3단계에서 만든 valut 폴더에 넣어둔다.
여기에서는 .env 파일을 넣어보자
SECRET_KEY=JIUzI1NiIsInR5cCI6IkpXVCJ
이제 다음의 ansible valut 명령어를 넣어주면 파일이 암호화된다.
ansible valut encrypt ansible/vault/.env
Encryption successful
그럼 .env 파일이 아래와 같이 바뀐다.
$ANSIBLE_VAULT;1.1;AES256
65373239653765306137346165653566336234656638383363336461326361663939643739663534
3964633735393865373036393138616238626237633063620a366636653531353934666434306139
34336363393237623630373061346431313764656434376262356462623935613436666535666432
3561326430376537360a303539333736373763623431666137643465326534376336613238393034
36393637356561353430386564316265663334383764356339356630396237623230656433306535
6132366338356233616130363435656339386633653136356532
이렇게 바뀐 .env 파일은 git에 넣어도 되고, ansible에서는 알아서 해독해서 서버에 파일을 가져다 놓는다.
6단계: 암호를 풀려면
ansible-vault view 2-base/2-ansible/vault/.env
SECRET_KEY=JIUzI1NiIsInR5cCI6IkpXVCJ
편의상 아래와 같이 할 수도 있다.
ansible-vault view ansible/vault/.env > ansible/valut/.env.dec
그리고 *.dec
패턴은 .gitignore
에 넣어둔다.