最好用一个例子来描述这个问题:
有两个角色:
mailserver
: 一个基本的邮件服务器配置mailinglist
: 邮寄名单申请
邮件列表软件需要邮件服务器将收到的邮件传输到邮件列表软件的“虚拟收件箱”。这需要对邮件服务器进行一些配置。但是邮件服务器不知道邮件列表角色,也不知道其他具有类似配置要求的角色。
我想做的是:
mailinglist
(和其他类似角色)将传输配置存储在变量transport_config
中。这可能是一个“传输图”,例如 $email => $spool。mailinglist
取决于mailserver
角色。mailserver
使用变量配置它的“传输”transport_config
。
有没有办法在 Ansible 中做这样的事情?或者这个问题的另一种解决方案?不能使用角色变量,如,因为根据邮件服务器的{role: mailserver, transport_config: ...}
不同,可能有多个角色。
我能想到的是一种解决方法:邮件服务器读取/解析定义传输映射的配置目录。mailinglist
和其他角色将文件添加到此目录。这里的问题是,这通常需要一个“配置构建器”来读取这些配置目录并生成主配置文件。