Рейтинг:0

ansible: запустить один и тот же обработчик из нескольких ролей в конце playbook

флаг in

Мой ansible playbook включает в себя несколько ролей, например голубятня, постфикс, постгрес и rspamd. Все они требуют SSL-сертификатов, которые генерируются certbot (позволяет зашифровать) роль. По этой причине и для упрощения обработки все роли используют одну и ту же структуру данных для определения SSL-сертификатов с различными требованиями:

certbot_domains: []

dovecot_domains: 
- имя: imap1.example.com
  subject_alternative_names: []
- имя: imap1.department-a.example.com
  subject_alternative_names: []
- имя: pop3.example.com
  subject_alternative_names: []
- имя: pop3.department-a.example.com
  subject_alternative_names: []

postfix_domains:
- имя: smtp1.example.com
  subject_alternative_names:
  - smtp1.department-a.example.com

postgres_domains: 
- имя: postgres.example.com
  subject_alternative_names: []

rspamd_domains:
- имя: rspamd.example.com
  subject_alternative_names: 
  - rspamd.department-a.example.com

Однако я хочу избежать включения роли certbot в ролях голубятня, постфикс, постгрес и rspamd который автоматически создает сертификат, потому что каждый раз будет устанавливаться нгинкс, файлы vhosts.conf для каждого домена и некоторые фрагменты для указания пути /.хорошо известный/акме-вызов как псевдоним.

Чтобы каждый раз не устанавливать нгинкс, настроить сниппеты и т. д. — задачи должны выполняться только один раз. Переменная certbot_domains продлевается на dovecot_domains, postfix_domains, postgres_domains и rspamd_domains и установка nginx и их vhosts должна быть последней задачей. Возможно, следующий рисунок может более точно описать проблему.

введите описание изображения здесь

Если уже есть что-то от ansible, буду очень признателен за небольшой сниппет, делающий решение более понятным.

Zeitounator avatar
флаг fr
Прочитав ваш вопрос несколько раз за последние дни, мне очень неясно, хотите ли вы запускать определенный обработчик после всех задач или просто убедитесь, что вы не запускаете одну и ту же роль дважды, или . Мой 2cent: создайте [MCVE](/help/mcve), чтобы проиллюстрировать вашу конкретную проблему.
Volker Raschek avatar
флаг in
Привет @Zeitounator, я более подробно описал проблему. надеюсь теперь более понятно
Zeitounator avatar
флаг fr
где именно вы определяете домены certbot (в инвентаре, в вашей книге игр ...?) и как именно и для каких задач роли «не certbot» используют эту информацию?
Volker Raschek avatar
флаг in
Переменная `certbot_domains` определена в `roles/certbot/default/main.yaml`. Для ролей «не-certbot», если они похожи, например, на настройку пользователей unix или обновление системных ролей, переменная `certbot_domain` не требуется.
Zeitounator avatar
флаг fr
Ну тогда я действительно не понимаю, в чем проблема. Эти роли полностью независимы. Просто запускайте их в том порядке, в котором вам нравится.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.