El command ejecutor de Puppet se ejecuta en shell, pero no a través de marionetas

Intento usar vagrant para configurar un entorno de desarrollo que clone automáticamente dos repositorys si aún no han sido clonados.

Escribí un script simple para clonar los repos, después de fallar en muchas, muchas maneras para hacer que Puppet ejecutara el command 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á el guión:

 #!/bin/bash if [ ! -d /vagrant/repo-one-dest ]; then git clone git@example.com:/repo-one.git /vagrant/repo-one-dest fi if [ ! -d /vagrant/repo-two-dest ]; then git clone git@example.com:/repo-two.git /vagrant/repo-two-dest fi exit 

Las keys privadas están configuradas correctamente. Cuando inicio session en la vm y ejecuto bash clone_repos.sh manualmente, todo funciona. No importa cuántas veces recargue vagrant y deje que el títere haga lo suyo, los repos nunca se cargan a través del ejecutivo. ¿Qué me estoy perdiendo?

Probablemente esto se deba a que cuando vagrant ssh , usualmente estás iniciando session como el usuario vagrant (de manera pnetworkingeterminada, aunque esto ciertamente puede modificarse a través de la configuration). El usuario vagrant supongo que tiene las teclas configuradas correctamente.

Sin embargo, cuando Vagrant ejecuta su aprovisionador (Puppet, en este caso), hace un sudo , por lo que se ejecuta como el usuario raíz.

La forma en que generalmente recomiendo configurar las keys para realizar la implementación es colocar las keys en algún lugar, y luego usar un contenedor GIT_SSH para clonarlo adecuadamente, o para usar agentes SSH.