Skip to main content

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/ 참고)