la propiedad timeout en puppet

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.