빠른 참조

Ansible 롤 구조 및 설계 치트시트

Ansible 역할(Role) 디렉터리 레이아웃, 태스크, 핸들러, 변수, 기본값, 템플릿 및 메타 의존성에 대한 퀵 레퍼런스.

· 게시일

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에 정의된 변수는 높은 우선순위를 가지며 롤 내부 상수 로직에 사용됩니다.


참고 자료

관련 주제