Borrando reportes

19 views
Skip to first unread message

Pablo LUNIX

unread,
May 7, 2014, 5:02:07 AM5/7/14
to pupp...@googlegroups.com
Hola comunidad!!

Estamos investigando la instrucción tidy de puppet para borrar los ficheros de los reportes antiguos. Tras algunos fallos hemos resuelto este código que funciona perfectamente:

class old_remove {
        case $hostname {
            /^puppet$/: {
                tidy { 'puppet::reports':
                     path => '/var/lib/puppet/reports',
                     matches => '*',
                     age => '1w',
                     backup => false,
                     recurse => true,
                     rmdirs => false,
                     type => 'mtime',
         }
         # notify { "debug: tidy command should run now": }
    }
}
}

De este modo hemos conseguido liberar alrededor de 1GB de memoria de reportes antiguos, cuya información ya era accesible desde el Dashboard.

La cosa es que queremos forzar la ejecución de esto a las 6:00 UTC. He buscado en el facter, pero no hay ningún fact con esta info.

¿Puedo parametrizar una variable en puppet con la salida de un comando de linux que se ejecute en el propio server?


Gracias.

Pablo LUNIX

unread,
May 7, 2014, 8:41:40 AM5/7/14
to pupp...@googlegroups.com

Hola comunidad!! Dejo aquí esta solución para que la evaluéis:

Al final lo hice con un custom fact distribuido desde el propio módulo. Esto funciona bastante bien.

Veamos la estructura de directorios

# ls /etc/puppet/modules/old_remove/
files  lib  manifests  templates

Editamos un archivito con extensión rb:

# nano /etc/puppet/modules/old_remove/lib/facter/hora.rb

Nos interesa la hora utc:

Facter.add("hora") do
      setcode do
            Facter::Util::Resolution.exec('/bin/date -u +%r
')
      end
end

Ya con esto sólo se distribuye el fact por los /var/lib/puppet/lib/facter/ de los clientes. Con eso ya podremos usar en el init.pp de nuestro módulo la variable:
class old_remove {

if $hora > '06:00:00 AM' and $hora < '06:10:00 AM' {

        case $hostname {
            /^puppet$/: {
                tidy { 'puppet::reports':
                     path => '/var/lib/puppet/reports',
                     matches => '*',
                     age => '1w',
                     backup => false,
                     recurse => true,
                     rmdirs => false,
                     type => 'mtime',
         }
         # notify { "debug: tidy command should run now": }
    }
}
}
}

¡¡ojo!! Si dejamos rmdir false borrará todo directorio cuya fecha sea anterior, sin preguntar por las fechas de los ficheros interiores. También dejé type en 'mtime' en vez de 'ctime' porque me parecía más fácil controlar su ejecución con un 'ls -la' .

A ver que os parece.



Reply all
Reply to author
Forward
0 new messages