snmp en ubuntu y centos

27 views
Skip to first unread message

Pablo LUNIX

unread,
Apr 8, 2014, 1:49:30 PM4/8/14
to pupp...@googlegroups.com


Hola otra vez gente:

Andaba configurando con hiera para que los clientes se instalasen el snmp y pensaba aplicar una variable de hiera para sistemas operativos centos y ubuntu:

el caso es que la variable package_snmp, así es como yo la llamo en centos requiere 'net-snmp', pero para ubuntu requiere los paquetes 'snmp' y 'snmpd' según he consultado en los manuales...

No sé cómo hacer esto de un modo limpio y elegante sin dejar una variable por ahí colgando en el caso de centos.

Nicolás César

unread,
Apr 8, 2014, 1:57:54 PM4/8/14
to pupp...@googlegroups.com
Hola Pablo. Fijate:

http://www.puppetcookbook.com/posts/packages-with-different-name-per-distro.html que usan $operatingsystem Yo siempre lo hice asi, sin usar hiera (para eso) Pero como no se como estas usando las variables hiera. Puede ser que tu caso sea distinto. Mandanos codigo ilustrativo para entender mejor.

Happy puppeting!
Nico

Nico César


--
Has recibido este mensaje porque estás suscrito al grupo "Puppet en Español" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a puppet-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Pablo Wright

unread,
Apr 8, 2014, 2:15:21 PM4/8/14
to pupp...@googlegroups.com
Lo mejor en este caso es crear un nivel en la jerarquía de Hiera que
dependa del fact $osfamily ya que los nombres de paquetes son los
mismos para todo RedHat y lo mismo para Debian, por ejemplo.

Salud,
Pablo D. Wright
Technical Operations - www.edrans.com
Buenos Aires: +54 11 5368 5839 - Ext. 8017 |
Las Vegas: +1 5057183014

Guillermo

unread,
Apr 8, 2014, 2:24:52 PM4/8/14
to pupp...@googlegroups.com
Hola

A mi me gusta mas la forma que muestra Nicolas. Creo que así puedes mejorar el módulo al hacerlo compatible con mas distribuciones: el mismo módulo, con la misma configuración consigue los mismos resultados independientemente de la distribución de la máquina.

Al hacerlo con hiera o parametrizando en exceso aumentas la complejidad sin obtener una ventaja notable.

Un saludo.


Para obtener más opciones, visita https://groups.google.com/d/optout.

Pablo Wright

unread,
Apr 8, 2014, 2:45:58 PM4/8/14
to pupp...@googlegroups.com
Disiento, para mí agregar más condicionales al módulo significa mayor
complejidad.

En mi opinión Hiera reduce la complejidad al extraer el condicional
del módulo. En el caso de Nicolás, si quisiera agregar un paquete para
un nuevo sistema operativo (o si cambia el nombre del paquete en un
os) tendría que modificar el módulo. En cambio con Hiera puedo
simplemente agregar otro archivo con los nuevos nombres o modificar el
preexistente.
La gran ventaja de Hiera es cuando se maneja un volumen de datos más
grande, ya que tener 50 líneas con condicionales y arrays con valores
harían realmente ilegible al módulo y sería muy dificil predecir su
comportamiento.

Dicho eso, concuerdo que la parametrización excesiva es un problema y
lleva a módulos poco legibles y baja su reutilización, con lo cual
aconsejo cautela a la hora de parametrizar valores en los módulos.

Salud!
Pablo D. Wright
Technical Operations - www.edrans.com
Buenos Aires: +54 11 5368 5839 - Ext. 8017 |
Las Vegas: +1 5057183014



Pablo LUNIX

unread,
Apr 9, 2014, 2:14:41 AM4/9/14
to pupp...@googlegroups.com

Coincido con Pwright en que usar hiera supone la opción más versátil y mása elegante de las disponibles. Sobre eso hay poca base para un debate, porque la solución de complicar un módulo es aplicable a escalas muy pequeñas, pero difícilemente escalable sin enfangarlo todo...

La pregunta original era:  Al crear la variable "package_snmp", en centos le aplico que busque el paquete "net_snmp", pero en los manuales que he consultado, para un Ubuntu se me pide que que instale ¡¡¡¡DOS!!!! paquetes, "snmp" y "snmpd", ¿Cómo se hace esto? ¿Cómo parametrizo en una sóla variable DOS valores?


Gracias por las respuestas y el interesantísimo debate.

Pablo Wright

unread,
Apr 9, 2014, 7:19:24 AM4/9/14
to pupp...@googlegroups.com
Asumiendo una clase con una forma similar:

class snmp (
  $package_name = 'net-snmp',
) {
  package { $package_name :
     ensure  => present,
  }
}

Lo interesante de esto es que (notese la falta de comillas dobles en la variable) si le pasamos un array a $package_name, Puppet instalará todos los elementos de ese array. Es decir, algo así:

class { 'snmp':
  package_name => ['snmp', 'snmpd'],
}


O en hiera, simplemente:

# Debian.yaml (depende de $osfamily)
snmp::package_name:
  - 'snmp'
  - 'snmpd'

# RedHat.yaml
snmp::package_name: 'net-snmp'


Espero que sirva, salud!

Pablo D. Wright
Technical Operations  - www.edrans.com
Buenos Aires: +54 11 5368 5839  - Ext. 8017 | 
Las Vegas: +1 5057183014
 
Firma_Edrans.png





--

Pablo LUNIX

unread,
Apr 9, 2014, 12:37:52 PM4/9/14
to pupp...@googlegroups.com
Pues eso parece servir perfectamente Pwright, muchas gracias. Muy buen ejemplo

Ando probando los dos modelos, el de Nico y el de Hiera.

El de hiera me da problemas porque el sistema parece incapaz de leer las variables del fichero /etc/hiera.yaml y el master me retorna lo siguiente:

Notice: hiera(): Cannot load backend -­ yaml: no such file to load -- hiera/backend/-­ yaml_backend
Notice: hiera(): Cannot load backend -­ yaml: no such file to load -- hiera/backend/-­ yaml_backend
Error: Could not find data item paquete_snmp in any Hiera data file and no default supplied at /etc/puppet/modules/snmp/manifests/init.pp:4 on node pablo.cliente2
Error: Could not find data item paquete_snmp in any Hiera data file and no default supplied at /etc/puppet/modules/snmp/manifests/init.pp:4 on node pablo.cliente2
Error: Could not find data item paquete_snmp in any Hiera data file and no default supplied at /etc/puppet/modules/snmp/manifests/init.pp:4 on node pablo.cliente2

Aquí dejo también mi fichero hiera.yaml (más sencillo imposible)
---
:hierarchy:
    -­ %{osfamily}
    -­ common
:backends:
    -­ yaml
:yaml:
    :datadir: '/usr/share/puppet/empresa/hieradata'

En la ruta del datadir tengo explícitos los ficheros RedHat.yaml, Debian.yaml y common.yaml con contenido similar cada uno.

---
paquete_snmp: -  'net-snmp'

y el init.pp del módulo en la carpeta manifest:


class snmp(
    $paquete_snmp = hiera('paquete_snmp')

){
# Orden de ejecución. A partir de PUPPET 3, se implementa esto. Más potente que los "require".

        Package["net-snmp"] -> File["/etc/snmp/snmpd.conf"] ~> Service["snmpd"]

        # INSTALAR SNMP
        package{"$paquete_snmp":
            ensure => installed
           }
    # Copiar archivo de configuracion
        file{"/etc/snmp/snmpd.conf":
            owner => root,
            group => root,
            mode => 600,
   source => "puppet://puppet/files/snmpd.conf"
            }
    # iniciar el servicio
        service{"snmpd":
            name => "snmpd",
            ensure => true,
            enable => true,
            }
    }


Como puedes ver Pablo Wright me apliqué en tu videotutorial, aunque muchas cosas, comillas, barras y demás apenas se aprecian. El caso es que por último hago un include de la clase en el site.pp y da el fallo que hemos visto.

Por otro lado la configuración que ofrece NIco sí parece correr bien, pero me da la sensación de que es muuuuuy lento, y  la línea  package["$::netsnmp::params::packages"] -> file["/etc/snmp/snmpd.conf"] ~> service["snmpd"]
para establecer el orden de ejecución por pantalla arroja el siguiente fallo:

 Error: Could not find resource 'Package[net-snmpnet-snmp-utils]' for relationship on 'File[/etc/snmp/snmpd.conf]' on node pablo.cliente2

Pues así estamos. Me gusta más la solución de Hiera, pero de momento la otra por lo menos ejecuta lo que se le pide.

Gracias.





Pablo Wright

unread,
Apr 9, 2014, 1:35:56 PM4/9/14
to pupp...@googlegroups.com
A simple vista parecería que falta algún componente de Hiera,
específicamente el backend de YAML. Cómo fue el proceso de instalación
del master? QUé versiones/fuentes de paquetes estás usando?

Pablo D. Wright
Technical Operations - www.edrans.com
Buenos Aires: +54 11 5368 5839 - Ext. 8017 |
Las Vegas: +1 5057183014




Pablo LUNIX

unread,
Apr 10, 2014, 5:43:46 AM4/10/14
to pupp...@googlegroups.com

Estoy usando la version 3.4 del master. Lo instalé y actualicé desde los repos oficiales de puppetlabs...

Pablo Wright

unread,
Apr 10, 2014, 1:25:49 PM4/10/14
to pupp...@googlegroups.com
Pregunta de rigor... Estás usando tabs o espacios para indentar las
entradas de hiera.yaml? Según recuerdo, el formato yaml (o su
intérprete de ruby) no se lleva muy bien con los tabs. Eso podría ser
el problema.


Pablo D. Wright
Technical Operations - www.edrans.com
Buenos Aires: +54 11 5368 5839 - Ext. 8017 |
Las Vegas: +1 5057183014




2014-04-10 6:43 GMT-03:00 Pablo LUNIX <pablolun...@gmail.com>:
>
> Estoy usando la version 3.4 del master. Lo instalé y actualicé desde los
> repos oficiales de puppetlabs...
>

Pablo LUNIX

unread,
Apr 22, 2014, 4:18:36 AM4/22/14
to pupp...@googlegroups.com
Tengo el asunto resuelto usando uno de los módulos que ofrece puppet y tuneándolo un poco. No me dejaron seguir por esta línea, aunque la retomaré en breve.
Reply all
Reply to author
Forward
0 new messages