1. Ansible?

Ansible은 여러 서버에 SSH로 접속하여 운영체제 설정, 패키지 설치, 설정 파일 배포, 서비스 실행 등을 자동화하는 구성 관리 도구이다.

Terraform이 서버·네트워크·볼륨 같은 인프라 리소스를 생성한다면, Ansible은 일반적으로 생성된 서버 내부의 상태를 원하는 형태로 구성한다.

Terraform
→ VM, Network, Volume 생성

Ansible
→ VM 내부 패키지, 설정 파일, 서비스 구성

2. Ansible이 하는 일

Ansible은 여러 서버에 반복적으로 수행해야 하는 작업을 코드로 작성하고 일괄 실행한다.

대표적인 작업은 다음과 같다.

패키지 설치
사용자 및 권한 설정
SSH 키 배포
설정 파일 생성 및 수정
서비스 시작·중지·재시작
디렉터리 및 파일 생성
커널 파라미터 설정
Docker·Kubernetes·모니터링 환경 구성
배포 조건 검사

예를 들어 서버가 10대 있을 때 각각 접속해서 다음 명령을 반복하지 않고:

sudo apt install nginx
sudo systemctl enable nginx
sudo systemctl start nginx

Ansible 플레이북 한 번으로 모든 서버에 적용할 수 있다.


3. Ansible의 기본 구조

Ansible은 크게 다음 요소로 구성된다.

Control Node
→ Ansible을 실행하는 서버

Managed Node
→ Ansible이 관리하는 대상 서버

Inventory
→ 관리 대상 서버와 그룹 정의

Module
→ 패키지 설치, 파일 생성 등 실제 작업 수행

Playbook
→ 여러 작업을 YAML로 작성한 자동화 문서

현재 (실습용 개인)프로젝트 기준

mgmt
→ Ansible Control Node

controller
compute1
storage1
→ Managed Nodes 4. Inventory

Inventory는 Ansible이 관리할 서버 목록과 그룹을 정의하는 파일이다.