Mostrando entradas con la etiqueta resource. Mostrar todas las entradas
Mostrando entradas con la etiqueta resource. Mostrar todas las entradas

viernes, 7 de junio de 2019

recurso puppet crontab

Mediante puppet podemos añadir y eliminar tareas en el crontab.

Este es el manifest que utilizo en el centro.

Como se puede ver mandamos que se apaguen los equipos (si estuvieran encendidos)  a las 15:35 y 23:50.

En la bios tengo configurado que si hay un corte de corriente, cuando vuelvan se enciendan. Si pusiera que se apagaran, no se encenderían por wakeonlan y habría que encenderlos a mano.

Por lo tanto si hay un corte de corriente por la noche o en fin de semana se encenderían. Por eso pongo un cron que si está encendido por la noche o en fin de semana se apague (se comprueba cada 5 minutos). Esto se ejecuta en todos los equipos menos en los del equipo directivo, que si es posible que vengan en esos intervalos. Para ello sustituyo en el case, caso_particular por el nombre o nombres del equipo.


class mp-apagado-maquinas {

        #Apagado de máquinas por la mediodía.
        cron { apagado-mediodia:
                command => "/sbin/poweroff",
                user => root,
                hour => 15,
                minute => 35,
                ensure => present,
        }

        #Apagado de máquinas por la noche
        cron {  apagado-noche:
                command => "/sbin/poweroff",
                user => root,
                hour => 23,
                minute => 50,
                ensure => present,
        }

        # y por si se encienden por un apagón de luz, bios configurada como power on,
        # cada 5 minutos comprueba si está encendido y se apaga
        # hay algunos equipos que pueden venir a deshoras o desdías a trabajar, en estos se quita el cron, en el resto se les pone
        case $hostname {
                equipo_particular-pro: {
                        cron { apagado-findesemana:
                                 ensure => absent
                        }

                        cron { apagado-madrugada:
                                 ensure => absent
                        }

                }#fin caso particular

                default:{
                        cron { apagado-findesemana:
                                 command => "/sbin/poweroff",
                                 user => root,
                                 hour => '*',
                                 minute => '*/5',
                                 weekday  => [0,6],
                                 ensure => present
                        }

                        cron { apagado-madrugada:
                                 command => "/sbin/poweroff",
                                 user => root,
                                 hour => ['0-6'],
                                 minute => '*/5',
                                 weekday  => ['1-5'],
                                 ensure => present
                        }
                } #fin default
        }#fin hostname
}

viernes, 3 de mayo de 2019

tarea puppet para descargar y añadir clave de repositorio.

       
Esta es el recurso puppet  que utilizo para descargar la clave del repositorio local del centro.
El archivo de la firma está en el repositorio. Lo descarga y lo añade hasta que comprueba que está añadido.  

 exec { "AnadeClaveFuenteroniel":
                command => "wget -O- http://servidorweb/ies/ies.asc  > ies.asc;cat ies.asc| apt-key add -",
                cwd => "/root",
                path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                timeout => 3600,
                unless => "apt-key list|grep \"7B3B 6261 A1F0 4C57 9A8D  E93D 41F4 5BC4 6BBD 7365\"",
        }

jueves, 21 de marzo de 2019

Recurso Puppet Exec Descargar archivo

Para descargar un archivo por puppet utilizo el recurso exec tal que así

exec { "/usr/bin/wget --limit-rate=2.5m -O /var/cache/paquetes/$paquete http://$servidor/$rutadescarga/$paquete && touch /var/cache/paquetes/$paquete":
     cwd => "/var/cache/paquetes",
     path => "/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/bin:/sbin",
     alias => "descargar-sweethome3d",
     creates => "/var/cache/paquetes/$paquete",
     timeout => 300,
     notify => Exec ["descomprimir-sweethome3d"],
}

El atributo creates comprueba un archivo para controlar que se ha descargado correctamente. En este caso el archivo lo hemos creado con la órden touch. Sería lo mismo que utilizar el atributo unless 
 unless => "/bin/ls /var/cache/paquetes/$paquete",

Con el atributo timeout le decimos el tiempo máximo a esperar para descargar.

Todas las opciones se puede ver en la página de referencia:

Recurso Puppet File Recursivo


Para crear un directorio con archivos dentro utilizamos el recurso de puppet file con el atributo recurse a true.

En el siguiente ejemplo creamos un directorio /usr/local/bin y le ponemos todos los scritps que tenemos en el modulo.
En este caso también he puesto el atributo replace a false así si pongo de manera local en una máquina algún otro script no lo borrará.

        file { "/usr/local/bin":
                source => "puppet:///modules/mp-xubuntu-ficheros-centro/bin",
                ensure => directory,
                mode => 644,
                owner => root,
                group =>root,
                recurse => true,
                replace => false,
        }


Podemos ver todas los opciones en la web de puppet.com/docs

https://puppet.com/docs/puppet/5.5/types/file.html

Recurso Puppet File No reemplazar

En el recurso puppet File si queremos crear un recurso de archivo pero que no sincronizarlo con el del servidor los hacemos con el atribute replace => false.

Por ejemplo:

        file { "/usr/share/linex-ubuntu-puppet/escuela2.0":
               owner => root , group => root , mode => 755,
               replace => false,
               source => "puppet:///modules/mp-xubuntu18-tareas-iniciales/escuela2.0.$tipo",
       }

Podemos ver todas los opciones en la web de puppet.com/docs

https://puppet.com/docs/puppet/5.5/types/file.html