我得到了实现hiera puppet脚本来管理Nginx的sites_enabled的任务.
这是我的傀儡剧本:
common.yaml
--- classes: - Nginx Nginx: enabled: abc.com xyz.com disabled: test.com test2.com
init.pp
class Nginx{ create_resources("site_enabled",hiera("Nginx"),{}) } define site_enabled($name){ file { '/etc/Nginx/sites_enabled/${name}': ensure => 'link',target => '/etc/Nginx/site_available/${name}',} }
但是当木偶执行时我得到了错误:
err: Could not retrieve catalog from remote server: Error 400 on
SERVER: can’t convert String into Integer at
/etc/puppet/modules/Nginx/manifests/init.pp:7 on node XX
当我试图通过命令行查询hiera时:
$hiera Nginx
{“enabled”=>[“abc.com”,“xyz.com”]}
我知道我错了一些地方.请你好好指正.
我不太了解,如何使用数组数据查询和处理.如果可能的话,请指出一些有用的文件.
非常感谢.
你的问题非常类似于
Problems creating Hiera hashes for create_resources,它有一个答案.我在这里提供一个回顾.
根据documentation for create_resources,哈希必须采用{title =>形式{parameters}}.您应该编辑hiera数据以设置参数.由于没有,我认为它可能看起来像这样:
common.yaml
--- classes: - Nginx Nginx::enabled: abc.com: {} xyz.com: {} Nginx::disabled: test.com: {} test2.com: {}
接下来,您需要实际从hiera加载正确的数据.你想加载Nginx :: enabled,而不是所有的Nginx
init.pp
class Nginx{ create_resources("site_enabled",hiera("Nginx::enabled")) } define site_enabled($name){ file { '/etc/Nginx/sites_enabled/${name}': ensure => 'link',} }