user 사용자의 홈디렉토리에 project1 디렉토리를 생성하고, 디렉토리 내에 inventory.ini 파일을 생성하여, Control node를 포함한 모든 시스템을 등록하시오.
control 그룹에 Control node를, webservers 그룹에 managed1 호스트를, dbservers 그룹에 managed2호스트를 등록하시오.
webservers 와 dbserver 그룹을 자녀로 가지는 servers 부모 그룹을 설정하시오.
$ mkdir project1
$ cd project1
$ vi inventory
[control]
control.example.local
[webservers]
managed1.example.local
[dbservers]
managed2.example.local
[servers]
managed1.example.local
managed2.example.local
main 에서 ansible ad-hoc 명령을 사용하여, Control node를 포함한 모든 시스템에 다음 사용자를 추가하시오.
사용자이름 : ansible
UID : 2000
암호 : P@ssw0rd
참고: 사용자 암호 설정
{{ 'P@ssw0rd' | password_hash('sha512') }}
$ ansible -i inventory.ini -m user -a 'name=ansible uid=2000 password={{ "P@ssw0rd" | password_hash("sha512") }}' webservers --become
$ ansible -u ansible -i inventory.ini -m authorized_key -a 'user=ansible state=present key={{ lookup("file", "/home/user/.ssh/id_rsa.pub") }}' webservers --ask-pass
$ ssh user@managed1.example.local
$ sudo vi /etc/sudoers.d/ansible
ansible ALL=(ALL) NOPAWWED: ALL
exit
exit
해당 작업 반복
$ vi ansible.cfg
[defaults]
inventory = ./inventory
remote_user = ansible
ask_pass = false
[privilege_escalation]
become = false
become_method = sudo
become_user = root
become_ask_pass = true
---
- name: webserver is ready
hosts: webservers
become: true
vars:
packages:
- httpd
- firewalld
- php
tasks:
- name: package must be installed
yum:
name: "{{ packages }}"
state: latest
- name: service must be started - httpd
service:
name: httpd
state: started
- name: service must be started - firewalld
service:
name: firewalld
state: started
- name: firewall enabled
firewalld:
service: http
state: enabled
permanent: true
- name: dbserver is ready
hosts: dbservers
become: true
vars:
packages:
- firewalld
- mariadb-server
tasks:
- name: package must installed
yum:
name: "{{ packages }}"
state: latest
...