Skip to main content

Ansible Role을 사용해서 task 모듈화하기


Role

Directory structure

roles/
├── <category>
│ └── <role>
├── <role>
│ ├── defaults/
│ │ └── main.yaml
│ ├── files/
│ ├── handlers/
│ │ └── main.yaml
│ ├── meta
│ │ ├── argument_specs.yaml
│ │ └── main.yaml
│ ├── tasks/
│ │ └── main.yaml
│ ├── templates/
│ │ ├── <template>.j2
│ │ └── ...
│ ├── vars/
│ │ └── main.yaml
│ └── ...
└── ...
  • defaults/main.yaml
    • 우선순위가 상대적으로 낮은 설정 값입니다
    • 변수 관리
  • vars/main.yaml
    • 우선순위가 상대적으로 높은 설정 값입니다.
    • 변수 관리

role 사용하기

role 경로 설정

  • roles/ 디렉토리를 확인합니다.
  • ansible.cfgdefault.roles_path: <path>[:<path>] 경로를 확인합니다.
    • ~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles이 기본 경로입니다.

role 호출

- roles:
- role: <role> # or <category>/<role>
vars:
<var>: <value>
tags:
- <tag>
when: <condition>
- tasks:
- ansible.builtin.include_role:
name: <role> # or <category>/<role>
vars:
<var>: <value>
<var>: {{ loop_item }}
loop:
- <item1>
- <item2>
loop_control:
loop_var: loop_item
- tasks:
- ansible.builtin.import_role:
name: <role> # or <category>/<role>