본문 바로가기
INFRA/Operation

[Ansible] Ansible Playbook이란

by BTC_Hyeonsik 2023. 6. 8.

베하~~

안녕하세요 항상 웃음이 나는 픠식팀 입니다.

이번 포스팅에서는 Ansible Playbook이 무엇인지에 대해 알아보도록 하겠습니다. 

 

Ansible Playbook이란?

 Ansible playbook은 Ansible을 사용한 IT 인프라 자동화를 위한 설정 파일입니다. 

이 설정 파일은 YAML 형식으로 작성되며, 목표 상태를 정의하는 작업 목록으로 구성됩니다.

각 작업은 Ansible 모듈을 사용하여 수행되며, 시스템 구성, 파일 조작, 패키지 설치 등 다양한 작업을 처리할 수 있습니다. Playbook은 단계적인 절차를 포함하며, 변수와 조건문을 사용하여 동적인 구성 관리도 가능합니다. 이를 통해 반복적이고 복잡한 작업을 자동화하여 시스템 관리를 효율적으로 수행할 수 있습니다.

 

Playbook의 구조

 

플레이북은 한 개 이상의 플레이(play)로 구성됩니다. 각 플레이(play)는 특정 호스트 또는 호스트 그룹에 대한 작업을 정의합니다. 예를 들어, 웹 서버 그룹에 대한 작업과 데이터베이스 서버 그룹에 대한 작업을 개별적으로 정의할 수 있습니다.

각 플레이(play)는 여러 개의 테스크(task)로 구성됩니다. 테스크(task)는 Ansible 모듈을 사용하여 특정 작업을 수행합니다. 예를 들어, 패키지 설치, 구성 파일 복사, 서비스 재시작 등의 작업을 개별적으로 정의할 수 있습니다.

 

좀 더 자세하게  구성 요소를 알아보겠습니다.

 

Play

플레이(play)는 특정 작업을 수행할 호스트 또는 호스트 그룹을 지정하는 역할을 합니다.

각 플레이는 다음과 같은 설정을 포함합니다:


이름(name): 플레이의 이름을 정의합니다. 이는 플레이를 식별하는 데 사용됩니다.

 

호스트(hosts): 플레이가 적용될 대상 호스트 또는 호스트 그룹을 지정합니다. 

 

예를 들어, "web_servers"는 "web_servers" 호스트 그룹에 대한 작업을 수행하라는 의미입니다.

 

Task


테스크(task)는 실제로 수행되는 작업을 정의하는 부분입니다. 각 테스크는 다음과 같은 요소로 구성됩니다:

이름(name): 테스크의 이름을 정의합니다. 이는 테스크를 식별하는 데 사용됩니다.

모듈명(module_name): 해당 테스크에서 사용할 Ansible 모듈의 이름을 지정합니다. 예를 들어, "copy" 모듈은 파일을 복사하는 작업에 사용될 수 있습니다.

모듈 인자(module_arguments): 모듈이 필요로 하는 인자(argument)를 지정합니다. 이는 모듈이 실행되는 동안 필요한 추가 정보를 제공하는 데 사용됩니다. 각 모듈에는 사용할 수 있는 인자들이 있으며, 작업에 따라 다양한 형태와 목적을 가집니다. 예를 들어, "copy" 모듈의 인자로 복사할 파일 경로, 대상 경로 등을 지정할 수 있습니다.


Yaml 파일 형식을 예시로 구조를 알아보겠습니다.

---
- name: Play 1
  hosts: web_servers
  tasks:
    - name: Task 1
      <module_name>: <module_arguments>
    - name: Task 2
      <module_name>: <module_arguments>

- name: Play 2
  hosts: db_servers
  tasks:
    - name: Task 3
      <module_name>: <module_arguments>
    - name: Task 4
      <module_name>: <module_arguments>

 

플레이북 파일 안에 2개의 play와 각각 play 밑에 2개의 task 가 있는 형식을 확인 할 수 있습니다.

 

Ansible Playbook 동작 방식

Ansible은 다음과 같은 순서로 Playbook을 동작 시깁니다. 

  1. Ansible이 playbook을 읽고 분석합니다.
  2. playbook의 각 플레이(play)는 특정 호스트 또는 호스트 그룹을 대상으로 지정합니다.
  3. 각 플레이의 테스크(task)는 해당 호스트 또는 호스트 그룹에 대한 작업을 정의합니다.
  4. Ansible은 호스트 또는 호스트 그룹에 대해 SSH를 사용하여 연결하고 필요한 정보를 수집합니다.
  5. 플레이북의 각 테스크는 Ansible 모듈을 사용하여 실제 작업을 수행합니다. 예를 들어, 파일을 복사하거나 패키지를 치하는 등의 작업을 수행할 수 있습니다.
  6. Ansible은 각 테스크의 상태를 확인하고 필요한 경우 변경 작업을 수행합니다.
  7. 모든 플레이의 작업이 완료되면 Ansible은 결과를 요약하여 출력합니다.

 

Ansible playbook을 사용하면 IT 인프라를 원하는 상태로 구성하기 위한 목표를 설정하고, 필요한 작업을 단계적으로 정의할 수 있습니다. 이는 시스템 관리 작업을 자동화하고, 일관성 있는 환경을 구축하며, 시간과 노력을 절약하는 데 도움이 됩니다.

 

지금까지 Ansible Playbook에 대해서 알아보았습니다. 

 

다음 포스팅 때는 다른 내용으로 찾아 뵙겠습니다 다음에 뵈요~

 

'INFRA > Operation' 카테고리의 다른 글

[Ansible] Ansible Inventory  (1) 2023.06.09
배포 전략 - Rolling, Blue/Green, Canary  (0) 2023.06.08
CrossPlane에 대해  (0) 2023.06.07
[Ansible] Ansible 설치 및 apache 배포  (0) 2023.05.25
Terragrunt 개념 및 사용법 - 2  (0) 2023.01.25

댓글