Sto tentando di utilizzare vagrant per configurare un ambiente dev che clona automaticamente due repository se non sono già stati clonati.Il comando puppet exec viene eseguito nella shell, ma non tramite puppet
Ho scritto un semplice script per clonare i repository, dopo aver fallito in molti, molti modi per ottenere puppet per eseguire direttamente il comando git. Per qualche ragione ho pensato che questo metodo sarebbe infallibile, ma risulta che sono un pazzo migliore di quanto pensassi.
exec {"load-repos":
command =>"/bin/bash /vagrant/manifests/modules/scripts/clone_repos.sh",
require => Package["git-core"],
}
Ecco lo script:
#!/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
Le chiavi private sono impostati correttamente. Quando accedo a vm ed eseguo manualmente bash clone_repos.sh
, tutto funziona. Non importa quante volte ricarico vagabondo e lasci che puppet faccia la sua cosa, i repository non vengono mai caricati tramite exec. Cosa mi manca?
Spazio mancante sul primo '[' test. – ormaaj
Grazie per averlo indicato. Unfortunatley, questo è un artefatto che ho introdotto nel post quando ho sostituito la directory reale con 'repo-one-dest'. Lo script funziona correttamente quando viene eseguito dalla riga di comando e ha lo spazio. Ho modificato il post per rimuovere l'errore di sintassi. – jeremiahs
L'aggiunta di un 'logoutput => true,' al tuo blocco Exec può comportare più output che possono aiutare con il debug Puoi anche aggiungere un file ["/ vagrant/manifests/modules/scripts/clone_repos.sh" Alla sezione richiesta, Puppet potrebbe tentare di eseguire la sceneggiatura prima che puppet la spinga alla tua VM. – pwan