Я столкнулся с проблемой, что мне нужно определить набор похожих обработчиков в ansible
, которые отличаются только по имени.
Позвольте привести пример. Вот некоторые задачи :
# tasks/main.yml
- name: Install config of OpenVPN instance 1
notify: restart openvpn-1
...
- name: Install config of OpenVPN instance 2
notify: restart openvpn-2
...
# Multiple more of that pattern.
Вы можете подумать, что каждый экземпляр имеет немного отличную конфигурацию, которую можно здесь обработать.
Хорошо. Преклоните обработчики :
# handlers/main.yml
- name: restart openvpn-1
systemd:
name: openvpn-server@instance1
state: restarted
- name: restart openvpn-2
systemd:
name: openvpn-server@instance2
state: restarted
# ...
Вы видите, что это довольно дублированный код (не очень хорошо).
Я думал о том, чтобы сделать что-то вроде:
# Handler template or so
- name: restart-openvpn-{{ item }}
systemd:
name: openvpn-server@instance{{ item }}
state: restarted
loop:
- "1"
- "2"
# ...
Это не работает, я попробовал.
Я нашел этот пост , но здесь он работает не так идеально, так как предполагает выполнение задачи в loop
. Вместо этого у меня есть набор отдельных задач, которые запускают отдельные экземпляры обработчиков. Также это уже в роли.
Итак, короткий вопрос: как я могу создать шаблон обработчика, чтобы избежать избыточности кода?