Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 如何确保chef脚本块不会';Don’不要每次都跑步_Chef Infra - Fatal编程技术网

Chef infra 如何确保chef脚本块不会';Don’不要每次都跑步

Chef infra 如何确保chef脚本块不会';Don’不要每次都跑步,chef-infra,Chef Infra,对厨师来说是全新的。。。我们曾经从ppa repo安装elasticsearch,但现在我想在每次更改attributes/default.rb中的版本号时从头开始构建它(repo不再更新) 现在,我有一个bash块,它只是拉下gz文件,解压它并将它链接到正确的位置,但我不知道如何使它不会每次运行chef solo时都运行 有什么建议吗?我创建了一个包含版本的文本文件。逻辑很简单 如果文件不存在:解压缩 如果文件存在且版本(用IO.read(filename)检查)不同:解压缩 如果文件存在且

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

现在,我有一个bash块,它只是拉下gz文件,解压它并将它链接到正确的位置,但我不知道如何使它不会每次运行chef solo时都运行


有什么建议吗?

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

  • 如果文件不存在:解压缩
  • 如果文件存在且版本(用
    IO.read(filename)
    检查)不同:解压缩
  • 如果文件存在且版本相同:不执行任何操作
默认情况下,创建文件的资源具有
操作:nothing
,并通过解压得到通知。这样不仅解压不会运行,如果版本是相同的,而且版本文件也将保持不变

用于说明逻辑的伪代码:

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