Tenma

[Ansible] Ansible 아키텍처 본문

IaC/Ansible

[Ansible] Ansible 아키텍처

Tenma2 2025. 11. 8. 17:07
안녕하세요!

Ansible의 구조에 대해 알아보도록 하겠습니다!

이전 게시물에서의 멱등성의 개념을 다시 떠올리며 읽어보세요!




 

Ansible의 구조는?

1. 주요 구성요소

Ansible은 제어 노드관리 호스트라는 두 가지 유형의 노드로 구성됩니다.

 

구성 요소 역할 설명
제어 노드 (Control Node) Ansible 패키지가 설치되고 자동화 코드(플레이북)가 실행되는 단일 노드.  
관리 호스트 (Managed Host) 자동화 작업이 실제로 수행되는 대상 시스템. OpenSSH를 통해 제어 노드와 연결됨.
인벤토리 (Inventory) 관리 호스트 목록을 정의하는 파일. 정적(텍스트 파일) 또는 동적(스크립트 실행)으로 정의 가능하며, 시스템을 그룹으로 묶어 일괄 관리할 수 있도록 함.
플레이북 (Playbook) 수행해야 하는 작업 목록이 정의된 파일 (YAML 형식). 하나 이상의 플레이(Play)를 포함하며, 쉽게 작성하고 읽을 수 있음.

 

 

 

구성 요소 역할 설명
모듈 (Module) 특정 작업을 수행하는 작은 코드 조각 (Python, PowerShell 등으로 작성됨). 각 작업(Task)은 특정 인수를 가진 모듈을 실행하며, 시스템의 특정 요소가 원하는 상태에 있는지를 확인하고, 상태에 도달하지 않은 경우에만 변경을 수행함 (멱등성 유지).
작업 (Task) 플레이 내부에서 정의되며, 특정 인수와 함께 모듈을 실행하는 단위.  

 

2. 작업 수행 방식 및 멱등성

 

 

1. 설치: 컨트롤 노드에 Ansible 설치.

 

2. 인벤토리 작성: 대상 호스트/그룹 정의(정적 또는 동적).

[web]
web01
web02

[db]
db01

 

3. 플레이북 작성: YAML로 상태/작업(Task) 선언.

- name: 웹 서버 패키지 설치 및 서비스 기동
  hosts: web
  become: yes
  tasks:
    - name: nginx 설치
      ansible.builtin.package:
        name: nginx
        state: present

    - name: nginx 서비스 실행/부팅시 자동시작
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: yes

 

4. 실행:

ansible-playbook -i <inventory> <playbook>.yml

 

5. 결과: 변경/유지/실패 여부 리포트, 반복 실행해도 안전.

 

 

  • Task와 Module: Task는 모듈을 실행하며, 모듈은 시스템의 특정 요소가 원하는 특정 상태에 있는지를 확인합니다.
  • 멱등성 유지: 시스템이 이미 올바른 상태에 도달해 있다면 아무 작업도 수행하지 않음으로써 멱등성을 유지합니다.
  • 오류 처리: 작업이 실패하는 경우 기본 동작은 해당 실패한 호스트에 대해 플레이북의 나머지 부분 실행을 중단하고, 나머지 호스트로는 계속 작업을 진행하는 것입니다.
  • 안전한 반복 실행: 작업, 플레이, 플레이북은 멱등적이 되도록 설계되어 동일한 호스트에서 플레이북을 안전하게 반복 실행할 수 있습니다.

 

 

 

이렇게 Ansible의 구조에 대해 알아보았는데요!

주요 노드는 제어 노드관리 호스트가 있습니다.

Playbook → Play → Task(= Module) 순으로 코드가 실행되고
그 대상은 Inventory에 기록되어 있음을 알 수 있습니다.





학습 점검 차원에서
여기서 퀴즈를 하나 내도록 하겠습니다.


Q1) Ansible이 설치 되는 곳은?

Q2) 관리 대상 호스트 목록을 정의하는 파일/구조는 무엇인가?

Q3) Playbook은 어떤 형식으로 작성되는가?

Q4) Playbook 실행 시 특정 호스트에서 Task가 실패하면 나머지 호스트도 중단된다. (O/X)

Q5) 이미 특정 호스트에 Task가 성공했을때 Playbook 재 실행 시 해당 호스트의 Task는 재설치 된다. (O/X)

감사합니다!

 

'IaC > Ansible' 카테고리의 다른 글

[Ansible] Ansible이란?  (0) 2025.11.07