[英]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.