Estoy tratando de usar vagabundo para configurar un entorno de desarrollo que clone automáticamente dos repositorios si aún no han sido clonados.El comando Puppet exec se ejecuta en shell, pero no a través de puppet
Escribí un script simple para clonar los repos, después de fallar en muchas, muchas maneras para hacer que puppet ejecutara el comando git directamente. Por alguna razón, pensé que este método sería infalible, pero resulta que soy un mejor tonto de lo que pensaba.
exec {"load-repos":
command =>"/bin/bash /vagrant/manifests/modules/scripts/clone_repos.sh",
require => Package["git-core"],
}
Aquí está la secuencia de comandos:
#!/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
Las claves privadas están configurados correctamente. Cuando inicio sesión en la vm y ejecuto manualmente bash clone_repos.sh
, todo funciona. No importa cuántas veces recargue vagabundo y deje que el títere haga lo suyo, los repos nunca se cargan a través del ejecutivo. ¿Qué me estoy perdiendo?
Falta espacio en el primer '[' test. – ormaaj
Gracias por señalar eso. Desafortunadamente, eso es un artefacto que introduje en la publicación cuando reemplacé el directorio real con 'repo-one-dest'. El script funciona correctamente cuando se ejecuta desde la línea de comando y tiene el espacio. Edité la publicación para eliminar el error de sintaxis. – jeremiahs
Agregar un 'logoutput => verdadero,' a su bloque Exec puede dar como resultado más salida que puede ayudar con la depuración. También es posible que desee agregar un archivo ["/ vagrant/manifiestos/modules/scripts/clone_repos.sh" ] a la sección requerida. Puppet puede estar intentando ejecutar el script antes de que Puppet lo haya enviado a tu VM. – pwan