이것은 지금까지 내가 깨우친 생각의 정리해 둔 것이다.
그렇기 때문에 틀릴 수도 있음을 강조 하며 정리한다. 다시금 깨우친 점이 있다면 수정할 생각이다.
예를 들어 아래 와 같은 파일의 내용을 ansible-playbook 으로 import 해야 한다면
우리는 이것을 일단 vars 쪽으로 선언을 해줘야 한다. 1) 참조
[cloud_user@eogk891c ansible_playbook]$ cat vars/user_list.yml --- users: - username: alice uid: 1201 - username: vincent uid: 1202 - username: sandy uid: 2201 - username: patrick uid: 2202
파일로 참조해야 할 경우 vars_files 이란 형태로 절대 path 를 선언 해 준다.
var 로 user_list.yml 이 hash 형태로 저장이 되었다면 이 hash 를 task의 반복 item 즉 with_items로 해시변수를
불러와서 . 형식으로 attribute를 가져와서 loop가 돌게 된다.
[cloud_user@eogk891c ansible_playbook]$ cat add_user2.yaml --- - hosts: playground become: true vars_files: - /home/cloud_user/ansible_playbook/secure/secret.yml - /home/cloud_user/ansible_playbook/vars/user_list.yml # 1 tasks: - name: 'Add the user {{ item.username }}"' user: name: '{{ item.username }}' uid: '{{ item.uid }}' state: absent password: "{{ user_password }}" with_items: '{{ users }}' # 2
추가로
user 라는 모듈의 경우 linux의 useradd 라는 명령어를 기반하고 있는데,
음…. password 를 어떻게 암호화 하는지 모르겠다….
내일 또 해보자!
이제 반복해서 하는 작업은 어렵지 않게 되었다.
추가로 ansible-vault 도 조금 알게 되었다.
ansible-vault 의 경우 암호나 ansible의 role등 plain text 로 두기 힘든 녀석들을 암호화 하는 유틸인데
ansible-vault 를 통해 암호화하는 yaml 파일의 지정 변수는 없고 아래 처럼 vars 나 vars-> item으로 쓸 녀석들 중
보안성 증가를 위해 암호화가 필요한 녀석의 파일만 선언하면 된다.
secure.yml --- mrleeidea_passwd: i_don_t_know
이후 playbook 에서 secure.yml 이 쓰일 경우
% ansible-playbook ***.yaml (실행 yaml) –ask-vault-pass
or
% ansible-playbook ***.yaml (실행 yaml) –vault-id ‘ ‘
처럼 실행해서 vault 암호를 입력하면 playbook이 실행된다.
추가 ) ansible host default var 리스트를 보는 방법
% ansible localhost -m setup
두서가 매우 없는 상태이므로 참고를 하시는 분은 다른 자료와 꼭 비교해 보시길 바랍니다.