[英]Run chef block only if chocolatey is installing package
我在确定是否已使用Chef的Chocolatey_package功能安装或已安装软件包时遇到问题。 差不多,我安装的软件包之后需要iisreset。 我只希望在安装软件包时重设iis,而不希望在后续执行Chef-client(因为已安装软件包的情况下,Chocolatey会较早退出)时重置iis。
我将哪些软件包安装在属性文件中。 它使用以下格式:
{'name'=>'blah', 'version'=>'1.0.0'[, 'should_notify'=>'reset iis']}
到目前为止,这是我在代码方面的了解。 如何根据Chocolatey执行的操作(安装或?
include_recipe 'chocolatey::default'
node['cookbook-name']['choco_packages'].each{ |package|
chocolatey package['name'] do
version package['version']
action :install
if package.instance_variable_defined?(:@should_notify) && package.should_notify == 'reset iis'
notify :run, 'execute[reset iis]', :immediately
end
end
}
execute 'reset iis' do
command 'iisreset'
action :nothing
end
谢谢
您的属性代码段不正确,为简单起见,我假设它应该是:
[{ 'name' => 'blah', 'version' => '1.0.0', 'should_notify' => 'restart_iis' }]
Chocolatey 不应该安装已安装的软件包。 所以这应该工作正常:
node['cookbook-name']['choco_packages'].each do |package|
chocolatey package['name'] do
version package['version']
notifies :run, "execute[#{package['should_notify']}]"
end
end
execute 'reset iis' do
command 'iisreset'
action :nothing
end
如果不使用:immediately
,它将:immediately
在chef运行结束时重新启动IIS ONCE ,而不考虑软件包的数量。 如果您:immediately
添加:immediately
,则将在每次安装软件包后重新启动IIS。
如果已经安装了软件包,它将不会重新启动IIS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.