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 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.
실제 실행 화면
아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.
!Ansible 예시: 버전 확인, 체크 모드로 플레이북 실행
실제 운영 중인 서버
원문(HTML): https://games.cursorai.co.kr/programs/apps/dev/ansible.html
AI Knowledge Hub
방문자 댓글