[ Ansible ] 플레이북(Playbook) 사용해보기

2024. 8. 22. 15:30·🌥️Cloud Study🌥️/IaC

Ansible 플레이북(Playbook)이란?

자동화 작업을 정의하고 실행하는 방법을 제공하는 YAML 기반의 파일이다.

플레이북은 여러 호스트에 걸쳐 복잡한 작업들을 실행하기 위해 사용되며, 단순 명령의 실행보다는 더 구조화되고 유연한 자동화 시나리오를 지원한다.

 

Ansible 플레이북의 구조

---
- name: Web server setup and configuration
  hosts: webservers
  become: yes

  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present

    - name: Start Apache service
      service:
        name: apache2
        state: started
  1. name: Web server setup and configuration
    플레이 이름 - "webservers"라는 호스트 그룹에 대한 작업을 정의함
  2. hosts: webservers
    플레이가 적용될 호스트 그룹을 정의, 인벤토리 파일에서 "webservers" 그룹에 속한 모든 서버에서 이 작업이 실행됨
  3. become: yes
    권한 상승이 필요하다는 것을 나타냄 - sudo를 사용하여 루트 권한으로 명령이 실행됨
  4. tasks:
    플레이에서 실행할 작업 목록을 정의. 각 태스크는 순차적으로 실행됨
  5. name: Install Apache
    첫 번째 태스크의 이름. Apache 웹 서버 패키지를 설치하기 위한 apt 모듈을 사용함
  6. name: Start Apache service
    두 번째 태스크는 Apache 서비스를 시작하는 작업을 정의. service 모듈을 사용하여 서비스를 관리함.

 

핸들러 사용 예시

---
- name: Web server setup
  hosts: webservers
  become: yes

  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present

    - name: Modify Apache config
      copy:
        src: /local/path/to/config
        dest: /etc/apache2/apache2.conf
      notify: Restart Apache

  handlers:
    - name: Restart Apache
      service:
        name: apache2
        state: restarted

`notify: Restart Apache` : 해당 태스크가 실행되면, 핸들러가 호출되어 Apache가 재시작된다.

`handlers: ` : 핸들러 블록에서 서비스 재시작 작업이 정의된다.

 


실습 진행해보기

nano first-playbook.yml

# 내용 입력
---
  - name: Add an ansible hosts
    hosts: localhost
    tasks:
      - name: Add a ansible hosts
        blockinfile:
          path: /etc/ansible/hosts
          block: |
            [newtarget]
            192.168.0.52

우선 ansible 서버에서 멱등성이 적용되는지 여부를 확인해보자.

 

# 플레이북 실행
sudo ansible-playbook first-playbook.yml

실행하면 호스트 주소가 localhost이니 자기 자신 내부에서 실행해서 해당 파일을 추가해주고,

`cat`으로 확인 시 newtarget이 추가된 것을 볼 수 있다.

 

이 상태에서 플레이북 실행 명령어를 몇 번 더 실행해도 newtarget 그룹은 하나만이 추가된 상태를 유지하고, 이를 멱등성이라고 부른다.


target 그룹을 타겟으로하여 파일을 복사하는 playbook을 사용해보자.

우선 방금 전 만든 hello.txt 파일을 삭제하고 second playbook을 작성해주자.

 

nano second-playbook.yml

# 내용 작성
- name: Ansible Copy Example to target
  hosts: target
  tasks:
    - name: copy file with playbook
      copy:
        src: ~/hello.txt
        dest: /home/ubuntu/tmp
        owner: ubuntu
        mode: 0644
        
# 플레이북 실행
sudo ansible-playbook second-playbook.yml

 

위 이미지처럼 권한 문제가 발생하는데, `sudo`로 입력 시 가끔 public key가 ubntu 계정만을 타겟으로 잡힌 경우가 있어 안될 수 있다.

 

`sudo`를 빼고 입력하면 성공적으로 파일이 전송된 것을 확인할 수 있다.

'🌥️Cloud Study🌥️ > IaC' 카테고리의 다른 글

[ Ansible ] Jenkins와 Ansible 연동 후 플레이북 실행  (0) 2024.08.23
[ Ansible ] Ansible Galaxy로 원하는 롤, 콜렉션 찾기  (1) 2024.08.23
[ Ansible ] Ansible 모듈 사용해보기  (1) 2024.08.22
[ Ansible ] Ansible 개요 및 환경설정  (0) 2024.08.22
'🌥️Cloud Study🌥️/IaC' 카테고리의 다른 글
  • [ Ansible ] Jenkins와 Ansible 연동 후 플레이북 실행
  • [ Ansible ] Ansible Galaxy로 원하는 롤, 콜렉션 찾기
  • [ Ansible ] Ansible 모듈 사용해보기
  • [ Ansible ] Ansible 개요 및 환경설정
L_Chae
L_Chae
🎮😻🤓🖥✨
  • L_Chae
    Cherish
    L_Chae
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🌥️Cloud Study🌥️
        • AWS
        • NHN
        • KT
        • Microsoft (Azure 900)
        • TroubleShooting
        • IaC
        • Etc
      • STUDY
        • English
        • Japanese
        • 개인정보보호 관련
      • 초등학교 AI 교육 진행
        • 2024학년도 1학년-2학년
        • 2025학년도 4학년
      • 2024 KDT 📕
        • Lecture
        • Study 📗
        • Study-JAVA
        • Project
        • etc
      • INTERLUDE ✦
        • 2022 SYSTEM STUDY
        • 2022 Winter Study
        • 2023 AutoMobility STUDY
        • 2023 Summer Study (CPPG)
        • 2023 Reversing STUDY
        • etc
      • Private🔒
        • MacBook 💻
        • Screenshot 🩷
        • Photo 🖼️
        • FFXIV - Backup 🎮
        • Tistory
      • PBL 📗
        • 논문 스터디
        • Backup
      • Project 🖤
        • 2022-2) 개인정보보호 소학회
        • 2022-2) winter GURU2 - iOS
        • 2023-1) PBL 3
        • 2023-2) PBL 4
        • 2024-1) SW-AI교육 실습 일지
      • CTF 🚩
        • 2022
        • 2023
      • News scrap 📰
        • 2022
        • 2023
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ansible
    ansible galaxy
    jlpt n1 도전기
    content collection
    멱등성
    deprecation warning
    N1
    JLPT N1
    JLPT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
L_Chae
[ Ansible ] 플레이북(Playbook) 사용해보기
상단으로

티스토리툴바