본문 바로가기

리눅스

[draft] Ansible 아키텍처

Ansible 아키텍처

Ansible은 에이전트(agent) 없이 SSH 기반으로 동작하는 자동화 도구로 중앙의 Control Node가 여러 Managed Node를 일괄 제어하는 구조를 가집니다.

출처-https://cdn.educba.com/academy/wp-content/uploads/2019/10/ansible-architecture.png.webp
출처-https://miro.medium.com/v2/resize:fit:720/format:webp/0*sMSfIbPO8mH299to

핵심 구성 요소

1. Inventory (인벤토리)

Inventory는 Ansible이 관리할 대상 서버(호스트)와 그룹을 정의한 목록입니다.

주요 역할

  • 관리 대상 서버 목록 정의
  • 서버 그룹화 (web, db, api 등)
  • 호스트 및 그룹별 변수 관리

특징

  • 정적 Inventory (INI, YAML)
  • 동적 Inventory (AWS, GCP, Azure 등)
  • 패턴 기반 실행 대상 선택 가능
Ansible 자동화의 출발점이 되는 구성 요소

2. Modules (모듈)

Module은 Ansible에서 실제 작업을 수행하는 최소 실행 단위입니다.

주요 역할

  • 패키지 설치
  • 서비스 시작/중지
  • 파일 복사 및 설정
  • 클라우드 리소스 제어

특징

  • 대부분 멱등성(Idempotent) 보장
  • Python 기반 (일부는 Shell, PowerShell)
  • 작업 후 자동으로 제거되는 임시 코드 방식

예시

  • yum, apt
  • service, systemd
  • copy, template
  • ec2, s3, rds
“Ansible이 실제로 일을 하는 손”

3. Plugins (플러그인)

Plugin은 Ansible의 동작 방식을 확장하거나 제어하는 구성 요소입니다.

주요 역할

  • Inventory 확장 (동적 인벤토리)
  • 연결 방식 제어 (SSH, local 등)
  • 변수 로딩 방식 정의
  • 출력 포맷 제어

대표적인 플러그인 종류

  • Inventory Plugin: aws_ec2, gcp_compute
  • Connection Plugin: ssh, local
  • Callback Plugin: 실행 결과 출력 제어
  • Lookup Plugin: 외부 데이터 조회
Ansible의 확장성과 유연성을 담당

4. API (Ansible API)

Ansible API는 Ansible의 내부 기능을 외부 시스템에서 호출할 수 있도록 제공되는 인터페이스입니다.

주요 활용처

  • CI/CD 파이프라인 연동
  • 자동화 포털(AWX / Ansible Tower / AAP)
  • Python 기반 자동화 시스템 연계

특징

  • Playbook 실행
  • Inventory 조회
  • 결과 수집 및 상태 관리
Ansible을 하나의 “자동화 엔진”으로 활용하게 해주는 연결 고리