我目前正在将 Puppet 与 Foreman 1.17 和 puppetlabs/apache 3.1.0 版一起使用。所有虚拟主机都使用 .yaml 文件定义:
apache::vhost:
vm12345_ssl:
servername: my.example.com
docroot: /home/my.example.com/web
logroot: /home/my.example.com/log
(... more configuration)
现在我还想通过 Hiera / yaml 文件指定所需的 Apache 模块。但我找不到任何文档或示例如何执行此操作。一个网站推荐apache::mod::proxy: true
;我尝试了这个以及它的变体,但无法让它工作。
我想要完成的事情:我正在使用 Puppet 角色和配置文件模式,并且我的 webapp 配置文件每个都包含以下行:
class profile::webapp::my_webapp_01 (
... some parameters
) {
include profile::java
include apache
apache::mod { 'proxy': }
apache::mod { 'proxy_ajp': }
apache::mod { 'proxy_http': }
... more webapp-specific configuration
我的节点看起来像:
node 'vm12345' {
...
include profile::webapp::my_webapp_01
include profile::webapp::my_webapp_02
include profile::webapp::my_webapp_03
}
当我在每个 VM 中只包含一个 webapp 时,一切都很好,但是一旦我在 VM 中包含几个 webapp,我就会收到“重复声明”错误。我认为解决这个问题的正确方法是使用 Hiera 来指定 Apache 模块,而不是显式地将它们定义到配置文件中。
请告知如何通过 Hiera 和 yaml 文件指定 Apache 模块,或者如果整个方法被破坏,请告知如何为 Apache 模块编写配置文件声明,以便可以多次包含它们。