[Ansible] 역할(roles)

728x90

역할

공식 문서: https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#playbooks-reuse-roles

역할 생성 → 통합 → 플레이북

통일화 된 구조

역할은 roles 디렉토리를 사용한다.

ansible-galaxy init common --init-path roles 명령어로 역할 디렉토리 구조를 생성한다.

[vagrant@controller 10_role]$ mkdir roles
[vagrant@controller 10_role]$ ansible-galaxy init common --init-path roles
- Role common was created successfully
[vagrant@controller 10_role]$ tree
.
└── roles
    └── common
        ├── defaults
        │   └── main.yml
        ├── files
        ├── handlers
        │   └── main.yml
        ├── meta
        │   └── main.yml
        ├── README.md
        ├── tasks
        │   └── main.yml
        ├── templates
        ├── tests
        │   ├── inventory
        │   └── test.yml
        └── vars
            └── main.yml

10 directories, 8 files

roles/common: 역할의 이름. 즉, common 자체가 역할의 이름이다.

roles/tasks/main.yml : 작업이 위치한다.

roles/handlers/main.yml: 핸들러 작업이 위치한다.

roles/tests/inventory: 역할을 테스트하기 위한 인벤토리, 단위 테스트하기 위한 인벤토리

roles/tests/test.yml: 역할을 테스트하기 위한 플레이북, 단위 테스트하기 위한 플레이북

roles/defaults/main.yml: 기본 역할 변수(우선순위가 매우 낮다.)

roles/vars/main.yml: 역할 변수(우선순위가 매우 높다.)

roles/files/: 파일 관련 모듈의 src: 파라미터에서 참조하는 파일의 위치

src 에 정의된 a.txt 파일을 자동으로 roles/files/a.txt 에서 찾는다.

- copy:
		src: a.txt

roles/templates/: 템플릿 모듈의 src: 파라미터에서 참조하는 파일의 위치

src 에 정의된 a.j2 파일을 자동으로 roles/templates/a.j2 에서 찾는다.

- templates:
		src: a.j2

roles/meta/main.yml: 역할을 설명하고 있는 파일

  • 역할의 버전
  • 역할의 이름
  • 역할을 만든 사람
  • 역할이 적용되는 플랫폼(리눅스 배포판)
  • 역할의 의존성을 정의

플레이에서 작업 실행 순서

# Play
- hosts:       # 관리 노드
 
  pre_tasks:   # 관리 노드에서 실행할 작업

  tasks:       # 관리 노드에서 실행할 작업

  roles:       # 역할 별로 정의한 작업을 실행
    
  post_tasks:  # 관리 노드에서 실행할 작업

pre_tasks → tasks → roles → post_tasks 순으로 실행된다.

핸들러까지 포함한 정확한 실행 순서는 다음과 같다.

  1. pre_tasks
  2. pre_tasks 의 handlers
  3. roles
  4. roles 의 handlers
  5. post_tasks
  6. post_tasks 의 handlers

ansible-galaxy

공식 문서: https://galaxy.ansible.com/

  • 역할
  • 컬렉션: 역할 + 3rd Party 모듈
  • 번들: RedHat OpenShift

역할 목록 확인

ansible-galaxy list

역할 찾기

ansible-galaxy search 역할이름

역할 정보 확인

ansible-galaxy info geerlingguy.elasticsearch

역할 다운로드

ansible-galaxy install geerlingguy.elasticsearch

역할 삭제하기

ansible-galaxy remove geerlingguy.elasticsearch

728x90