Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 下载后如何执行脚本?_Shell_Chef Infra_Vagrant_Chef Recipe - Fatal编程技术网

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

下面的代码应该下载一个脚本,并在一个流浪客身上执行它。脚本已下载,但从未运行。有人知道如何确保下载后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
  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分钟内解决了这个问题。。。“流浪汉”成功了:)