如何只有当我的jar文件在chef中更新时才能解开文件



在chef中,我想将tarball解压缩到特定的目录,但前提是我的"new.jar";该特定目录中的文件已更改其内容或名称。

我所面临的问题是;new.jar";文件,但是当我更新时;new.jar";在我的";文件";我的烹饪书的目录,以及我的厨师运行,jar文件不会更新,因为名称和文件大小是相同的,尽管它是一个更新的版本。如何解决此问题?

execute 'Untar' do
command "tar zxvf #{sweeper_install_dir}/test.tar.gz -C #{dir}"
not_if { ::File.exist?("#{dir}/new.jar") }
end

看起来像是对鸡和蛋的情况感到震惊。因此,我正确理解您的问题,您已经更新了test.tar.gz的版本,并且在chef之后没有更新,因为您的服务器中已经存在new.jar

解决方案是你必须做一些与略有不同的事情

  1. 首先,如果test.tar.gz文件是新文件,则必须下载该文件
  2. 如果下载了新文件,则解压缩到目的地

就是

remote_file "#{sweeper_install_dir}/test.tar.gz" do
source 'http://somesite.com/test.tar.gz'
action :create
notifies :run, 'execute[Untar]', :immediately
end
execute 'Untar' do
command "tar zxvf #{sweeper_install_dir}/test.tar.gz -C #{dir}"
action: nothing
end 

最新更新