如何确保每次运行chef-solo时都不会运行厨师脚本块

时间:2013-02-01 20:13:59

标签: chef

对厨师来说很新...我们曾经从ppa repo安装elasticsearch但现在我想从头开始构建它(repo不再更新)每次我更改我的属性/默认值中的版本号.RB

现在我有一个bash块,只需拉下gz文件,解压缩并将其链接到正确的位置,但我不知道如何制作它以便每次运行大厨时它都不会运行 - 独奏。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我创建了一个内部版本的文本文件。逻辑很简单。

  • 如果文件不存在:解压缩。
  • 如果文件存在且版本(使用IO.read(filename)检查)不同:解压缩。
  • 如果文件存在且版本相同:什么都不做。

默认情况下,创建文件的资源为action :nothing,并通过解压缩通知。这样,如果版本相同,不仅unzip也不会运行,但版本文件也不会受到影响。

用于说明逻辑的伪代码:

unzip "resource_name" do
  not_if { ::File.exists?( filename ) and node[:version]==IO.read( filename ).strip }
  notifies :create, "file[#{filename}]"
end

file filename do
  action :nothing
  content node[:version]
end