05. Ansible Playbook작성하기

지난번에는 에서 inventory를 작성하고 접속이 되는지까지 확인했는데요. 이제 실제로 어떤어떤 작업을 수행하겠다~를 작성하기 위해 playbook을 작성할꺼예요.

192.168.10.10 ~ 15번까지는 nginx 최신버전을 설치하고, 192.168.100.10 ~ 15번까지는 apache를 설치할꺼예요. Centos7 Base yum 에는 nginx가 없기 때문에 epel 리포지터리를 구성하고, nginx를 설치하는 절차입니다.

  1. 코드 작성하기

    $> 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
    

  2. 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
  1. /home/ansible/inventory에 구성된 인벤토리를 가지고 /home/ansible/playbook.yml 파일에 구성된 작업절차를 수행하겠다는 Command 입니다.
  2. 배포코드 작성시 유의사항
    • playbook은 yml 포맷으로 작성하기 때문에 tree구조를 띄어쓰기로 인식합니다 (탭키 인식 안함)상 / 하위 개념 적용을 위해 띄어쓰기 잘 해주세요.
    • 작성된 예시코드는 ansible 2.9버전의 코드입니다. 2.10버전 이후부터는 문법이 바뀌었습니다. (https://docs.ansible.com/ansible/latest/ 참고)
back
perplexity에서 생성한 AI이미지






작성일: 2026년 6월 30일 ,  마지막 업데이트: 2026년 7월 13일