Расширение нашей роли
Теперь, когда у нас есть базовая структура роли, давайте расширим ее, чтобы включить больше компонентов типичной роли Ansible (Ansible role). Мы добавим переменные, обработчик (handler) и шаблон (template).
Сначала добавим переменную по умолчанию. Создайте файл main.yml
в каталоге defaults
:
nano defaults/main.yml
Добавьте следующее содержимое:
---
example_variable: "This is a default value"
Это устанавливает значение по умолчанию для example_variable
, которое можно переопределить при использовании роли.
Далее создадим обработчик (handler). Создайте файл main.yml
в каталоге handlers
:
nano handlers/main.yml
Добавьте следующее содержимое:
---
- name: Restart example service
debug:
msg: "This would restart a service in a real scenario"
В реальной ситуации этот обработчик (handler) мог бы перезапустить службу, но в этом примере мы просто выводим сообщение.
Теперь создадим шаблон (template). Создайте файл с именем example_template.j2
в каталоге templates
:
nano templates/example_template.j2
Добавьте следующее содержимое:
This is an example template.
The value of example_variable is: {{ example_variable }}
Этот шаблон (template) использует синтаксис Jinja2 для включения значения нашей переменной example_variable
.
Наконец, обновим файл tasks/main.yml
, чтобы использовать эти новые компоненты:
nano tasks/main.yml
Замените существующее содержимое на:
---
- name: Print a message
debug:
msg: "This is a task from our example role!"
- name: Use our variable
debug:
msg: "The value of example_variable is: {{ example_variable }}"
- name: Create a file from our template
template:
src: example_template.j2
dest: /tmp/example_file.txt
notify: Restart example service
Этот обновленный список задач теперь использует нашу переменную, создает файл из нашего шаблона (template) и уведомляет наш обработчик (handler).