'handlers/main.yml' 에는 해당 롤 작업에서 사용될 핸들러를 정의합니다. task/main.yml 의 'restart service' 'notify' 에 의해 호출됩니다.
---
# handlers file for my-role
- name: restart service
ansible.builtin.service:
name: "{{ service_name }}"
state: restarted
가변 변수 작성 ( defaults/main.yml )
'defaults/main.yml' 에는 외부로부터 재정의 될 수 있는 가변 변수를 정의합니다. 여기서는 serivce_title 을 외부에서 받아 수정할 수 있도록 합니다.
echo 'service_title: "Apache Web Server"' >> my-role/defaults/main.yml
불변 변수 작성 ( vars/main.yml )
'vars/main.yml' 에는 외부로부터 변수 값을 수정할 수 없는 변수를 정의합니다. 롤 내의 플레이북에서만 사용되는 변수로 정의하는 것이 좋습니다.
---
# vars file for my-role
service_name: apache2
src_file_path: ../files/index.html
dest_file_path: /var/www/html
httpd_packages:
- apache2
- apache2-doc
supported_distros:
- Ubuntu
1.3. 플레이북에 롤 추가
앤서블 롤을 실행하기 위해서는 롤을 호출해주는 플레이북이 필요합니다.
앤서블 롤을 추가하기 위한 2가지 방법
ansible.builtin.import_role 모듈 - 정적 롤 추가
ansible.builtin.include_role 모듈 - 동적 롤 추가
import_role 사용
---
- hosts: tnode1
tasks:
- name: Print start play
ansible.builtin.debug:
msg: "Let's start role play"
- name: Install Service by role
ansible.builtin.import_role:
name: my-role