0

나는 이상한 문제에 직면 해있다. 요리사가 사용자 데이터 (클라우드 초기화)에서 실행되면 내 다음 요리사 레서피가 실패합니다.composer.phar 설치 문제 (cloudinit vs manual)

HOME/COMPOSER_HOME 환경 변수를 묻습니다.

그러나 SSH 터미널에서 수동 요리사 클라이언트를 실행하거나 터미널에서 직접 명령을 실행하면 정상적으로 실행됩니다.

PS : SSH 단말기에서 실행할 때 composer.phar 및 composer.json는

== 레시피 발췌문 ==를 (ZIP 워드에 포함되어 있음) 개발자

# Install Composer 

script "install_composer" do 
    interpreter "bash" 
    user "root" 
    cwd "#{node.apache.default_docroot}/html" 
    code <<-EOH 
    /opt/rh/rh-php56/root/usr/bin/php composer.phar install 
    EOH 
    not_if {File.exists?("#{node.default_docroot}/html/composer.lock")} 
end 

== 제공되며 ==

* script[install_composer] action run 
    - execute "bash" "/tmp/chef-script20160722-5397-1sjwxg9" 

== 클라우드 초기화-Output.log SNI

================================================================================ 
Error executing action `run` on resource 'script[install_composer]' 
================================================================================ 

Mixlib::ShellOut::ShellCommandFailed 
------------------------------------ 
Expected process to exit with [0], but received '1' 
---- Begin output of "bash" "/tmp/chef-script20160722-2013-r6sdpo" ---- 
STDOUT: 
STDERR: [RuntimeException]                   
    The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly 
---- End output of "bash" "/tmp/chef-script20160722-2013-r6sdpo" ---- 
Ran "bash" "/tmp/chef-script20160722-2013-r6sdpo" returned 1 

Resource Declaration: 
--------------------- 
# In /var/chef/cache/cookbooks/webps-commportal/recipes/wordpress.rb 

49: script "install_composer" do 
50: interpreter "bash" 
51: user "root" 
52: cwd "#{node.apache.default_docroot}/html" 
53: code <<-EOH 
54: /opt/rh/rh-php56/root/usr/bin/php composer.phar install 
55: EOH 
56: not_if {File.exists?("#{node.apache.default_docroot}/html/composer.lock")} 
57: end 
58: 

Compiled Resource: 
------------------ 
# Declared in /var/chef/cache/cookbooks/webps-commportal/recipes/wordpress.rb:49:in `from_file' 

script("install_composer") do 
    action "run" 
    retries 0 
    retry_delay 2 
    guard_interpreter :default 
    command "\"bash\" \"/tmp/chef-script20160722-2013-r6sdpo\"" 
    backup 5 
    cwd "/opt/rh/httpd24/root/var/www/html" 
    returns 0 
    user "root" 
    code "\t/opt/rh/rh-php56/root/usr/bin/php composer.phar install\n" 
    interpreter "bash" 
    cookbook_name "webps-commportal" 
    recipe_name "wordpress" 
    not_if { #code block } 
end 

---- Begin output of "bash" "/tmp/chef-script20160722-2013-r6sdpo" ---- 
STDOUT: 
STDERR: [RuntimeException]                   
    The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly 
---- End output of "bash" "/tmp/chef-script20160722-2013-r6sdpo" ---- 
Ran "bash" "/tmp/chef-script20160722-2013-r6sdpo" returned 1 

답변

1

ppet의 ==는 script 자원 (또는 유사)에 environment HOME: '/root'를 추가합니다. Chef가이 변수를 설정하지 않았기 때문에 이것은 필요합니다. SSH를 통해 로그인하면 로그인 셸에서 설정 한 다음 chef-client 프로세스를 상속합니다.

+0

시도해 보겠습니다. 나는 결과로 돌아갈 것이다. 감사합니다 – charsidrogo

+0

Woot this worked !!! '[2016-07-22T06 : 14 : 58-04 : 00] INFO : 처리 스크립트 [install_composer] 작업 실행 (webps-commportal :: wordpress line 49) [2016-07-22T06 : 15 : 25] -04 : 00] INFO : 스크립트는 [install_composer] successfully' == 업데이트 요리사 자원 블록 ==를 '스크립트를 실행 할 \t 인터프리터 "bash는" \t 사용자 "루트" \t 환경 'HOME "install_composer" '=> "/ root" \t cwd "# {node.apache.default_docroot}/html" \t 코드 << EOH,\t/옵션/RH/RH-php56/루트는/usr/빈/PHP는 --no-진행 {File.exists not_if \t EOH \t를 설치 composer.phar? ("# {node.apache.default_docroot}/HTML /composer.lock ")} end' – charsidrogo

+0

주석은 서식을 유지하지 않지만 작동하게되어 기쁘다. :) – coderanger