Мой 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, буду очень признателен за небольшой сниппет, делающий решение более понятным.