我有一个现有的puppet清单,它安装了一堆php5软件包,并且只有在安装后才重新启动apache。简化的清单就像
package { 'apache-php':
name => $modules,
ensure => installed
}
exec {'enable-mod-php':
command => $enable_cmd,
refreshonly => true
}
Package['apache-php'] ~> Exec['enable-mod-php'] ~> Service['apache']
系统升级目录运行开始失败后出现以下错误消息:
错误:无法应用目录:包[apache-php]上的参数名称失败:名称必须是/etc/puppet/modules/apache/manifests/php.pp:22中的字符串而不是数组
我发现我使用的是未记录的功能/错误:Puppet 3.4.0 name as an array in package。
但是,我很难在升级后找到重做设置的方法。如何重写此清单以便它适用于更新的木偶版本?
答案 0 :(得分:6)
而不是在示例中使用包定义的任意标题。 (例如。apache-php
)并使用name
参数,您可以执行以下操作:
$modules = ['foo','bar','baz']
package { $modules:
ensure => present
notify => Exec['enable-mod-php']
}
exec {'enable-mod-php':
command => $enable_cmd,
refreshonly => true,
notify => Service['apache']
}
service { 'apache':
# your apache params
}
我没有查看包提供程序的代码,但可以验证上面的工作原理。您还应该注意,链接箭头一切都很好,但根据Puppet style guide,metaparameters
是首选。
希望这有帮助。