Posted on:February 12, 2024 at 02:30 AM

Ansible Valut 셋팅하기

Ansible Valut 셋팅하기

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에 넣어둔다.