2016-04-21 6 views
1
gefunden

Ich versuche, ein Skript nach auszuführen mit Vagrant + Puppet bereitstellen:Vagrant + Puppet: Skript nach deploy Befehl ausführen nicht

include nginx 
    $nginx_conf_path = "${files_path}/${fqdn}/etc/nginx/sites-available" 
    nginx::site { 'test.example.com.conf' : 
    source => "${nginx_conf_path}/test.example.com.conf", 
    } 

    exec { 'install-letsencrypt.sh test.example.com': 
    require => [Nginx::Site['test.example.com.conf'], Class['profile::ssl']], 
    command => 'install-letsencrypt.sh test.example.com', 
    path => '/home/vagrant/bin/' 
    } 

mit ssl.pp:

class profile::ssl { 

    file { "/home/vagrant/bin" : 
    ensure => "directory", 
    owner => "vagrant", 
    group => "vagrant", 
    } 

    file { "/home/vagrant/bin/install-letsencrypt.sh": 
    ensure => "present", 
    owner => "vagrant", 
    group => "vagrant", 
    mode => 700, 
    source => "puppet:///modules/example/shared/install-letsencrypt.sh" 
    } 
} 

Und install-letsencrypt.sh:

if [ ! -d "/opt/letsencrypt" ]; then 
    sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt 
fi 
# ...etc 

Die profile::ssl funktioniert, weil /home/vagrant/bin/install-letsencrypt.sh ist verfügbar, aber wenn ich zu exec es in Marionette versuchen, erhalte ich:

==> test.example.com: Error: Deploying Let's encrypt for test.mojjo.fr 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 11: sudo: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 14: mkdir: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 17: sudo: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 23: sudo: command not found 
==> test.example.com: /home/vagrant/bin/install-letsencrypt.sh: line 25: sudo: command not found 

Was mache ich falsch? Ich habe versucht mit absolut ausführbaren Pfaden (/usr/bin/sudo anstelle von sudo), aber es funktioniert auch nicht. Wenn ich es ssh test.example.com starte und es dort auch funktioniert, so ist das Problem nicht im Skript.

Vielen Dank im Voraus

Antwort

0

hatte ich das gleiche Problem ein Skript zu laufen, damit ich

tat
exec { 'run-script': 
    command => "bash -c 'install-letsencrypt.sh test.example.com'", 
    .... 
    } 
+0

Vielen Dank für Ihre Hilfe. Ich habe immer noch '/ bin/bash: install-letsencrypt.sh: Befehl nicht gefunden'. Ich habe versucht mit 'command =>"/bin/bash -c 'install-letsencrypt.sh test.mojjo.fr' "und mit' command => "bash -c 'install-letsencrypt.sh test.mojjo.fr' ", path => '/ bin'' ... –

+0

dann den vollständigen Pfad des Skripts'/home/vagrant/bin/install-letsencrypt.sh' eingeben und sicherstellen, dass vagrant das Skript 'user =>' vagrant ausführt '' –

+0

Der' user =>' vagrant' hat den Trick gemacht. Vielen Dank. Nicht sicher, dass '/ bin/bash' dann erforderlich ist ... –