개요

Ansible은 Agentless 방식의 IT 자동화 도구로 서버 설정 관리, 애플리케이션 배포, 작업 오케스트레이션을 단일 툴에서 사용할 수 있다.


주요 특징

  • Agentless : 제어 노드에서 SSH(또는 WinRM)을 통해 원격 노드에 접속해 명령을 실행한다.
  • YAML 기반 Playbook : 사람이 읽기 쉬운 YAML 로 자동화 작업을 작성한다 (YAML 특성상 문법이 까다로운 점이 있다)
  • 모듈 기반 확장성 : 모듈 형태로 여러 개의 기능들을 조합하여 사용할 수 있다.
  • 멱등성 : 같은 플레이북을 여러 번 실행해도 시스템 상태가 의도한 상태로 유지되도록 설계할 수 있다
    • 여기서 주의할 점은 모든 ansible 모듈에서 멱등성을 지원하지 않는다 (대표적으로 shell, command).
    • 멱등성을 지원하지 않는 모듈도 존재하므로 플레이북 내에 멱등성이 적용되도록 설계에 힘써야 한다.
  • 커뮤니티 & 생태계 풍부
    • Ansible Galaxy : 사용자가 작성한 Ansible 모듈을 공유하는 플랫폼
    • AWX (Ansible Tower) : Ansible 기반의 오픈 소스 IT 자동화 플랫폼 (Ansible Tower 는 상업용 유료 버전)


주요 구성 요소

  1. Control Node (제어 노드) Ansible을 설치하고 Playbook을 실행하는 머신. 보통 운영자 PC나 CI 서버가 된다.

  2. Managed Nodes (관리 대상 노드) 제어 노드가 SSH(리눅스) 또는 WinRM(윈도우)을 통해 접속하는 서버들. 별도 에이전트 설치 없음.

  3. Inventory (인벤토리) 관리 대상 노드의 목록(호스트, 그룹, 변수)을 저장. ini나 yaml 형식, 동적 인벤토리 스크립트도 가능(AWS, GCP 등).

  4. Playbook 자동화 작업(플레이)의 모음. YAML로 작성되며 각 플레이는 어떤 호스트에 어떤 역할(Tasks)을 수행할지 기술.

  5. Module (모듈) Ansible이 원격 노드에서 실행하는 기능 단위. 예: apt, yum, service, copy, template, git 등.

  6. Role (역할) 재사용 가능한 파일/태스크/변수/템플릿의 묶음. 복잡한 구성을 모듈화해 프로젝트 구조를 깔끔하게 함.

  7. Facts Ansible이 관리 대상 노드에서 수집하는 시스템 정보(운영체제, IP, 메모리 등). 플레이 내에서 변수처럼 사용 가능.

  8. Vault 암호·비밀값(예: DB 비밀번호)을 안전하게 암호화해 관리하는 기능.

  9. AWX / Ansible Tower 웹 UI, RBAC(권한관리), 스케줄링, 감사로그, 작업 템플릿 등을 제공하는 오픈소스 /상업 레이어.


간단한 동작 과정

  1. 제어 노드에서 ansible-playbook 실행 → Inventory에서 대상 호스트 선정

  2. SSH로 접속(연결 플러그인에 따라 방식이 다를 수 있음)

  3. 필요한 모듈과 파라미터를 원격 노드에 전송(보통 JSON 형태)

  4. 원격 노드에서 모듈이 실행되고 결과가 제어 노드로 반환

  5. 제어 노드는 결과를 종합하여 다음 작업 수행(멱등성 유지)


개인적으로 Ansible을 사용하면서 얻은 Tip

  1. Playbook/Role은 버전관리(Git)로 관리한다.
    • Github를 사용할 경우, SSH 키 또는 Personal Access Token은 반드시 리포지토리에 대한 pull/push 권한만 가지는 것이 좋다 (인증 정보가 유출되어도 피해를 최소화하기 위함)
  2. 패스워드와 같은 민감한 정보는 반드시 Vault로 암호화한다.
    • Vault는 Ansible 뿐만 아니라 AWX에서도 동일하게 사용할 수 있다.
  3. Ansible에서는 작업 기록(로그)와 감사(audit) 기능이 빈약하다. 해당 기능들을 사용하고자 한다면 Ansible Tower/AWX를 도입하는 것이 좋다.

  4. Ansible 공부에 도움이 되는 자료들은 아래와 같다.
    • 기초
      • 앤서블로 시작하는 인프라 자동화 (한빛미디어)
      • 앤서블 시작과 실행 3/e (에이콘출판)
    • 실무적인 내용은 아래의 문서를 참고해도 좋다. 다만 해당 문서는 지침 문서 (Cursor AI을 통해 Ansible을 작성하기 위한 Rule 파일)이기 때문에 사용 예제는 없다.
      • https://github.com/sanjeed5/awesome-cursor-rules-mdc/blob/main/rules-mdc/ansible.mdc

태그:

카테고리:

Published:

Updated: