베하~~
안녕하세요 항상 웃음이 나는 픠식팀 입니다.
이번 포스팅에서는 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을 동작 시깁니다.
- Ansible이 playbook을 읽고 분석합니다.
- playbook의 각 플레이(play)는 특정 호스트 또는 호스트 그룹을 대상으로 지정합니다.
- 각 플레이의 테스크(task)는 해당 호스트 또는 호스트 그룹에 대한 작업을 정의합니다.
- Ansible은 호스트 또는 호스트 그룹에 대해 SSH를 사용하여 연결하고 필요한 정보를 수집합니다.
- 플레이북의 각 테스크는 Ansible 모듈을 사용하여 실제 작업을 수행합니다. 예를 들어, 파일을 복사하거나 패키지를 치하는 등의 작업을 수행할 수 있습니다.
- Ansible은 각 테스크의 상태를 확인하고 필요한 경우 변경 작업을 수행합니다.
- 모든 플레이의 작업이 완료되면 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 |
댓글