只有在巧克力安装包装时才能运行厨师块



我在确定是否安装软件包或已经使用厨师的巧克力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。

最新更新