Este post que va corto me sirve mas como una nota para un futuro. Lo hago publico porque puede ayudar a algunos con problemas de tiempo de
ejecución de comandos con puppet.
Primero aclaremos que es puppet y svn, Puppet es un sistema para
automatizar tareas, escalable y libre, permite simplificar la mayoría de
las tareas técnicas que los administradores de sistema hacemos
diariamente. Lo mejor de todo es que las clases, templates y demás
archivos de puppet pueden ser compartidos como cualquier otro código.
El segundo tema que quería aclarar era el de svn (Subversion) que es un
sistema de control de versiones el cual automatiza las tareas de
guardar, recuperar, registrar, identificar y manejar archivos. Muy útil
para archivos que son modificados frecuentemente.
El problema que tenia era con una clase de puppet muy similar a esta:
exec {
"templates-listo": path => "/bin:/usr/bin:/usr/sbin:/usr/local/bin",
command => "svn co --non-interactive http://svn.orvtech.com/cms/templates /var/www/cms/templates/",
onlyif => "/usr/bin/test -d /var/www/cms/",
unless => "/usr/bin/test -f /tmp/templates.chkout",
}
Esta clase se ejecuta sin problemas pero no hace el checkout completo
del repositorio, siempre quedan pendientes algunos directorios que no
son copiados.
La solución a este problema en mi caso fue el de agregar timeout => 0, y así permitirle a subversion que termine de hacer la
copia. La clase final queda muy parecida a:
exec {
"templates-listo": path => "/bin:/usr/bin:/usr/sbin:/usr/local/bin",
command => "svn co --non-interactive http://svn.orvtech.com/cms/templates /var/www/cms/templates/",
timeout => 0,
onlyif => "/usr/bin/test -d /var/www/cms/",
unless => "/usr/bin/test -f /tmp/templates.chkout",
}
El archivo /tmp/templates.chkout es creado por otra clase que verifica si el checkout se realizo sin problemas.