【发布时间】:2022-03-16 17:47:36
【问题描述】:
您能否分享一个示例厨师食谱来执行 .sh 文件?该文件被压缩在一个文件夹中,所以我需要在执行之前先提取它(再次使用配方)。尝试静默安装 .sh 文件时遇到问题。 “-q”没有被配方识别。我试图执行的命令是“sh .sh –q –varfile response.file” 我能够在 linux 上成功安装它,但不使用配方。请帮忙
【问题讨论】:
标签: chef-infra recipe
您能否分享一个示例厨师食谱来执行 .sh 文件?该文件被压缩在一个文件夹中,所以我需要在执行之前先提取它(再次使用配方)。尝试静默安装 .sh 文件时遇到问题。 “-q”没有被配方识别。我试图执行的命令是“sh .sh –q –varfile response.file” 我能够在 linux 上成功安装它,但不使用配方。请帮忙
【问题讨论】:
标签: chef-infra recipe
我假设您正在寻找类似 @987654321@ 和两个 execute 这样链接的资源(假设压缩文件在其根目录包含文件并且是 gzipped tar 类型,相应地更新命令):
execute "silent_install" do
command "/path/to/package/script.sh -q -varfile /path/to/package/response.file"
action :nothing
end
execute "unzip_package" do
command "/bin/tar -xzf /path/to/package.tgz -C /path/to/package"
action :nothing
notifies :run,'execute[silent_install]', :immediately
end
remote_file "/path/to/package.tgz" do
source "http://host/package-source.tgz"
notifies :run,'execute[unzip_package]', :immediately
end
然而这是ark资源更适合执行的操作,而且更不容易出错和脆弱。
具有相同假设的示例(保持静默安装程序的执行,最好包含在 Makefile 中,但我认为这超出了此答案的范围):
execute "silent_install" do
command "/path/to/package/script.sh -q -varfile /path/to/package/response.file"
action :nothing
end
ark 'mypackage' do
url 'http://remote.host/package.tar.gz'
path "/path/to"
action :put
notifies :run,'execute[silent_install]', :immediately
end
【讨论】:
unzip 而不是 tar,或者可能只是 gzip。我不建议在你的食谱中设置一个大文件,但如果这绝对是你想要的,你可以查看cookbook_file 资源(我让你自己在文档上搜索它)。但我真的建议您查看ark 食谱,它会为您管理文件类型 (tar/gzip/zip/bz2) 并允许更好地控制该过程。