Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스티리밍
- 비대칭키
- IVS
- 관리 호스트
- Amazon Cloud Storage
- 자격증
- IAC
- 보안
- AI
- 실시간 채팅
- ansible
- 자료구조
- AWS
- 라이브 커머스
- 통신
- GNS3
- IVS Chat
- ssh
- 눈송이 서버
- 개인키
- 알고리즘
- 대칭키
- 스위치
- 멱등성
- 네트워크
- 공개키
- Communication
- 렌툴
- 제어 노드
- MATLAB
Archives
- Today
- Total
Tenma
[Ansible] Ansible 아키텍처 본문
안녕하세요!
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 |
|---|