Подключение файла переменных и знакомство с pre_tasks и handlers
Чтобы сделать наш playbook более эффективным и удобочитаемым, давайте создадим файл с именем playbook.yml, и скажем Ansible загружать переменные из отдельного файла - vars.yml.
---
- hosts: all
vars_files:
- vars.yml
Использование одного или нескольких подключаемых файлов переменных очищает основной playbook и позволяет упорядочить все настраиваемые переменные в одном месте. В данный момент у нас нет переменных, которые нужно добавить; Мы определим содержимое vars.yml позже.
Добавьте в playbook.yml, pre_tasks:
pre_tasks:
- name: Update apt cache if needed.
apt: update_cache=yes cache_valid_time=3600
Ansible позволяет запускать задачи до или после основного набора задач с помощью pre_tasks и post_tasks. В этом случае мы должны убедиться, что наш apt cache обновится до того, как мы пройдем оставшуюся часть playbook. Мы используем модуль apt и сообщаем, что нужно обновить кэш, если с момента последнего обновления прошло 3600сек. (1 час).
Мы добавим еще один новый раздел к нашму playbook - handlers:
handlers:
- name: restart apache
service: name=apache2 state=restarted
handlers — базовая система событий, которая может использоваться для реагирования на изменения. Эти действия - notify запускаются в конце каждого блока задач в инструкции и будут запущены только один раз, даже если к ним обратятся несколько разных задач. Например, несколько ресурсов могут указывать на необходимость перезапуска Apache, поскольку они изменили файл конфигурации, но Apache будет перезапущен только один раз, чтобы избежать ненужного перезапуска.