簡體   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