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