Ansible — 개발 환경 및 프로그래밍
최신 도구 가이드 / 개발 환경 및 프로그래밍 / ansible.html
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 스크립트 | 간단한 일괄 작업 | 소규모·일회성 작업 |
공식 자료 및 추가 학습
- 공식 홈페이지 — https://www.ansible.com/
- 공식 문서 / 지식베이스 — https://docs.ansible.com/
- 공식 다운로드 — https://docs.ansible.com/ansible/latest/installation_guide/index.html
- 릴리스 노트 — https://docs.ansible.com/projects/ansible/latest/reference_appendices/release_and_maintenance.html
- 소스 / 개발 자료 — https://github.com/ansible/ansible
버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.
실제 실행 화면
아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

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