2013-10-07 6 views
1

Приведенный ниже код должен загрузить скрипт и выполнить его на бродячего гостя. Сценарий загружается, но никогда не запускается. Кто-нибудь знает, как обеспечить выполнение сценария оболочки после загрузки?Как выполнить скрипт после загрузки?

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 
+0

можете ли вы добавить код для подтверждения того, что скрипт установлен и правильно закодирован? Удачи – shellter

+1

Без явного пути к вашему 'conscript_setup.sh' bash пытается найти его в' $ PATH' (где он, вероятно, не находит его). Таким образом, попробуйте запустить сценарий с явным путем как './Conscript_setup.sh'. –

ответ

2

Когда вы запускаете скрипт, вам нужен полный (абсолютный) путь, поскольку он не находится в пути выполнения вашей оболочки.

У меня есть рабочий пример (аналогично), для справки

temp=Chef::Config[:file_cache_path] 

remote_file "#{Chef::Config[:file_cache_path]}/screenfetch.sh" do 
    source "https://raw.github.com/KittyKatt/screenFetch/master/screenfetch-dev" 
    mode 00755 
end 

bash 'screenfetch' do 
    code <<-EOF 
    #{temp}/./screenfetch.sh > #{temp}/screenfetch.log 2>/dev/null 
    EOF 
end 

режим бит установлен во время загрузки. Вы можете изменить свой рецепт соответственно.

BTW: Вы можете включить отладку, чтобы получить подробную информацию

Для 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 + chef-solo provision log level 
    # equivalent to VAGRANT_LOG=info vagrant up 
    chef.arguments = "-l debug" 
    chef.add_recipe "apt" 
    chef.add_recipe "nginx" 
end 

Если chef-arguments не работает, просто VAGRANT_LOG=debug vagrant up

+0

Омг, гений! Боги Google благословили сегодня, мой друг. Вчера я потратил 2 часа на поиск/попытку понять это, но с недоумением документации шеф-повара я никогда не смог. (Почему у них так много команд, которые могут казаться точно такими же, я никогда не пойму ... [template, script, bash, execute]). До сих пор до сих пор не встречался файл remote_file. Решила это в течение 5 минут после прихода на работу сегодня ... «бродяга, предоставляющая оболочку шеф-повара» сделала трюк :) –

Смежные вопросы