Ansible — 개발 환경 및 프로그래밍

최신 도구 가이드 / 개발 환경 및 프로그래밍 / ansible.html

개발 환경 및 프로그래밍원문등록 2026-10-18

SSH만으로 여러 서버에 구성을 일괄 적용하는 자동화 도구로, 스크립트 대신 선언형 플레이북으로 인프라를 관리합니다.

기본 정보

프로그램 이름Ansible (앤서블)
한 줄 소개SSH만으로 여러 서버에 구성을 일괄 적용하는 자동화 도구로, 스크립트 대신 선언형 플레이북으로 인프라를 관리합니다.
개발·유지Red Hat / Ansible Community
공식 홈페이지https://www.ansible.com/
공식 문서https://docs.ansible.com/
공식 다운로드https://docs.ansible.com/ansible/latest/installation_guide/index.html
지원 운영체제Linux 제어 노드(Python 3.12+), 타깃은 SSH·WinRM
라이선스GPL-3.0-or-later (ansible-core)
안정 버전Ansible Community 14.x / ansible-core 2.21 (2026-05 GA) — 확인일 2026-10-18
GitHub 저장소https://github.com/ansible/ansible
분류개발 환경 및 프로그래밍 (태그: 자동화, IaC, 설정 관리, 서버 운영, DevOps)

이 프로그램은 무엇인가?

Ansible은 관리 대상 서버에 별도 에이전트를 설치하지 않고 SSH만으로 명령을 보내는 자동화 도구입니다. 서버에 '어떤 상태가 되어야 하는지'를 플레이북(playbook)이라는 YAML 파일로 선언하고, Ansible이 현재 상태를 확인한 뒤 필요한 작업만 수행합니다.

셸 스크립트와 달리 '무엇을 바꿀지'를 선언적으로 적기 때문에 재실행해도 안전하고, 역할(role) 단위로 재사용·공유할 수 있습니다. 서버 증설·패키지 설치·권한 설정·크론 등록 같은 운영 작업의 표준 자동화로 자리 잡았습니다.

어떤 문제를 해결하는가?

  • ('서버 증설에서', '여러 대의 서버에 동일한 환경을 빠르게 구축해야 할 때', '플레이북 한 번으로 패키지·설정·서비스를 일괄 적용할 수 있습니다.')
  • ('설정 드리프트에서', '수동 변경으로 서버 설정이 달라졌을 때', '재실행하면 선언한 상태로 되돌릴 수 있습니다.')
  • ('반복 작업에서', '패치·사용자 추가·로그 로테이트 설정을 매번 손으로 할 때', '역할·플레이북으로 표준화해 위험한 rm·수동 편집을 줄입니다.')

주요 기능

에이전트리스 SSH

타깃에 별도 프로그램 없이 SSH로 작업

  • 활용 상황: 서버 fleet 관리
  • 얻는 결과: 설치 부담 없이 자동화 시작
  • 제한 사항: SSH 키·권한 관리가 선행되어야 합니다.

선언형 플레이북

desired state를 YAML로 선언

  • 활용 상황: 구성 관리
  • 얻는 결과: 재실행 안정성·가독성 확보
  • 제한 사항: 복잡한 로직은 스크립트보다 표현이 길어질 수 있습니다.

역할(Role)·컬렉션

작업 단위를 역할·컬렉션으로 모듈화

  • 활용 상황: 팀 표준화
  • 얻는 결과: 재사용 가능한 자동화 라이브러리 구축
  • 제한 사항: 역할 내부 구조 학습이 필요합니다.

Fact 수집

타깃의 OS·IP·메모리 등 정보를 수집해 조건 분기

  • 활용 상황: 배포판별 차이 대응
  • 얻는 결과: 하나의 플레이북으로 여러 환경 처리
  • 제한 사항: fact 수집 오버헤드가 커질 수 있어 비활성화 옵션도 있습니다.

설치 및 실행

Linux (pip)

제어 노드에 ansible-core를 설치합니다.

python3 -m pip install --user ansible-core
ansible --version

Linux (배포판 패키지)

저장소 버전은 오래될 수 있으므로 커뮤니티 패키지 문서 확인 권장.

sudo apt install ansible   # Ubuntu 저장소

macOS

brew 또는 pip로 설치합니다.

brew install ansible

실제 사용 예제

인벤토리 정의

관리할 호스트 목록을 인벤토리 파일에 적습니다. 그룹 단위로 묶어 관리합니다.

$ cat /etc/ansible/hosts
[web]
192.0.2.20
192.0.2.21
[db]
192.0.2.30

플레이북 작성·실행

플레이북에 대상 그룹·태스크를 적고 ansible-playbook으로 실행합니다.

$ cat site.yaml
- hosts: web
  become: yes
  tasks:
    - name: nginx install
      apt: name=nginx state=present
$ ansible-playbook -i inventory site.yaml

어댑티브 실행(점검)

check 모드로 변경 없이 영향을 미리 확인할 수 있습니다.

$ ansible-playbook -i inventory site.yaml --check --diff

장점과 한계

장점

  • 에이전트리스 — 타깃에 추가 소프트웨어 설치 불필요
  • 선언형이라 재실행 안전, 변경 이력 관리 쉬움
  • 역할·컬렉션 생태계로 표준 자동화 재사용 가능
  • 무료·오픈소스(ansible-core)로 커뮤니티 지원 폭넓음

사용 전에 고려할 점

  • 대량 호스트 시 SSH 직렬 실행이 느릴 수 있습니다(파이핑·멱등성 관리 필요).
  • 플레이북 문법·역할 구조 학습 곡선이 있습니다.
  • 자동화 오류는 여러 서버에 동시에 영향을 줄 수 있어 점검 모드·배포 순서 관리가 필요합니다.

비슷한 프로그램과 비교

프로그램특징이런 경우에 적합
Chef / Puppet에이전트 기반 구성 관리대규모·상시 동기화 중심 환경
Terraform클라우드 인프라 프로비저닝(IaC)컴퓨팅·네트워크 리소스 생성 단계
Shell 스크립트간단한 일괄 작업소규모·일회성 작업

공식 자료 및 추가 학습

버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.

실제 실행 화면

아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

Ansible 예시: 버전 확인, 체크 모드로 플레이북 실행

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.