奎斯顿:使用角色和配置文件方法,是否可以'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。