CAPÍTULO NOVENO PUPPET



Documentos relacionados
MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

SIEWEB. La intranet corporativa de SIE

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

CAPÍTULO 3 Servidor de Modelo de Usuario

Almacenamiento virtual de sitios web HOSTS VIRTUALES

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Resumen. Funcionamiento. Advertencia

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Capítulo VI. Estudio de Caso de Aplicación del Integrador de Información Desarrollado

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

GIT Dinahosting 3. Hola!

1.1.- Objetivos de los sistemas de bases de datos Administración de los datos y administración de bases de datos Niveles de Arquitectura

CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES, BILIB RECETA TECNOLÓGICA REALIZACIÓN DE COPIAS DE SEGURIDAD CON GSYNC

Características del software

Guía Rápida de Inicio

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

INFORME UCSP Nº: 2011/0070

e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red.

Autenticación Centralizada

Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa

Instalación y configuración de Windows SharePoint Services (WSS) 2003

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

Person IP CRM Manual MOBILE

Concurrencia. Primitivas IPC con bloqueo

Resumen del trabajo sobre DNSSEC

Cómo elegir tu SOFTWARE DE GESTIÓN?

Acronis License Server. Guía del usuario

PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto

1. CONSIDERACIONES GENERALES

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

Internet Information Server

Oficina Online. Manual del administrador

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

CSIR2121. Administración de Redes I

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

El proceso de Instalación de Microsoft SQL Server 2008

Informàtica i Comunicacions Plaça Prnt. Tarradellas, FIGUERES (Girona) Tel Fax

AVA-SECSystemWeb. Introducción Características del producto Especificaciones Técnicas

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Gestión de la Configuración

WINDOWS : TERMINAL SERVER

Ficheros de configuración de Nagios (ejemplo con nrpe y snmp)

Capítulo 5. Cliente-Servidor.

GedicoPDA: software de preventa

Capitulo 3. Desarrollo del Software

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

GUÍA BÁSICA DE INSTALACIÓN

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Guía de instalación de la carpeta Datos de IslaWin

GENERALIDADES DE BASES DE DATOS

TRANSFERENCIA DE FICHEROS FTP

CI Politécnico Estella

REGISTRO DE EMPRESAS Y PERSONAS BASE DE INFORMACIÓN DE CLIENTES & CONTACTOS

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Unidad IV: TCP/IP. 4.1 Modelo Cliente-Servidor

pymegnu v2.0 PRESENTACIÓN DE PRODUCTOS

Diseño de aplicaciones móviles seguras en Android.

Control de objetivos y alertas mediante Tablas Dinámicas

<Generador de exámenes> Visión preliminar

Creación y administración de grupos de dominio

Capitulo III. Diseño del Sistema.

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Un primer acercamiento a la CMDB.

Podemos descargar la distribucion de gnu/linux de los repositorios de Ubuntu


Gestor de Contenidos CMS. Prof: Ing. Henrry Servitá

Servicios Educativos Del Estado De Chihuahua Sistema Integral de Presupuestos y Materiales. Indice. Introducción Barra de Herramientas...

Trey-SAT Pag. 1. Manual de usuario

Capítulo 9. Archivos de sintaxis

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Red de Recargas Centro de Clearing

Introducción a las redes de computadores

Operación 8 Claves para la ISO

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano

Workflows? Sí, cuántos quiere?

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

Guía de instalación de la carpeta Datos de ContaWin

Arquitectura de sistema de alta disponibilidad

CUESTIONARIO PARA DETECTAR NECESIDADES DA CAPACITACIÓN EN IMPRENTA ECONOMICA S. A. DE C. V.

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Introducción a Spamina

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Información de Producto:

UNIVERSIDAD DE SALAMANCA

Archivo de correo con Microsoft Outlook contra Exchange Server

Ley Orgánica de Protección de Datos

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Almacenamiento virtual de sitios web HOST VIRTUALES

Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Base de datos en Excel

MANUAL DE LA CONFIGURACIÓN Y USO DEL MÓDULO DE ASM PARA PRESTASHOP

SOLUCIÓN HOSPEDADA. Introducción a los modelos de asociación de partners de Microsoft Dynamics CRM

Ministerio de Educación, Cultura y Deporte. Joomla! La web en entornos educativos. Guía del alumnado

Transcripción:

CAPÍTULO NOVENO PUPPET En el capítulo anterior se han mostrado las 4 herramientas de software libre más representativas para la gestión de configuraciones. Al finalizarlo se optó por elegir a Puppet como la herramienta de meta administración ideal para el control de sistemas. En los siguientes capítulos se irá mostrando dicho software, para finalizar en el capítulo 14 con un ejemplo de aplicación empresarial de todo lo expuesto hasta ese momento. Se comienza por lo tanto con un análisis detallado, ventajas y desventajas del sistema Puppet.

9. Puppet Los administradores de sistemas por norma general suelen escribir pequeños programas o script s que realizan tareas muy simples, los cuales les ayudan a realizar las tareas más rápidamente. Si se trabaja en una organización con cientos o miles de equipos, el mantenimiento de estos se complica todavía más. En ocasiones, algunas de las herramientas creadas por los administradores pueden ser muy buenas y potentes, pero rara vez salen del entorno de trabajo, por lo que cada uno tendrá sus soluciones y nunca serán uniformes y maduras. Cada administrador tendrá que crearse la suya. Puppet nace con la idea de eliminar este problema. Fue creado para ayudar a los administradores con la implementación de una herramienta única y centralizada de gestión, sobre la cual depositar de manera sencilla las configuraciones y estados de los equipos, pudiendo ser reutilizadas. Puppet logra esto de dos formas: a. Proporcionando un framework simple que pretende simplificar el trabajo de los administradores de sistemas. b. Reutilizando el mayor código posible y permitiendo un sistema modular. Con esto se consigue que el trabajo de administración sea mucho más simple, efectivo y eficaz, ya que sobre un pequeño servicio, puppetmasterd, se describen todos los estados de los equipos. También se garantiza que el trabajo esté bien hecho, pues evita las repeticiones de tareas monótonas y el posible fallo que esto origina. Fig. 9.1: Sistema Puppet Puppet es una herramienta de gestión de configuraciones o lo que es lo mismo, un sistema de meta administración presentado como lenguaje declarativo que describe la configuración deseada para un sistema. Su estructura está formada por un servidor central y varios clientes, tal como se muestra en la figura 9.1. A mayores, a bajo nivel están localizadas todas las librerías que expresan la forma de trabajar. En lugar de usar las técnicas actuales de administración de sistemas, Puppet crea un nuevo lenguaje para expresar la relación existente entre los servidores, los servicios que prestan y los objetos básicos que componen su configuración, en vez de manejar los detalles de como realizar la configuración necesaria o prestar un determinado servicio. Los usuarios Puppet pueden expresar la configuración deseada para un host basándose en abstracciones ya implementadas a bajo nivel (ver figura 9.2). Estas son usadas para 107

Puppet: Meta Administración transformar dichas expresiones en código a bajo nivel que manipula los servicios y lograr las configuraciones. Una correcta configuración debe, lógicamente, proporcionar toda la información posible a la herramienta de configuración, pero esta también debe comprender que dichos datos son complicados de manejar. La parte más compleja del sistema es la integración de las relaciones entre los servicios y los datos que lo conforman. Una de las principales características de Puppet es intentar evitar la complejidad de definición y por tanto ofrecer al usuario un sistema de alto nivel donde no sea necesario comprender los datos a bajo nivel sino sólo las relaciones entre los datos. Un ejemplo de lo expresado con antelación se representa a continuación. En él se puede ver una clase que maneja datos sobre servidores Apache. Puppet únicamente maneja los atributos de Apache que necesita para realizar las configuraciones, sin importar la versión de Apache que esté en cada nodo. define apache(version, conf, user, group) { # abstract across apache1 and apache2 $name = $version? { 1 => "apache", 2 => "apache2", package{ $name: install => true, file { "$conf": user => "$user", group => "$group", source => "$conf", # we want the service to restart if the config file changes # or if the package gets upgraded service { "$name": running => true, subscribe => [file["$conf"], package["$name"]], Manifiesto de control de Apache 108

9. Puppet Ahora, partiendo de esta configuración se pueden definir fácilmente los nodos para ejecutar las diversas versiones de Apache. Lo más destacado de esto es que no es necesario tener los conocimientos a bajo nivel, sino simplemente decidir qué versión hay en cada nodo. 1 # import our apache definition file 2 import "apache" 3 4 node apache_1 { 5 # use a locally-available config file 6 apache { 7 version => 1, 8 conf => "/nfs/configs/apache/server1.conf", 9 user => "www-data", 10 group => "www-data", 11 12 13 14 node apache_2 { 15 # use a config that we pull from elsewhere 16 apache { 17 version => 2, 18 conf => "http://configserver/configs/server2/httpd.conf" 19 user => "www-data", 20 group => "www-data", 21 22 Definición de estado para dos nodos Como se puede ver observar en el nodo apache_1 se va a ejecutar la versión 1 de Apache, mientras que en el nodo apache_2 se va a realizar una instancia de Apache2. Puppet es un lenguaje declarativo que separa el qué del cómo. Es aquí donde radica todo su potencial. El cómo se realiza a bajo nivel en las librerías escritas en Ruby, que proporcionan una entidad determinada para cada máquina, sabiendo de antemano cómo realizar las tareas para ese sistema en esa arquitectura. Por su parte la configuración del qué, queda en manos del administrador, que tiene que decidir qué acción realizar para cada host o grupo de hosts o, mejor dicho, definir o describir el estado deseado de cada host. Como ya se mencionó antes, una red basada en Puppet consta de un servidor y varios clientes que trabajan contra este. Este esquema está representado en la figura 9.1. El nodo servidor es consciente de la configuración completa de la red y del sistema; los clientes no tienen por qué conocerla. Un cliente se ejecuta contra un servidor específico y es este el que determina el estado que debe tener dicho host. Por defecto un equipo cliente realiza un pull a su servidor. Es el servidor el que procesa la información y posteriormente genera un árbol de clases que tendrá que aplicar sobre dicho nodo. Nota Un equipo con Puppet puede ejecutar sus propias configuraciones sin depender de un servidor central. 109

Puppet: Meta Administración En ocasiones dentro del servidor se producen cambios que es necesario que se envíen a los clientes. En este caso, es el servidor el que realiza un push a dichos nodos para que estos soliciten el estado nuevamente. Puppet está compuesto por tres capas perfectamente diferenciadas, que se representan en la imagen 9.2. Dichas capas constituyen la principal diferencia de este sistema de gestión de configuración con el resto y son las que le aportan la mayor potencia. La primera de las capas ya fue vista y se verá con más detalle en los capítulos siguientes y es la capa de lenguaje de configuración. La capa intermedia o capa de transacciones es la que ofrece Fig. 9.2: Capas Puppet la idempotencia del sistema: una configuración puede ser aplicada a un nodo un número indeterminado de veces. En cada chequeo que el cliente solicita se comprueba que el estado del sistema sea el descrito; en caso de que esto no se corresponda, se ajusta lo necesario. Este comportamiento es el que permite usar las posibilidades de registro en log s del sistema e incluso, en futuras versiones, se espera que esté disponible la posibilidad de deshacer cambios efectuados y volver a estados anteriores. Actualmente la capa de transacciones se encarga de registrar cualquier cambio que se produzca en alguno de los clientes; Puppet siempre dispone de un historial de todo lo realizado. Nota Si los cambios se efectúan se registran en el sistema. Si los cambios están registrados en el sistema, quiere decir que se han efectuado. La tercera y última capa que queda por comentar es la capa de más bajo nivel, la capa de abstracción de recursos. Dicha capa es la más importante, potente y la que conforma el sistema a bajo nivel. Como ya se mencionó, Puppet se centra en resolver el qué y no el cómo, pero este también hay que resolverlo en algún momento y es en esta capa dónde se realiza. Las librerías de bajo nivel, escritas en Ruby, son las encargadas de realizar las modificaciones necesarias según los recursos empleados. Dichas librerías están incluidas en las versiones de Puppet de todos los sistemas y se instalan como librerías estándar de Ruby, localizadas bajo /usr/lib/ruby/puppet/. Si se observa detenidamente dicho directorio es fácil saber para qué sirve cada librería y también saber lo que es capaz de realizar cada recurso en función de su código. Nota Para una mejor comprensión del sistema Puppet, alterar o añadir cualquier mejora, se aconseja revisar estas librerías. 110

9. Puppet Por ejemplo la librería usada por el recurso package (ver punto 11.2.1) está descrita en el fichero package.rb y según el sistema operativo que se detecte llama a una u otra de las librerías de instalación de paquetes que son las encargadas de realizar el trabajo. En el caso de los sistemas Debian, por ejemplo se puede hacer uso de librerías apt.rb y dpkg.rb, que se corresponden con sus respectivas aplicaciones de instalación de paquetes. Son todas estas librerías las que realizan el cómo que se describe en la capa inicial del lenguaje. En el caso puntual de lo comentado con antelación, para sistemas Debian, se usará la librería apt.rb, porque su proveedor de paquetes es apt. En caso de un sistema Gentoo 1, se usará portage.rb, porque el sistema de paquetería de este se llama así 2. Es así comprensible que si se desea añadir un nuevo proveedor o un nuevo recurso, haya únicamente que implementar el código que lo realice, siendo entonces el sistema modular, flexible y ampliable. Los recursos de Puppet presentan una relación lógica consigo mismos. Esto quiere decir que son los propios recursos los que controlan a nivel de sintaxis que el estado declarado para un nodo no sea incongruente; no es posible definir un estado donde, por ejemplo, un usuario exista y no deba existir al mismo tiempo. La definición ya dará error. La transmisión de datos de Puppet no está tan perfeccionada como puede estar, por ejemplo, la de rsync (ver 8.1), pero sí tiene la ventaja de que usa el estándar de transmisión de datos XMLRPC bajo HTTPS. Como es lógico todos los datos viajan cifrados por la red, pero esto facilita la posible integración de los clientes Puppet con otros sistemas o interfaces de administración que también usen dicho protocolo. Xen, que se estudió en el capítulo 6, permite que los datos de comunicación entre las máquinas y el servidor y entre servidores use también el protocolo XMLRPC, por lo que podría ser posible una integración sobre una interfaz de administración genérica que uniese a Xen con Puppet. 1 Distribución GNU/Linux orientada a usuarios con cierta experiencia. 2 Portage: gestor de paquetes, inspirado en los ports de FreeBSD. 111

Puppet: Meta Administración 9.1. Desventajas Sistema innovador Puppet todavía es un proyecto que está creciendo y esto se nota especialmente en las versiones del software, que cambian cada poco tiempo e incluyen una gran cantidad de mejoras, lo que obliga a estar actualizado todo el tiempo. La versión actual de Puppet es la 0.24. Documentación Las continuas mejoras hacen que la documentación, si no se trabaja con la última versión, en ocasiones parezca incorrecta. Sin apoyo específico Reductive Labs es la empresa que está detrás de Puppet, pero todavía no es una empresa de renombre destacado en el mercado, por lo que puede no inspirar confianza. Sin soporte técnico No existe un soporte técnico oficial que apoye la aplicación. Interfaz No existe un interfaz de administración que facilite el desarrollo de estados para los nodos cliente ni permita configuraciones. 112

9. Puppet 9.2. Ventajas Software libre Puppet está licenciado bajo GPL. Idempotencia Las configuraciones no tienen un número máximo de veces para ejecutarse. Se aplicarán siempre que se detecte un cambio en el sistema y el estado final del sistema siempre será el mismo. Simplicidad y rapidez La creación de un sistema Puppet es muy simple y la administración de sistemas usándolo como base aumenta la eficiencia del trabajo. Ahorro de costes Provoca mayor productividad, lo que implica ahorro. Evita fallos Ante trabajos redundantes en numerosos equipos, la administración de los mismos con Puppet evita fallos, pues únicamente se modifica un fichero y se aplica la configuración a todos los nodos. Lenguaje declarativo Se describe el estado que se desea tener en un sistema, pero no se define cómo alcanzar dicho estado. El qué frente al cómo Se deja al administrador que sea quien describa lo qué desea, pero no el cómo. Este ya no es relevante. Con ello se consigue una perfecta abstracción de la configuración frete al sistema/arquitectura. Sistema modular El sistema Puppet es ampliamente modular y permite la creación de código reutilizable. Capa de abstracción Es la capa más importante del sistema, sobre la que se decide el cómo. Existe la posibilidad de realizar nuevas mejoras en ella de forma muy simple, pues está programada en Ruby. Finalizado este capítulo los conceptos y las ventajas de Puppet deben ser conocidos por el lector y se considera entonces que la elección de este como una buena opción para implementar el modelo del sistema de gestión de administración propuesto. En el capítulo siguiente se va a seguir avanzando con los conceptos del modelo y para ello se hará referencia a la instalación de los servicios de Puppet, tanto en cliente como en servidor, así como la configuración de estos. 113