焦点-C在Chef中失败

时间:2018-05-17 20:20:55

标签: ruby chef chef-recipe

我正在尝试使用我的主厨配方中的代码解压缩tar文件:

execute "#{node['ffmpeg']['yasm']}.tar.gz" do
      command "tar -xzvf /tmp/#{node['ffmpeg']['yasm']}.tar.gz -C #{node['ffmpeg']['source_files']}"

但是下一个命令无法说明指定目录中没有这样的文件。这是怎么回事?我该怎么办?文件和目录存在 感谢

2 个答案:

答案 0 :(得分:1)

对于任何可能像我一样挣扎的人,我到达的解决方案是

bash "extract-yasm" do
  cwd path/to/destination
  code <<-EOH
  tar -xzvf /tmp/file-name.tar.gz
  EOH
end

感谢大家的帮助:)

答案 1 :(得分:0)

您需要确保/tmp/#{node['ffmpeg']['yasm']}.tar.gz存在且更改目录-C也存在。

execute之前你可以提出:

   directory node['ffmpeg']['source_files'] do
     recursive true
   end

如果缺少,则创建更改目录。

为了检查文件是否存在/tmp/#{node['ffmpeg']['yasm']}.tar.gz,您可以添加

  only_if { ::File.exist?("/tmp/#{node['ffmpeg']['yasm']}.tar.gz") }

执行资源。

在这种情况下,您的代码将受到错误的保护。

还有一件事 - 如果您只有在触发change directory资源时才需要创建execute,则需要使用notify resource