JYEONNI
Ansible valut 본문
Ansible playbook을 작성할 때 유의해야 할 각 규칙을 예시와 함께 자세히 살펴보겠습니다.
들여쓰기를 확실하게 해야합니다.
tasks:
- name: Install nginx
apt: name=nginx state=installed
잘못된 들여쓰기
tasks:
- name: Install nginx
apt:
name: nginx
state: installed
올바른 들여쓰기
키와 값:
키와 값 사이에는 콜론(:)을 사용하고, 값은 스페이스를 사용하여 정의합니다.
vars:
nginx_port: 80
리스트와 딕셔너리:
리스트는 대시(-)로 시작하고, 딕셔너리는 키:값 형식으로 표현됩니다
hosts:
- webserver1
- webserver2
vars:
nginx_config:
server_name: example.com
port: 80
주석:
주석은 #으로 시작합니다. 주석은 코드를 설명하거나 임시로 코드를 비활성화하는 데 사용됩니다.
암호화:
Ansible Vault를 사용하여 중요한 정보를 암호화할 수 있습니다.
vars:
db_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
66373639653736353538303431313161356231666238393537636665613839363861633639313433
...
Ansible Vault은 Ansible에서 비밀 정보를 안전하게 보관하고 사용할 수 있는 도구입니다. 이를 사용하면 패스워드, API 키, 인증서 및 기타 민감한 정보를 안전하게 저장하고 관리할 수 있습니다. 주요 특징과 사용 방법을 살펴보겠습니다.
주요 특징:
암호화:Ansible Vault는 AES 암호화 알고리즘을 사용하여 파일을 암호화합니다. 이를 통해 중요한 정보를 안전하게 보호할 수 있습니다.단일 파일 또는 그룹 암호화:
단일 파일 또는 그룹의 파일을 한 번에 암호화할 수 있습니다. 이를 통해 연관된 정보를 모두 함께 관리할 수 있습니다.
복호화:암호화된 파일을 복호화하여 저장된 정보에 접근할 수 있습니다. 이를 통해 필요한 정보에 대한 접근 권한을 제어할 수 있습니다.
재사용성:다른 Ansible 파일에서도 Vault로 암호화된 정보를 사용할 수 있습니다. 이를 통해 여러 플레이북 또는 롤에서 동일한 비밀 정보를 공유할 수 있습니다.
먼저, 비밀 정보를 포함할 파일을 생성합니다. 여기서는 secret_vars.yml 파일을 만들어보겠습니다.
# secret_vars.yml
db_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
66373639653736353538303431313161356231666238393537636665613839363861633639313433
...
다음으로, 이 비밀 정보가 포함된 플레이북을 작성합니다. 여기서는 playbook.yml라는 파일을 생성합니다.
# playbook.yml
- name: Example playbook using Ansible Vault
hosts: servers
tasks:
- name: Include encrypted vars
include_vars: secret_vars.yml
- name: Print database password
debug:
msg: "The database password is {{ db_password }}"
이제 playbook.yml 파일을 실행할 때 Ansible Vault를 사용하여 암호화된 파일을 복호화해야 합니다. 암호를 설정하기 위해 다음 명령을 사용합니다.
ansible-playbook playbook.yml --ask-vault-pass
--ask-vault-pass 옵션은 실행할 때 Vault 암호를 요청합니다. 이 암호를 입력하면 Ansible이 Vault 파일을 복호화하여 사용합니다.
이제 암호화된 변수를 포함한 플레이북을 실행할 수 있습니다. Ansible Vault를 사용하면 중요한 정보를 안전하게 관리하고 사용할 수 있습니다.