2

对厨师来说是全新的......我们曾经从 ppa repo 安装 elasticsearch,但现在我想从头开始构建它(repo 不再更新),每次我更改属性/default.rb 中的版本号时

现在我有一个 bash 块,它只是拉下 gz 文件,解压缩并将其链接到正确的位置,但我不知道如何制作它,这样它就不会在我每次运行 chef-solo 时运行。

有什么建议么?

4

1 回答 1

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
于 2013-02-01T22:53:43.410 回答