我在确定是否安装软件包或已经使用厨师的巧克力package功能安装方面存在问题。几乎,我正在安装一个包装,该软件包之后需要IISRESET。我只希望在安装包装时重置IIS,而不希望随后执行厨师 - 客户(巧克力,因为已经安装了包装,巧克力将提早退出)。
我正在存储属性文件中安装了哪些软件包。它使用以下格式:
{'name'=>'blah', 'version'=>'1.0.0'[, 'should_notify'=>'reset iis']}
这是我到目前为止的代码。如何根据巧克力的表现(安装或?
)将其修改为分支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' }]
如果已经安装了巧克力,则不应安装包装。所以这应该很好:
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
,它将在厨师运行结束时重新启动IIS ,无论包装数量如何。如果您添加:immediately
,则在安装每个软件包后,您的IIS将重新启动。
如果已经安装了软件包,它不会重新启动II。