티스토리 뷰

서버가 여러 대 있을 때, 동일한 유저를 생성해서 관리하기는 쉽지 않다.

일단, 만들기가 어렵고 오래 걸린다. 특히 패스워드가 1234, abcd 같이 간단하지 않고

십 수 자리에 대소문자 영/특수문자가 섞여있기 때문에 정말 쉽지 않다. 

따라서, Ansible 을 사용하면 매우 편리하게 할 수 있다! 

파일 구성은 아래와 같다

inventory는 playbook이 적용될 호스트들을 의미하고(인벤토리를 명시하지 않으면 /etc/ansible/hosts 가 기본

inventory로 사용됨) 

playbook은 서버들에 적용할 동작들을 명시하는 스크립트이다. 

vars.yml에는 사용자의 아이디와 패스워드를 명시해서 playbook에서 이를 참조해서 사용한다.

ansible.cfg는 작성자의 서버에 특별히 필요한 설정들이 있었기에 만든 파일이므로 없어도 무관하다.

실제 운영중인 서버의 설정이기 때문에 중요한 부분은 모두 가려놓았으므로, 자신의 서버에 맞게

값을 넣으면 되겠습니다.

 

inventory.yml

 

[all:vars]

ansible_connection=ssh

ansible_ssh_user="<SSH 접속아이디>"

ansible_ssh_pass="<SSH 접속패스워드>"

ansible_ssh_common_args: '-o UserKnownHostsFile=/dev/null'

[lab_containers]

<서버아이디> ansible_host=127.0.0.1 ansible_port=<포트>server_id=<서버아이디>

<서버아이디> ansible_host=<IP> ansible_port=<포트>server_id=<서버아이디>

<서버아이디>  ansible_host=<IP> ansible_port=<포트>server_id=<서버아이디>

<서버아이디>  ansible_host=<IP> ansible_port=<포트> server_id=<서버아이디>

<서버아이디>  ansible_host=<IP> ansible_port=<포트> server_id=<서버아이디>

<서버아이디>  ansible_host=<IP> ansible_port=<포트> server_id=<서버아이디>

[lab_containers:vars]

[local]

<서버아이디> ansible_host=127.0.0.1 ansible_port=<포트> server_id=<서버아이디>

playbook.yml

---

- hosts: lab_containers

  become: true

  vars_files:

    - <디렉토리 경로>/vars.yml

  tasks:

    - name: "Add lab_user group"

      become: true

      group:

        name: lab_user

        state: present

    - name: "Add Users with password"

      become: true

      user:

        name: "{{ item.name }}"

        uid: "{{ item.uid }}"

        groups: "{{ item.groups }}"

        password: "{{ item.password }}"

        state: present

      with_items: "{{ lab_users }}"

vargs.yml

lab_users: 
  - {name: '<아이디>', uid: <uid>, groups: ['<그룹이름>'], password: '<비밀번호>} 
  - {name: '<아이디>', uid: <uid>, groups: ['<그룹이름>'], password: '<비밀번호>} 
 - {name: '<아이디>', uid: <uid>, groups: ['<그룹이름>'], password: '<비밀번호>} 
  - {name: '<아이디>', uid: <uid>, groups: ['<그룹이름>'], password: '<비밀번호>} 
 - {name: '<아이디>', uid: <uid>, groups: ['<그룹이름>'], password: '<비밀번호>} 
  - {name: '<아이디>', uid: <uid>, groups: ['<그룹이름>'], password: '<비밀번호>} 

커맨드 실행

$ sudo ansible-playbook -i inventory playbook.yml -K

 

1초만에 여러 명의 유저가 여러 개의 서버에 동시에 만들어졌습니다!

(Ansible 공부하는 시간 + 디버깅하는 시간 더하면 손해 봤습니다! 자동화는 시간절약을 위해 하는 것이 아니라 자기만족을 위해하는..)

댓글