2016-07-22 15 views
0

Ich bin mit einem seltsamen Problem konfrontiert. Mein nachfolgendes Kochrezept schlägt fehl, wenn der Koch aus Benutzerdaten ausgeführt wird (cloud-init).composer.phar installieren Probleme (cloudinit vs Handbuch)

Es fragt nach HOME/COMPOSER_HOME env Variable.

Allerdings läuft es gut, wenn ich einen manuellen Chef-Client vom SSH-Terminal ausführen (oder sogar die Befehle direkt am Terminal ausführen).

PS: composer.phar und composer.json werden von Entwicklern (Gebündelte in Word zip)

== == Rezept Schnipsel bereitgestellt

# 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 

== Wenn von SSH-Terminal laufen ==

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

== Wolke-Init-Output.log sni PPET ==

================================================================================ 
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 

Antwort

1

hinzufügen environment HOME: '/root' auf Ihre script Ressource (oder ähnliches). Dies ist erforderlich, da Chef diese Variable nicht für Sie festlegt. Wenn Sie sich über SSH anmelden, wird dies von Ihrer Login-Shell festgelegt, die dann an den Chef-Client-Prozess vererbt wird.

+0

Lassen Sie mich es versuchen. Ich werde mit den Ergebnissen zurückkommen. Danke – charsidrogo

+0

Woot das hat funktioniert !!! '[2016-07-22T06: 14: 58-04: 00] INFO: Verarbeitung Skript [install_composer] aktion run (webps-commportal :: Wordleitung 49) [2016-07-22T06: 15: 25 -04: 00] INFO: script [install_composer] lief successfully' == Aktualisiert Koch Ressourcenblock == 'script "install_composer" do \t Interpreter "bash" \t Benutzer "root" \t Umwelt‚HOME '=> "/ root" \t cwd "# {node.apache.default_docroot}/html" \t code << - EOH \t/opt/rh/rh-php56/root/usr/bin/php --no-progress \t EOH \t not_if {File.Exists? ("# {Node.apache.default_docroot}/html composer.phar installieren /composer.lock ")} Ende' – charsidrogo

+0

Kommentare behalten Formatierung nicht bei, aber froh, dass es funktioniert hat :) – coderanger