Ya hacía que no hablaba de Puppet en el blog, así que ya tocaba. No se si os acordáis, ya hace bastante tiempo, escribí un post donde explicaba cómo emplear valores aleatorios en puppet, lo que resultaba especialmente útil para un manifiesto que use cron, ya que evitábamos que todas las máquinas tirasen del recurso programado al mismo tiempo.
Pues hoy vamos a ver algo más sobre cron aplicado desde Puppet. Este es el manifiesto de partida,
cron { "update mirror": command => "/usr/local/sbin/update_mirror", user => root, hour => 18, minute => 30, subscribe => File["/usr/local/sbin/update_mirror"], ensure => present; }
Como se puede observar vemos que a las 18:30 se ejecuta el tarea programada. Ahora imaginémonos por un momento que nos interesa que el trabajo se ejecute cada 10 minutos. Pues bien, para hacer eso, podíamos suprimir la línea de la hora y quedarnos con una línea de minutos tal que así,
cron{ ... minute => [2,15,25,35,45,55], ... }
Realmente esta opción es perfectamente viable, pero el resultado que produce no es muy bonito que digamos, a nivel de cron,
shell> crontab -e 5,15,25,35,45,55 * * * * /usr/local/sbin/update_mirror
Aunque esta solución es perfectamente válida, quizás no sea la más óptima, ya que si tenemos que ejecutarlo cada minuto, nos quedaría una línea "un poco grande". Así que para optimizarlo, podemos hacer algo tal que así:
cron{ ... minute => "*/10" ... }
Lo que produciría el siguiente resultado,
shell> crontab -e */5 * * * * /usr/local/sbin/update_mirror