2014-02-05 2 views
3

У меня chefexecuteresource в моем recipe. Когда мои chef-client работает этот ресурс, я получаю ошибку:Ожидаемый процесс выхода с [0], но полученный ''

Expected process to exit with [0], but received '' 

Ресурс:

execute "startHAPROXY" do 
    command "cd /home/#{node["haproxyUser"]}/haproxy && ./start.sh" 
    action :nothing 
    end 

start.sh:

#!/bin/sh 
kill -9 `ps -ef | grep haproxy | grep -v grep | awk '{print $2}'` 
cd /home/lb/haproxy 
/home/lb/haproxy/haproxy -f /home/lb/haproxy/haproxy.cfg 
exit $? 

когда я запустить его вручную (./start.sh; echo $?) он вторит 0 но все же, когда chef-client запускает его, он терпит неудачу.

+0

Вы пытались добавить 'set -e'? – sethvargo

+0

В 'start.sh' или в команде запуска? Я не знаю, что 'set -e' делает/есть ... –

+0

Yea. Он сообщает сценарию, что он рано выходит из строя. – sethvargo

ответ

2

Попробуйте это:

рецепт:

execute "startHAPROXY" do 
    command "./start.sh" 
    cwd "/home/#{node["haproxyUser"]}/haproxy" 
    action :nothing 
end 

start.sh:

#!/bin/bash -e 
kill -9 `ps -ef | grep haproxy | grep -v grep | awk '{print $2}'` 
cd /home/lb/haproxy 
/home/lb/haproxy/haproxy -f /home/lb/haproxy/haproxy.cfg 
  1. Вы должны лучше использовать cwd атрибут execute ресурса для изменения рабочего каталога.
  2. Изменен скрипт для «bash» и добавлен «-e» для его отказа при первой ошибке, с которой он сталкивается.
  3. В конце вы не нуждаетесь в exit $?, так как статус выхода сценария автоматически будет состоять из статуса выхода последней команды.
+0

Работал отлично. Спасибо :) –

+1

Хорошо, понял, но ПОЧЕМУ? –

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