我目前正在将 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 模块编写配置文件声明,以便可以多次包含它们。
使用角色和配置文件结构:
阿帕奇简介:
网络应用角色:
网络服务器节点:
您还可以修改 Apache 角色以获取要创建的 mod 的参数:
应该注意的是,您还
default_mods
可以通过 Puppet 代码或通过 Hiera 使用 Apache 模块的参数:木偶
希拉
我现在在我的个人资料文件中使用以下代码:
这允许在没有“重复声明”错误的情况下进行多个包含。
但是我无法弄清楚如何使用 Hiera / yaml 文件来完成此操作。可能需要一些额外的代码来从 yaml 文件中读取参数,例如 hiera() 和 create_resource()。