木偶版:4.9.4hiera版本:3.3.1
我想要做的是在安装新版本的package-x / y时重新加载httpd,并且它似乎不会传递来自Hiera的数组……
该 yamllint 实用程序对于分析Puppet Hiera YAML文件非常有用。当我在你的文件上尝试它时,我得到了:
▶ yamllint spec/fixtures/hiera/data/common.yaml spec/fixtures/hiera/data/common.yaml 2:25 error syntax error: expected ',' or ']', but got '[' 2:39 error too few spaces after comma (commas)
那里的语法错误表明该文件只是无效的YAML。
但是如何解决呢?
令人困惑的是,Puppet中的一行显示如下:
subscribe => [Package['package-x'], Package['package-y']]
当编译成JSON Puppet目录时变为:
"subscribe": ["Package[package-x]", "Package[package-y]"]
您可以在YAML文件中放置相同的JSON字符串,以生成如下有效的YAML:
service::common::httpd::packages: ["Package[package-x]", "Package[package-y]"]
您也可以在YAML中使用单引号,即
service::common::httpd::packages: ['Package[package-x]', 'Package[package-y]']
有关如何在我的博客文章中编译Puppet目录的更多信息 这里 。
引号。
hiera不知道是什么 Package 是。只是引用它,因为它是一个字符串。
Package
service :: common :: httpd :: packages:[“Package ['package-x']”, “Package ['package-y']”]
工作得很好。
或者你可以改变 [ "Package['package-x']", "Package['package-y']" ] 至 [ 'package-x', 'package-y' ]
[ "Package['package-x']", "Package['package-y']" ]
[ 'package-x', 'package-y' ]
完美无瑕。见下文。
的 host01.yaml 强>
beats::packetbeat::packages: [ acl, htop ]
的 packetbeat.pp 强>
class beats::packetbeat ( $packages = undef ) { package { "packetbeat": ensure => "$version", subscribe => Package[$packages], ; } }
注意:/ Stage [main] / Beats :: Packetbeat / Package [acl] /确保: current_value'absent',应为'2.2.51-14.el7'(noop) 注意:/ Stage [main] / Beats :: Packetbeat / Package [packetbeat]:会有 从1个事件中触发'刷新' 注意:/ Stage [main] / Beats :: Packetbeat / Service [packetbeat]:会的 从2个事件中触发'刷新' 注意:类[Beats :: Packetbeat]:会触发'刷新' 3个事件
注意:/ Stage [main] / Beats :: Packetbeat / Package [acl] /确保: current_value'absent',应为'2.2.51-14.el7'(noop)
注意:/ Stage [main] / Beats :: Packetbeat / Package [packetbeat]:会有 从1个事件中触发'刷新'
注意:/ Stage [main] / Beats :: Packetbeat / Service [packetbeat]:会的 从2个事件中触发'刷新'
注意:类[Beats :: Packetbeat]:会触发'刷新' 3个事件