728x90
안녕하세요, 오늘은 앤서블을 활용해서 사용자 계정을 생성하는 방법을 알아보겠습니다.
플레이북 구성 예시는 위와 같습니다.
위의 구성을 통해서 진행해 볼 내용은 사용자 계정과 패스워드는 Vault를 이용해 암호화 처리할 예정입니다.
먼저,
1) 플레이북 생성
- 프로젝트 디렉터리 생성 및 ansible.cfg, inventory 파일을 작성합니다.
~/my-ansible/chapter_09.1/
#
mkdir ~/my-ansible/chapter_09.1
cd ~/my-ansible/chapter_09.1
# ansible.cfg, inventory 파일 작성
cat <<EOT > ansible.cfg
[defaults]
inventory = ./inventory
remote_user = ubuntu
ask_pass = false
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
EOT
cat <<EOT> inventory
tnode1
tnode2
tnode3
EOT
2) 사용자 계정 정보가 정의된 변수 파일을 생성
~/my-ansible/chapter_09.1/vars/secret.yml
# vault 암호는 편하게 입력
ansible-vault create vars/secret.yml
New Vault password: qwe123
Confirm New Vault password: qwe123
## 에디터 창으로 전환 : (아래 내용 복붙) user_info 변수에 userid와 userpw가 같이 있는 사전형 변수를 정의
---
user_info:
- userid: "ansible"
userpw: "ansiblePw1"
- userid: "stack"
userpw: "stackPw1"
~
~
:wq
# 변수 파일 확인
ls -l vars/secret.yml
cat vars/secret.yml
vault 암호를 입력. 후, 변수를 다음과 같이 정의해 줍니다.
이후 위의 내용과 같이 변수 파일을 확인합니다.
3) 사용자 계정을 생성하는 플레이북을 작성
모든 호스트에 동일하게 생성하며 vault로 작성된 변수 파일을 읽어 사용함
~/my-ansible/chapter_09.1/create_user.yml
---
- hosts: all
# vault로 사용자 계정 관련 변수가 정의된 파일을 임포트하여 사용
vars_files:
- vars/secret.yml
tasks:
# loop 문을 사용하여 user_info의 userid와 userpw 사용
- name: Create user
ansible.builtin.user:
name: "{{ item.userid }}"
password: "{{ item.userpw | password_hash('sha512', 'mysecret') }}"
state: present
shell: /bin/bash
loop: "{{ user_info }}"
4) 플레이북 실행
- 문법 체크
- 문법 체크시 --ask-vault-pass를 통해서 진행하면 확인이 가능
마찬가지로, 진행시 --ask-vault-pass를 통해서 진행하면 다음과 같이 확인이 가능합니다.
계정이 생성된 이력을 tail 명령어를 통해서 확인합니다.
728x90
반응형
'DevOps > Ansible' 카테고리의 다른 글
[Ansible 101] NTP 서버 설치 및 설정하기 (1) | 2024.02.04 |
---|---|
[Ansible 101] SSH 키 생성 및 복사하기 (0) | 2024.02.04 |
[Ansible 101] 2주차 도전과제 (0) | 2024.01.21 |
[Ansible 101] 앤서블 블록 및 오류처리 (0) | 2024.01.21 |
[Ansible 101] 핸들러 및 작업 실패 처리 (0) | 2024.01.21 |