我有一个 Puppet 脚本,可以根据if/else
块在不同环境中以不同方式处理事情。但是我在底部有一堆适用于所有环境的通用文件资源块。目前,那些块notify => Service['my-service']
,但对于生产,我希望它不通知。我只希望它更新文件,而不是启动或停止任何服务。
我最初的想法是,我可以将服务存储到一个变量中并在每个部分中设置它吗?
例子:
if ($env == 'dev') {
$myService = Service['my-service']
} elsif ($env == 'prod') {
$myService = Service['dummy-service']
}
file { "myfile.xml":
ensure => file,
content =>
template("mytemplate.erb"),
require => Package['my-service'],
notify => $myService
}
我不确定这是否有效,但如果有效,我可以将什么用于虚拟服务?
是的,这是可能的,并且您的代码非常接近正确的解决方案:
但是,由于您的请求是在特定环境中根本不通知,因此更好的方法是这样做而不是通知虚拟服务:
这些被称为链接箭头:https ://puppet.com/docs/puppet/7/lang_relationships.html#lang_rel_chaining_arrows