
0. Ansible이란?
오픈 소스 자동화 플랫폼으로, IT 시스템 구성 및 관리를 자동화하는 도구이다.
언제 Ansible이 필요할까?
- 여러 서버에 동일한 설정을 반복적으로 적용해야 할 때
- 새로운 서버를 빠르게 설정해야 할 때
위와 같은 상황을 포함해서, 반복적인 작업을 자동화할 때 Ansible이 필요하다.
Ansible의 특징
1. 에이전트가 필요없다.
Ansible은 관리 대상 서버에 별도의 에이전트 설치가 필요 없는 에이전트리스 구조를 가진다.
일반적인 구성 관리 도구는 각 서버에 에이전트를 설치하여 중앙 서버의 명령을 수신하고 이를 실행한다.
하지만 Ansible은 SSH를 통해 관리 대상 서버에 직접 접속하여 작업을 수행한다.
서버에는 상주 프로세스나 데몬이 필요하지 않고, 명령 실행이 끝나면 연결을 종료한다.
그래서 관리 대상 서버는 Ansible의 존재를 인식하지 않아도 된다.
이런 구조 덕분에 Ansible은 별도의 에이전트 배포 및 버전 관리가 필요 없고, 서버 환경을 가볍게 유지할 수 있다.
추가 포트 개방 또한 필요하지 않아 보안 측면에서도 장점이 있다.
쉬운 요약이 필요하다면?
😢 에이전트가 뭔데?
😎 에이전트는 중앙 관리 서버의 명령을 실행하기 위해 서버에 상주하는 프로그램이얌
😢 Ansible도 관리 도구잖아. 근데 왜 에이전트가 필요 없는건데?
😎 Ansible은 SSH를 이용해서 직접 서버에 접속하거든. 그래서 대리인 말그대로 에이전트가 필요 없는거야.
😯 오 그러면 장점이 뭔데?
😎 에이전트 설치가 불필요하니까 초기 설정이 단순하고 운영이나 보안 관리 부담이 줄어들어~
2. 간단하다.
YAML 파일로 작성되어 사람이 읽기 쉽고 작성하기도 편한 자동화 도구이다.
특별한 코딩 기술이 필요하지 않다는 특징이 있다.
3. 멱등성과 예측 가능성
자동화 도구에서 중요한 특성 중 하나는 멱등성이다.
멱등성이란 동일한 작업을 여러 번 수행하더라도 시스템의 상태가 변하지 않고 항상 같은 결과를 유지하는 성질을 의미한다.
Ansible은 선언적 방식으로 시스템의 원하는 상태를 정의한다.
예를 들어 특정 패키지가 설치되어 있어야 한다는 상태를 정의하면, 이미 설치된 경우에는 아무 작업도 수행하지 않는다.
그래서 플레이북을 여러 번 실행하더라도 시스템 상태는 항상 동일하게 유지된다.
(플레이북은 Ansible로 수행할 작업 내용을 담고 있는 파일로 다음 글에서 본격적으로 다룰 것이다.)
멱등성이라는 특징 덕분에 자동화 작업도 예측할 수 있게 된다.
작업을 다시 실행해도 불필요한 변경이 발생하지 않기 때문에, 운영 환경에서 재실행에 대한 부담이 줄어든다.
결과적으로 Ansible의 멱등성은 자동화 작업을 안전하고 반복 가능하게 만들며,
실행 결과를 신뢰할 수 있는 기반이 되어준다.
cf. 패키지를 설치하는 작업을 생각해보자.
스크립트 방식에서는 이미 설치된 패키지를 다시 설치하려고 시도할 수 있다.
하지만 Ansible은 해당 패키지가 이미 존재하는지를 먼저 확인한 뒤, 필요한 경우에만 변경을 수행한다.
이 차이로 인해 Ansible은 여러 번 실행해도 항상 동일한 상태(멱등성)를 유지할 수 있다.
1. Ansible의 아키텍처

Ansible은 여러 시스템을 제어하는 자동화 도구이므로 아키텍처를 가진다.
중앙에서 작업을 실행하는 부분(제어노드)과 작업을 당하는 부분(관리호스트)인
2개의 구성요소(Control Node와 Managed Host)로 나뉜다.
1-1. 제어노드 (Control Node)
제어노드는 Ansible 패키지가 설치되는 유일한 노드이다.
playbook을 작성하고 실행하고, Inventory를 통해서 관리할 대상 서버를 식별한다.
한 개의 제어노드만으로 여러 관리 호스트를 동시에 관리할 수 있다.
제어노드는 SSH를 통해서 관리 호스트에 접속해서 플레이북에 정의된 내용을 수행한다.
1-2. 관리호스트 (Managed Host)
관리 호스트는 Ansible에 의해 설정이 변경되는 대상 서버이다.
여러 대로 구성될 수 있다.
관리호스트에는 Ansible 패키지나 에이전트를 설치할 필요가 없다.
제어노드가 네트워크를 통해서 직접 접속해서 명령을 실행하고, 작업을 다 수행하면 연결을 종료한다.
따라서 에이전트 포트 개방이 필요없어서 보안적으로도 좋다.
1-3. 인벤토리와 플레이북
(1) Inventory
인벤토리는 관리 호스트 목록을 정의한 파일이다.
여기서 관리 대상 서버를 그룹 단위로 묶어서 관리할 수도 있다.
(2) Playbook
플레이북은 관리 호스트에서 수행할 실제 작업 내용을 정의한 파일로, 하나 이상의 플레이를 포함한다.
플레이는 특정 서버 또는 서버 그룹을 대상으로 수행할 작업 묶음이고, 플레이 내부에는 여러 개의 작업이 정의된다.
각 작업은 모듈을 실행하는 단위이고, 어떤 서버에서 어떤 작업을 수행할지를 YAML 형식을 이용해서 표현한다.
모듈은 파일 생성, 패키지 설치, 설정 변경, API 호출과 같이 하나의 기능을 담당하는 작은 도구이다.
Ansible은 이러한 모듈을 수백 개 제공하며, 사용자는 이를 조합해 자동화 작업을 구성하게 된다.
모듈의 특징은 무조건 명령을 실행하지 않는다는 것이다.
먼저 시스템이 원하는 상태에 있는지를 확인한 뒤, 상태가 다를 경우에만 변경을 수행한다.
이미 원하는 상태라면 아무 작업도 하지 않아서 멱등성이 보장된다.
2. Ansible 설치
무료 버전 설치 방법이다.
리눅스 시스템일 경우, 패키지 관리 도구를 이용할 수 있다.
RHEL 기반의 리눅스일 경우 아래 명령어를 이용해서 설치할 수 있다.
yum install epel-release
yum install ansible
설치 후 아래 명령어로 버전이 잘 확인된다면 잘 설치된 것이다.
ansible --version'공부기록 > IaC' 카테고리의 다른 글
| [ Ansible ] 2. Ansible 변수 관리 | Vault | 암호화 (0) | 2026.01.29 |
|---|---|
| [ Ansible ] 1. Ansible 구성파일 | Inventory | 플레이북 개념 (0) | 2026.01.28 |