puppet: usando parámetros para mejorar legibilidad

puppet permite realizar configuraciones complejas basadas en parámetros, lo cual permite la posterior exportación de las configuraciones a otros sistemas y arquitecturas de una forma mucho más simple.
Escenificándolo, se podría crear una clase, params, sobre la cual se definirán los diversos valores que podrán coger las variable, en función de determinados parámetros, por ejemplo $operatingsystem.
class basico::params {
   $provider = $operatingsystem ? {
      /(ubuntu|debian)/ => "debian",
      default           => "init",
   }
   $atoppack = $operatingsystem ? {
      default           => "atop",
   }
}
Y luego sólo habría que incluir dicha subclase donde se desee usar y llamar a sus variables, que siempre tendrán un valor.
class basico::atop {
   require bascio::params

   package { "atop":
      name     => "${basico::params::atoppack}",
      ensure   => installed;
   }
}
En este ejemplo, el paquete atop está únicamente disponible para sistemas debian/ubuntu, en caso de que ahora aparezca un nuevo sistema redhat, en el que el paquete atop tiene otro nombre, atop.noarch, éste no se podría instalar desde puppet sin modificar la clase basico::atop con un case. Al tener la clase de params definida, únicamente habría que añadir un nuevo valor redhat para la variable $atoppack, tal como sigue,
class basico::params {
   $atoppack = $operatingsystem ? {
      redhat  => "atop.noarch",
      default => "atop",
   }
}
Aunque su utilidad pueda no parecer muy grande, realmente sí lo es, por que la toma de decisiones en función de casos está en un único fichero y no dentro del propio manifiesto, lo que asegura que no se altere el funcionamiento. Aunque en el caso presentado su utilidad puede no ser excesiva, el uso de una subclase para los parámetros es altamente recomendable.


1 comentario :

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios