Ich versuche, vagrant zu verwenden, um eine dev-Umgebung einzurichten, die automatisch zwei Repositorys klont, wenn sie nicht bereits geklont wurden.Puppet Exec-Befehl läuft in der Shell, aber nicht über Marionette
Ich schrieb ein einfaches Skript, um die Repos zu klonen, nachdem es auf viele, viele Arten versagt hatte, um die Puppe dazu zu bringen, den Git-Befehl direkt auszuführen. Aus irgendeinem Grund dachte ich, diese Methode wäre narrensicher, aber es stellt sich heraus, dass ich ein besserer Idiot bin als ich dachte.
exec {"load-repos":
command =>"/bin/bash /vagrant/manifests/modules/scripts/clone_repos.sh",
require => Package["git-core"],
}
Hier ist das Skript:
#!/bin/bash
if [ ! -d /vagrant/repo-one-dest ]; then
git clone [email protected]:/repo-one.git /vagrant/repo-one-dest
fi
if [ ! -d /vagrant/repo-two-dest ]; then
git clone [email protected]:/repo-two.git /vagrant/repo-two-dest
fi
exit
Die privaten Schlüssel sind richtig eingerichtet. Wenn ich mich in der VM anmelden und bash clone_repos.sh
manuell ausführen, funktioniert alles. Egal, wie oft ich den Landstreicher neu lade und die Puppe ihre Sache machen lasse, die Repos werden niemals über die Exekutive geladen. Was vermisse ich?
Fehlender Platz beim ersten '[' Test. – ormaaj
Vielen Dank, dass Sie darauf hingewiesen haben. Unglücklicherweise, das ist ein Artefakt, das ich in den Post eingeführt habe, als ich das reale Verzeichnis durch 'repo-one-dest' ersetzt habe. Das Skript funktioniert ordnungsgemäß, wenn es über die Befehlszeile ausgeführt wird und über den Speicherplatz verfügt. Ich habe den Post bearbeitet, um den Syntaxfehler zu entfernen. – jeremiahs
Das Hinzufügen eines 'logoutput => true' zu Ihrem Exec-Block kann zu mehr Ausgaben führen, die beim Debuggen helfen können. Sie können auch eine Datei hinzufügen ["/ vagrant/manifests/modules/scripts/clone_repos.sh" ] Puppet versucht möglicherweise, das Skript auszuführen, bevor die Puppe es auf Ihre VM geschoben hat. – pwan