5- Ansible Playbook작성하기
지난번에는 에서 inventory를 작성하고 접속이 되는지까지 확인했는데요. 이제 실제로 어떤어떤 작업을 수행하겠다~를 작성하기 위해 playbook을 작성할꺼예요.
192.168.10.10 ~ 15번까지는 nginx 최신버전을 설치하고, 192.168.100.10 ~ 15번까지는 apache를 설치할꺼예요.
Centos7 Base yum 에는 nginx가 없기 때문에 epel 리포지터리를 구성하고, nginx를 설치하는 절차입니다.
vi /home/ansible/playbook.yml
#nginx 그룹에 등록된 서버들 작업수행
name: Nginx Install # 작업 이름
hosts: "nginx" # 배포대상 호스트 정보
gather_facts: yes # 배포대상 서버들의 정보 수집
become: yes # root로 작업시
tasks: # 아래 나열된 작업을 수행
- name: epel enable # epel repository 활성화
yum:
name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
state: present
- name: nginx install #nginx rpm 설치
yum:
name: nginx
state: latest
- name: nginx start #nginx 서비스 실행, 재부팅후에도 활성화 적용
systemd:
name: nginx
daemon_reload: yes
state: started
enabled: yes
#apache 그룹에 등록된 서버들 작업수행
name: apache Install # 작업 이름
hosts: "apache" # 배포대상 호스트 정보
gather_facts: yes # 배포대상 서버들의 정보 수집
become: yes # root로 작업시
tasks: # 아래 나열된 작업을 수행
- name: apache install #httpd rpm 설치
yum:
name: httpd
state: latest
- name: httpd start #httpd 서비스 실행, 재부팅후에도 활성화 적용
systemd:
name: httpd
daemon_reload: yes
state: started
enabled: yes
코드를 작성 다 했으면 배포를 진행해보아요
$ ansible-playbook -i /home/ansible/inventory /home/ansible/playbook.yml -b
# /home/ansible/inventory에 구성된 인벤토리를 가지고 /home/ansible/playbook.yml 파일에 구성된 작업절차를 수행하겠다는 Command 입니다.
배포코드 작성시 유의사항
- playbook은 yml 포맷으로 작성하기 때문에 tree구조를 띄어쓰기로 인식합니다 (탭키 인식 안함)
상 / 하위 개념 적용을 위해 띄어쓰기 잘 해주세요. - 작성된 예시코드는 ansible 2.9버전의 코드입니다. 2.10버전 이후부터는 문법이 바뀌었습니다. (https://docs.ansible.com/ansible/latest/ 참고)