繁体   English   中英

仅当Chocolatey安装软件包时才运行Chef Block

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM