如何将 puppet-apache mod (v8.3.0) 与 hiera 一起使用?

如何将 puppet-apache mod (v8.3.0) 与 hiera 一起使用?

奎斯顿:使用角色和配置文件方法,是否可以'puppetlabs-apache', '8.3.0'与层次查找一起使用?

语境

  • 我正在使用mod 'puppetlabs-apache', '8.3.0'配置 apache 服务器。我有大量针对各种网站的 apache 重写规则。

  • 每个站点都配置了hiera,例如hiera.yaml:

     paths:
        - site/%{::site}.yaml
        - role/%{::role}.yaml
    
  • webapp.pp 角色的安装和配置apache

  • 以站点相关的方式查找 Apache 配置会很好,但找不到任何有帮助的文档


笔记

  • 我发现了类似的问题这里,但不要认为这涵盖了我的特定用例
  • 如果此模块的 hiera 不可用,我可以在 webapp.pp 中执行一些逻辑,例如如下操作:If ($facts['site'] == 'SITE-A') {outline rewrites for SITE-A}
  • 然而,这种方法感觉有点混乱

答案1

好吧,以防万一有人受益,解决方案非常简单,并显示了我的傀儡菜鸟状态。

解决方案

看看文档您会看到大多数数据类型都是数组,请看以下示例:

  apache::vhost { 'aliases.example.com':
      serveraliases => [
        'aliases.example.org',
        'aliases.example.net',
      ],
      port          => 80,
      docroot       => '/var/www/aliases',
    }

serveraliases是一个数组。因此,您可以简单地通过 hiera 查找数组:

        class profiles::apache::secure_vhost(
            # Hiera lookup
            Array $site_serveraliases    = lookup('apache_site_serveraliases') )
            {
            apache::vhost { 'aliases.example.com':
            serveraliases => $site_serveraliases,
            port          => 80,
            docroot       => '/var/www/aliases',
            }
           )

其中 $apache_site_serveraliases是一个 yaml 数组,因站点而异,例如:

apache_site_serveraliases:
  - paris.site.name
  - london.site.name
  - nyc.site.name

这样,您就可以以站点相关的方式查找 apache_site_serveraliases。

相关内容