我想在大厨食谱中解压缩一个文件,但我想确保在解压缩之前在该机器上安装解压缩包。如何在厨师中做到这一点?
我试过下面的食谱但是在安装了解压缩包的机器上它根本就不执行它。
bash 'extract' do
cwd '/home/norun/'
code <<-EOH
unzip wso2.zip
EOH
only_if { ::File.exists?('/home/norun/wso2.zip') }
not_if { ::File.exists?('/home/norun/wso2as-5.2.1') }
end
apt_package 'unzip' do
action :install
notifies :run , 'bash[extract]', :immediately
end
提前致谢
答案 0 :(得分:2)
只需更改订单,因为订单在Chef中很重要:
package 'unzip' do
action :install
# notifies :run , 'bash[extract]', :immediately
end
这将确保安装unzip
实用程序。顺便说一句,您可以使用package
资源,因为这会使您的代码更具可移植性。 Chef将自动选择合适的提供者。此外,我建议从package[unzip]
删除通知,因为如果已安装unzip
,则不会触发解压缩过程。
bash 'extract_wso2' do
cwd '/home/norun/'
code 'unzip wso2.zip'
only_if { ::File.exists?('/home/norun/wso2.zip') }
not_if { ::File.exists?('/home/norun/wso2as-5.2.1') }
end
您无需通知bash[extract_wso2]
资源,因为它由not_if
保护。
您可能还想使用ark食谱。
,而不是手动解压缩