1. 인벤토리 생성
# vi /etc/ansible/hosts
[all]
172.16.0.200
172.16.0.201
172.16.0.202
172.16.0.203
[web]
172.16.0.201
172.16.0.202
[db]
172.16.0.203
해당 인벤토리 파일은 ansible의 기본 인벤토리 파일이다. 인벤토리 파일을 따로 생성하고 활용하는 방법은 내용 마지막에 적도록 하겠다.
2. 모듈 활용
모듈이란?
- CLI나 플레이북 작업에서 사용 할 수 있는 별도의 코드 단위
모듈의 특징
- 멱등성을 보장해준다.
- 중복 실행될 여지가 차단된다.
- 가독성이 좋다.
- 배포전에 테스트가 가능하다.
Shell 모듈
쉘을 이용한 작업에 사용되는 모듈이다. -a로 쉘에서 동작시킬 명령어를 입력할 수 있다.
'위 명령어를 입력하면 inventory에서 지정한 [all] 그룹에게 shell 모듈로 ls 명령어를 실행하게 된다.
마찬 가지로 all 그룹에게 shell 모듈로 whoami 명령어를 동작시킨 모습이다.
User 모듈
지정한 서버에 user를 생성하는 모듈이다.
# ansible all -m user -a 'name=a'
위 명령어를 입력하면 all 서버들에게 user 모듈을 사용하여 a라는 이름의 사용자 계정을 생성한다.
a 계정이 4대의 서버 모두에 생성된 것을 볼 수 있다.
ansible all -m user -a "name=a update_password=always password={{ 'P@ssw0rd' | password_hash('sha512') }}"
위 명령어는 user 모듈을 사용하여 패스워드를 변경하는 방법이다.
ansible all -m shell -a "echo "P@ssw0rd" | passwd --stdin b
# ansible all -m user -a "name=a state=absent"
state=absent를 입력하면 지정한 사용자를 제거할 수 있다.
yum 모듈
지정한 서버에 yum을 사용하여 패키지 설치 및 삭제하는 모듈이다.
# ansible web -m yum -a "name=httpd state=latest"
yum 모듈을 사용하여 httpd 패키지를 설치하는 명령어이다.
다음과 같이 shell 모듈을 사용하여 rpm -qa로 패키지가 설치된 것을 확인할 수 있다.
COPY 모듈
파일을 원하는 서버에 복사하는 모듈이다.
# ansible web -m copy -a "src=index.html dest=/var/www/html/index.html"
src는 복사할 원본 파일의 위치를 지정하고 dest는 파일이 복사될 경로를 지정한다.
Service 모듈
데몬을 동작시키기위한 systemctl 명령어를 사용하기 위한 모듈이다.
# ansible web -m service -a "name=httpd state=started"
172.16.0.201 서버와 172.16.0.202의 웹 서비스가 정상적으로 동작하는 것을 볼 수 있다.
File 모듈
파일에 대한 상세정보 설정, 확인 및 삭제가 가능하다.
ansible web -m file -a "name=/var/www/html/index.html state=absent"
3. 인벤토리 별도 생성 및 활용
# vi inven.list
[ai]
anm
ann[1:3]
[webi]
ann[1:2]
[dbi]
ann3
인벤토리를 원하는 경로에 원하는 이름으로 지정하여 생성할 수 있다.
ann[1:3]은 ann1, ann2, ann3를 묶어서 작성하는 방법이다.
위 예시처럼 모듈에서 인벤토리를 -i옵션으로 지정하여 사용할 수 있다.
'Ansible' 카테고리의 다른 글
Ansible Playbook 작성 시 꿀팁 (0) | 2021.07.12 |
---|---|
Ansible Playbook 정의 및 작성하기 (0) | 2021.07.12 |
Ansible 모듈 사용하기 (0) | 2021.07.12 |
Ansible의 구성 파일, 명령어 옵션 (0) | 2021.07.12 |
Ansible의 기초 이론 및 CentOS7에 설치 (0) | 2021.07.11 |