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
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'' ... –
dann den vollständigen Pfad des Skripts'/home/vagrant/bin/install-letsencrypt.sh' eingeben und sicherstellen, dass vagrant das Skript 'user =>' vagrant ausführt '' –
Der' user =>' vagrant' hat den Trick gemacht. Vielen Dank. Nicht sicher, dass '/ bin/bash' dann erforderlich ist ... –