ansible:在剧本末尾从多个角色触发相同的处理程序

ansible:在剧本末尾从多个角色触发相同的处理程序

我的 ansible playbook 包含多个角色,例如dovecotpostfix和。它们都需要 SSL 证书,这些证书由 (lets encrypt) 角色生成。出于这个原因,为了更容易处理,所有角色postgres都遵循相同的数据结构来定义具有不同要求的 SSL 证书:rspamdcertbot

certbot_domains: []

dovecot_domains: 
- name: imap1.example.com
  subject_alternative_names: []
- name: imap1.department-a.example.com
  subject_alternative_names: []
- name: pop3.example.com
  subject_alternative_names: []
- name: pop3.department-a.example.com
  subject_alternative_names: []

postfix_domains:
- name: smtp1.example.com
  subject_alternative_names:
  - smtp1.department-a.example.com

postgres_domains: 
- name: postgres.example.com
  subject_alternative_names: []

rspamd_domains:
- name: rspamd.example.com
  subject_alternative_names: 
  - rspamd.department-a.example.com

certbot但是,我想避免在角色dovecotpostfixpostgres中包含rspamd会自动创建证书的角色,因为每次都会安装nginx、每个域的 vhosts.conf 文件和一些代码片段来提供路径/.well-known/acme-challange作为别名。

为了避免每次都安装nginx、配置代码片段等,这些任务应该只运行一次。变量应由、和certbot_domains扩展,并且nginx 及其 vhosts 的安装应该是最后一项任务。也许下面的图可以更准确地描述这个问题。dovecot_domainspostfix_domainspostgres_domainsrspamd_domains

在此处输入图片描述

如果 ansible 中已经有了某些内容,我将非常感激能提供一个使解决方案更易于理解的小片段。

相关内容