Shell 下载后如何执行脚本?
下面的代码应该下载一个脚本,并在一个流浪客身上执行它。脚本已下载,但从未运行。有人知道如何确保下载后shell脚本的执行吗Shell 下载后如何执行脚本?,shell,chef-infra,vagrant,chef-recipe,Shell,Chef Infra,Vagrant,Chef Recipe,下面的代码应该下载一个脚本,并在一个流浪客身上执行它。脚本已下载,但从未运行。有人知道如何确保下载后shell脚本的执行吗 remote_file "/home/vagrant/conscript_setup.sh" do source "#{node.default['conscript']['url']}" notifies :run, "bash[install conscript]", :immediately end bash "install conscript" do
remote_file "/home/vagrant/conscript_setup.sh" do
source "#{node.default['conscript']['url']}"
notifies :run, "bash[install conscript]", :immediately
end
bash "install conscript" do
cwd "/home/vagrant"
code <<-EOH
cwd "/home/vagrant"
chown vagrant:vagrant conscript_setup.sh
chmod 777 conscript_setup.sh
conscript_setup.sh
EOH
end
remote_file”/home/vagrant/conscript_setup.sh“do
源“#{node.default['conscript']['url']}”
通知:立即运行“bash[install conscript]”
结束
bash“安装义务兵”吗
cwd“/家庭/流浪者”
代码运行脚本时,需要完整(绝对)路径,因为它不在shell的执行路径中
我有一个工作示例(类似),供您参考
temp=Chef::Config[:文件\u缓存\u路径]
远程文件“#{Chef::Config[:file_cache_path]}/screenfetch.sh”do
来源“https://raw.github.com/KittyKatt/screenFetch/master/screenfetch-dev"
模式00755
结束
bash“screenfetch”怎么办
代码/dev/null
EOF
结束
模式位在下载时设置。你可以相应地改变你的食谱
顺便说一句:您可以启用调试以查看更多信息
对于chef solo
=>chef solo-c solo.rb-j node.json-l debug
Vagrant+Chef Solo示例(使用Chef.arguments
)
config.vm.provision:chef_solo do|chef|
#流浪汉+厨师单独供应日志级别
#相当于VAGRANT_LOG=信息VAGRANT up
chef.arguments=“-l调试”
厨师长添加食谱“apt”
厨师长添加食谱“nginx”
结束
如果chef arguments
不起作用,只需VAGRANT\u LOG=debug VAGRANT up
是否可以添加代码以确认脚本已正确安装和建模?幸运的是,如果没有指向您的义务兵设置.sh
的显式路径,bash会尝试在$path
中搜索它(可能找不到它)。因此,尝试使用显式路径运行脚本,路径为/conscript\u setup.sh
.Omg,genius!我的朋友,谷歌之神已经祝福了今天。昨天我花了两个小时搜索/试图找出这个问题,但有了Chef令人费解的文档,我永远也找不到答案。(为什么他们有这么多的命令似乎可以做完全相同的事情,我永远都不会理解…[模板,脚本,bash,execute])。直到现在才发现远程文件。今天上班后5分钟内解决了这个问题。。。“流浪汉”成功了:)