运行 仅当 chocolatey 正在安装包时 chef 才会阻止
Run chef block only if chocolatey is installing package
我在使用 Chef 的 chocolatey_package 功能确定软件包是否已安装或已经安装时遇到问题。差不多,我正在安装一个需要 iisreset 的包。我只希望在安装包时重置 iis,而不是在后续执行 chef-client 时重置 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' }]
Chocolatey shouldn't install the package if it's installed already. 所以这应该没问题:
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
,它将在 chef 运行 结束时 ONCE 重新启动 IIS,而不管包的数量。如果您添加 :immediately
,您的 IIS 将在每次安装包后重新启动。
如果包已经安装,它不会重新启动 IIS。
我在使用 Chef 的 chocolatey_package 功能确定软件包是否已安装或已经安装时遇到问题。差不多,我正在安装一个需要 iisreset 的包。我只希望在安装包时重置 iis,而不是在后续执行 chef-client 时重置 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' }]
Chocolatey shouldn't install the package if it's installed already. 所以这应该没问题:
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
,它将在 chef 运行 结束时 ONCE 重新启动 IIS,而不管包的数量。如果您添加 :immediately
,您的 IIS 将在每次安装包后重新启动。
如果包已经安装,它不会重新启动 IIS。