# 5- Ansible Playbook작성하기
[![image.png](http://igoni.kr/uploads/images/gallery/2025-06/scaled-1680-/wLCimage.png)](http://igoni.kr/uploads/images/gallery/2025-06/wLCimage.png)
perplexity에서 생성한 AI이미지
지난번에는 에서 inventory를 작성하고 접속이 되는지까지 확인했는데요. 이제 실제로 어떤어떤 작업을 수행하겠다~를 작성하기 위해 playbook을 작성할꺼예요. 192.168.10.10 ~ 15번까지는 nginx 최신버전을 설치하고, 192.168.100.10 ~ 15번까지는 apache를 설치할꺼예요. Centos7 Base yum 에는 nginx가 없기 때문에 epel 리포지터리를 구성하고, nginx를 설치하는 절차입니다. ```shell 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 그룹에 등록된 서버들 작업수행
```shell 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 ``` 코드를 작성 다 했으면 배포를 진행해보아요 ```shell $ 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/ 참고)