Ansible Roles는 자동화 작업, 핸들러, 변수 및 템플릿을 모듈화하여 재사용성을 극대화하는 표준화된 구조를 제공합니다.
🔗 Related: Ansible 기본 치트시트 · Ansible 퀵스타트 가이드 · Ansible 플레이북 실무 예제
표준 롤 디렉터리 레이아웃
ansible-galaxy init role_name 명령어로 표준 롤 구조를 생성할 수 있습니다:
roles/
common/
tasks/
main.yml # 롤이 실행하는 주요 작업 엔트리포인트
handlers/
main.yml # notify로 트리거되는 핸들러 정의
templates/ # template 모듈에서 참조하는 Jinja2 템플릿 (.j2)
files/ # copy 모듈 등으로 전송되는 정적 파일 및 스크립트
vars/
main.yml # 해당 롤에 특화된 높은 우선순위 변수
defaults/
main.yml # 덮어쓰기 가능한 낮은 우선순위의 기본 변수
meta/
main.yml # 롤 의존성 및 작성자 메타데이터
플레이북에서 롤 사용하기
---
- name: Apply common and webserver roles
hosts: webservers
become: true
roles:
- role: common
- role: nginx
vars:
nginx_port: 8080
롤 내 변수 우선순위
defaults/main.yml에 정의된 변수는 Ansible에서 가장 낮은 우선순위를 가지므로 인벤토리나 플레이북에서 쉽게 재정의할 수 있습니다.
vars/main.yml에 정의된 변수는 높은 우선순위를 가지며 롤 내부 상수 로직에 사용됩니다.