System engineering

ansible, vars 와 with_items와 의 관계,

이것은 지금까지 내가 깨우친 생각의 정리해 둔 것이다.

그렇기 때문에 틀릴 수도 있음을 강조 하며 정리한다. 다시금 깨우친 점이 있다면 수정할 생각이다.

예를 들어 아래 와 같은 파일의 내용을 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

 

두서가 매우 없는 상태이므로 참고를 하시는 분은 다른 자료와 꼭 비교해 보시길 바랍니다.

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.