【发布时间】:2014-06-30 18:13:21
【问题描述】:
这个问题最好用一个例子来描述:
有两个角色:
-
mailserver:一个基本的邮件服务器配置 -
mailinglist: 邮件列表申请
邮件列表软件需要邮件服务器将收到的邮件传输到邮件列表软件的“虚拟收件箱”。这需要对邮件服务器进行一些配置。但是邮件服务器不知道邮件列表角色,也不知道其他具有类似配置要求的角色。
我想做的是:
-
mailinglist(和其他类似角色)将传输配置存储在变量transport_config中。这可能是一个“传输图”,例如 $email => $spool。 -
mailinglist取决于mailserver角色。 -
mailserver使用变量transport_config配置它的“传输”。
有没有办法在 Ansible 中做这样的事情?或者这个问题的另一种解决方案? 不可能使用像{role: mailserver, transport_config: ...} 这样的角色变量,因为根据邮件服务器的不同,可能会有多个角色。
我能想到一个解决方法:邮件服务器读取/解析定义传输映射的配置目录。 mailinglist 和其他角色将文件添加到此目录。这里的问题是,这通常需要一个“配置构建器”来读取这些配置目录并生成主配置文件。
【问题讨论】:
-
您报告您不能使用
dotdee或assemble,因为它们无法组装线。你能给我们一个mailserver所需的配置语法示例吗? -
类似于
transport_config = file:/etc/mailserver/transport_foo, file:/etc/mailserver/transport_bar。 -
该语法是否允许续行?喜欢用`\`完成一行以继续下一行的内容?也许像这样,您可以使用
assemble将每个传输单独放在一行中并继续。
标签: ansible ansible-role