|
|
Publicado en 20/10/2014 9:47:45
|
|
|

1. Introducción a Puppet
Los administradores de sistemas a menudo se quedan atrapados en una serie de tareas repetitivas: actualizar paquetes, gestionar archivos de configuración, servicios del sistema, tareas cron, añadir nuevas configuraciones, corregir errores, etc. Estas tareas suelen ser repetitivas e ineficientes, y la primera respuesta para resolverlas es automatizarlas, por lo que aparecen scripts personalizados. Debido a la complejidad del entorno, los scripts y aplicaciones personalizados se desarrollan repetidamente y es difícil adaptar múltiples plataformas, y la flexibilidad y funcionalidad son difíciles de garantizar, por lo que han surgido herramientas automatizadas de gestión de configuración como Puppet.
En el mundo del código abierto, existen muchas herramientas de configuración para elegir, y algunos de los productos clave en este ámbito son:
Puppet (http://puppet.reductivelabs.com/): Una herramienta de gestión de configuración escrita en Ruby que utiliza la arquitectura C/S para configurar el cliente en lenguaje declarativo. Cfengine (http://www.cfengine.org): Una de las primeras herramientas de configuración de código abierto lanzadas, lanzada en 1993, también es una arquitectura C/S, normalmente utilizada en instituciones educativas. LCFG(http://www.lcfg.org/): Una herramienta de gestión de configuración para arquitecturas C/S que utiliza XML para definir configuraciones. Bcfg2: Una herramienta de gestión de configuración para arquitectura C/S escrita en Python que utiliza especificaciones y respuestas del cliente para configurar el host objetivo.
Este documento está dedicado a describir cómo usar Puppet para gestionar tu host, aplicaciones, programas en segundo plano y diversos servicios.
Acerca de Puppet:
1. ¿Para qué se usa Puppet Pupp?
Puppet es una herramienta de gestión de configuración de sistemas de código abierto basada en Ruby que se basa en la arquitectura de despliegue C/S. El desarrollador principal es Luke Kanies, que sigue la licencia de derechos de autor GPLv2. Desde 1997, Kanies ha estado involucrado en la administración de sistemas UNIX, y el desarrollo de Puppet surgió de esta experiencia. No satisfecho con las herramientas de configuración disponibles, Kanies comenzó a desarrollar herramientas en el laboratorio Reductivo entre 2001 y 2005. Poco después, Reductive Labs lanzó su producto estrella, Puppet.
2. Características de Pupput
Muchas herramientas de gestión de configuración de sistemas funcionan de forma muy similar, como cfengine. ¿Qué hace único a Puppet?
La sintaxis de Puppet te permite crear un script separado para crear un usuario en todos tus hosts objetivo. Todos los hosts destino interpretarán y ejecutarán el módulo a su vez usando la sintaxis aplicable al sistema local. Por ejemplo, si esta configuración se ejecuta en un servidor Red Hat, crea un usuario usando el comando useradd; Si esta configuración se ejecuta en un host FreeBSD, se utiliza el comando adduser.
Otro aspecto notable de Puppet es su flexibilidad. Debido a la naturaleza del software de código abierto, puedes obtener libremente el código fuente de Puppet, y si tienes problemas y tienes la capacidad, puedes modificar o mejorar el código de Puppet para adaptarlo a tu entorno. Además, los desarrolladores y donantes de la comunidad continúan mejorando las capacidades de Puppet. Una gran comunidad de desarrolladores y usuarios también está comprometida a proporcionar documentación y soporte técnico para Puppet.
Puppet también es fácil de escalar. El soporte personalizado para paquetes y configuraciones especiales del entorno del sistema pueden añadirse rápida y fácilmente al instalador Puppet.
3. Modo de funcionamiento de la marioneta
Puppet es una herramienta de gestión de configuración de arquitectura C/S que instala el paquete puppet-server (conocido como puppet-master) en un servidor central. Instala el software cliente Puppet (llamado Cliente Puppet Client) en el host objetivo que necesite gestionarse. Cuando el cliente se conecta al puppetmaster de marionetas, el archivo de configuración definido en el puppetmaster se compila y luego se ejecuta en el cliente. Por defecto, cada cliente se comunica con el servidor cada media hora para confirmar la actualización de la información de configuración. Si hay nueva información de configuración o ha cambiado, la configuración se recompilará y publicará en cada cliente para su ejecución. También puedes activar activamente una actualización de la información de configuración en el servidor para forzar a cada cliente a configurarlo. Si se cambia la información de configuración del cliente, puede obtener la configuración original del servidor para corregirla.
Gestión de configuración: Instalación y uso de marionetas (1)
4. El futuro de Puppet
Por último, Puppet es una herramienta joven que aún está en desarrollo y desarrollo. La comunidad de Marionetas está creciendo rápidamente y se incorporan constantemente muchas ideas nuevas, lo que impulsa desarrollos, actualizaciones y módulos que se presenten cada día.
2. Configuración e instalación (Puppet 2.6.4 CentOS 5.4):
Configura el repositorio en el servidor títere y el cliente: rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm [root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo Añadir a: [marioneta epel] nombre=marioneta de epel baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ habilitado=0 gpgcheck=0
Añadir el repositorio puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [marionetas de laboratorio] name=Puppet Labs Packages baseurl=http://yum.puppetlabs.com/base/ habilitado=0 gpgcheck=0
Instalación de Maestro de Marioneta: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Modifica los hosts y añade los siguientes dos registros: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com marioneta 192.168.0.100 puppetclient.leju.com
Configuración de Puppet: [root@puppetmaster ~]# CD /etc/Puppet/ [root@puppetmaster puppet]# vi puppet.conf
[principal] # El directorio de registro de Puppet. # El valor por defecto es '$vardir/log'. logdir = /var/log/puppet
# Donde se guardan los archivos PID de Marioneta. # El valor por defecto es '$vardir/run'. rundir = /var/carrera/marioneta
# Donde se guardan los certificados SSL. # El valor por defecto es '$confdir/ssl'. ssldir = $vardir/ssl
[agente] # El archivo en el que el títere almacena una lista de las clases # Asociado con la configuración recuperada. Se puede cargar # el ejecutable separado ''puppet'' usando las ''-loadclasses'' # Opción. # El valor por defecto es '$confdir/classes.txt'. archivo de clase = $vardir/classes.txt
# Donde puppetd guarda en caché la configuración local. An # extensión que indica el formato de caché se añade automáticamente. # El valor por defecto es '$confdir/localconfig'. localconfig = $vardir/localconfig Servidor = puppetmaster.leju.com Report = verdadero escuchar = verdadero
[maestro] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = verdadero informes = almacenar
[root@puppetmaster marioneta]# vi fileserver.conf [archivos] path /etc/puppet/files conceder*
[módulos] conceder*
[plugins] conceder*
[root@puppetmaster puppet]# mkdir /etc/puppet/files
[root@puppetmaster Puppet]# Manifiesto de CD/ Create site.pp, que es el archivo de configuración de entrada de marioneta: [root@puppetmaster manifiestos]# vi site.pp importar "modules.pp" importar "roles.pp" importar "nodes.pp"
# Ajustes generales para tipos estándar Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Archivo { backup => main }
Create modules.pp para importar módulos: [root@puppetmaster manifiestos]# vi modules.pp "Prueba" de importación
Create roles.pp para definir roles de servidor: [root@puppetmaster manifiesta]# vi roles.pp clase base { incluye prueba
}
Crea nodes.pp para configurar los nodos del servidor: [root@puppetmaster manifiesta]# vi nodes.pp node 'basenode' { incluye la clase base
}
Node 'puppetclient.leju.com' hereda basenode { etiqueta("prueba")
}
el nodo 'puppetmaster.leju.com' hereda el basenode { etiqueta("prueba")
}
[root@puppetmaster manifiesta]# CD .. [root@puppetmaster Puppet]# módulos mkdir Crea un módulo de prueba: [root@puppetmaster módulos]# mkdir -p test/manifests/ [root@puppetmaster módulos]# Prueba/archivos mkdir/ [root@puppetmaster módulos]# Prueba/archivos de CD/ [root@puppetmaster archivos]# vi test.txt ¡Línea de prueba! [root@puppetmaster archivos]# CD .. /manifiesto/ Crea una clase de prueba para entregar un archivo al cliente: [root@puppetmaster manifiesta]# vi init.pp Prueba de clase { archivo { "/tmp/test.txt": asegúrate de => presente, grupo => "raíz", propietario => "raíz", modo => "0644", fuente => "puppet:///test/test.txt" }
}
Lanzamiento de Puppet Master: [root@puppetmaster manifiesta]# /etc/init.d/puppetmaster inicio Asegúrate de que el puerto 8140 esté activo.
Instalación del cliente de marionetas: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" instalar puppet
Modifica los hosts y añade los siguientes dos registros: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com marioneta 192.168.0.100 puppetclient.leju.com
Configuración del títere: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient marioneta]# vi puppet.conf [principal] # El directorio de registro de Puppet. # El valor por defecto es '$vardir/log'. logdir = /var/log/puppet
# Donde se guardan los archivos PID de Marioneta. # El valor por defecto es '$vardir/run'. rundir = /var/carrera/marioneta
# Donde se guardan los certificados SSL. # El valor por defecto es '$confdir/ssl'. ssldir = $vardir/ssl
[agente] # El archivo en el que el títere almacena una lista de las clases # Asociado con la configuración recuperada. Se puede cargar # el ejecutable separado ''puppet'' usando las ''-loadclasses'' # Opción. # El valor por defecto es '$confdir/classes.txt'. archivo de clase = $vardir/classes.txt
# Donde puppetd guarda en caché la configuración local. An # extensión que indica el formato de caché se añade automáticamente. # El valor por defecto es '$confdir/localconfig'. localconfig = $vardir/localconfig
Servidor = puppetmaster.leju.com Report = verdadero escuchar = verdadero
[root@puppetclient puppet]# vi namespaceauth.conf [Tiritero] Permitir puppetmaster.leju.com permite *leju.com
[root@puppetclient marioneta]# vi auth.conf Añadir allow * a la última línea ...... Camino / Auth Any conceder*
[root@puppetclient Puppet]# CD Ejecutar marioneta: [root@puppetclient ~]# puppetd --noop --test --trace --debug Si Puppet Master no configura: autosign=true, debe ejecutarse en Puppet Master: [root@puppetmaster ~]# Certificado de marioneta -l puppetclient.leju.com [root@puppetmaster ~]# Certificado de marioneta -s puppetclient.leju.com Firma puppetclient.leju.com así. Luego vuelve al cliente para ejecutar aquí: [root@puppetclient ~]# puppetd --noop --test --trace --debug Join --noop, la configuración no se aplicará realmente en el cliente, se usará principalmente para pruebas, para ver si hay errores en la impresión, y ejecuta sin errores: [root@puppetclient ~]# puppetd --test --trace --debug
Consulta el documento: [root@puppetclient ~]# ll /tmp/ Total 8 -rw-r--r-- raíz 1 raíz 11 25 de febrero 22:35 test.txt El documento ha sido emitido.
También es posible empujar a Puppet Master: [root@puppetmaster ~]# Patada de marioneta -D --presentador puppetclient.leju.com Desencadenantes puppetclient.leju.com Obtención de estatus El estatus es el éxito puppetclient.leju.com terminado con el código de salida 0 Terminado Devolver 0 indica que el puppetd en el cliente se activó con éxito.
Configura el títere para arrancar automáticamente: chkconfig --nivel 2345 marioneta activada
Modificar a Puppetmaster para usar Pasajero Passenger es una extensión de Apache 2.x para aplicaciones de raíles o rack en Apache. puppetmaster utiliza WEBrick para ofrecer servicios de archivos por defecto; si tienes muchos clientes de marioneta, el rendimiento del servicio de archivos de puppetmaster será pobre, para que sea más robusto, así que usa Apache para ofrecer servicios de archivos.
Instalación: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems El RHEL5 de pasajeros 2.2.2 funciona bien. Añadir repositorio foreman.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [capataz] name=Repositorio estable Foreman baseurl=http://yum.theforeman.org/stable gpgcheck=0 habilitado=1 [root@puppetmaster ~]# yum instalar rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# Rubygem-Rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Instalación del módulo SSL de Apache: [root@puppetmaster ~]# Instalación mod_ssl
Para configurar la aplicación de Puppets: mkdir -p /etc/puppet/rack/puppetmasterd/ mkdir /etc/puppet/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/ chown puppet /etc/puppet/rack/puppetmasterd/config.ru
[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2 PassengerRuby /usr/bin/ruby PassengerMaxPoolTamaño 30 PassengerPoolIdleTime 1500 PassengerMaxRequests 1000 PasajeroTasAcelerador 120 RackAutoDetect desactivado RailsAutodetección apagada
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Probablemente quieras afinar estos ajustes PasajeroAlto rendimiento activado PassengerMaxPoolTamaño 12 PassengerPoolIdleTime 1500 # PassengerMaxRequests 1000 PasajeroTasAcelerador 120 RackAutoDetect desactivado RailsAutodetección apagada
Escucha 8140
<VirtualHost *:8140> SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite TODOS:! ADH:RC4+RSA:+ALTO:+MEDIO:-BAJO:-SSLv2:-EXP
SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # Si Apache se queja de firmas inválidas en el CRL, puedes intentar desactivarlo # CRL comprobando comentando la siguiente línea, pero esto no es recomendable. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient opcional SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Los siguientes encabezados de cliente permiten que la misma configuración funcione con Pound. RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e
DocumentRoot /etc/puppet/rack/puppetmasterd/public/ RackBaseURI / <Directorio /etc/puppet/rack/puppetmasterd/> Ninguna opción Permitir Anulación Ninguno Ordenar, permitir, negar permite de todos </Directory> </VirtualHost>
Modifica el archivo de configuración del puppetmaster para añadir las siguientes dos líneas: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [maestro] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Modificar /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Añade la siguiente línea al final: PUPPETMASTER_EXTRA_OPTS="--informes almacenan" Si necesitas informar tanto al capataz como al tablero de marioneta, añade la siguiente línea: PUPPETMASTER_EXTRA_OPTS="--reportes almacén, capataz puppet_dashboard"
Deja el servicio de titiriteros y comienza el servicio apache: [root@puppetmaster ~]# /etc/init.d/puppetmaster para [root@puppetmaster ~]# /etc/init.d/httpd start
El arranque no inicia el servicio puppetmaster, el arranque inicia el servicio httpd: [root@puppetmaster ~]# chkconfig --nivel 2345 puppetmaster apagado [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Asegúrate de que el puerto 8140 esté activado: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 :::8140 :::* ESCUCHA 9834/httpd
Prueba en el lado del cliente para ver si el registro de errores se imprime: [root@puppetclient ~]# puppetd --test --trace --debug |
Anterior:Los parámetros importantes de php-fpm.conf se explican en detallePróximo:El 25 de octubre de 2014 (sábado), a las 16 p.m., se probó la alarma de defensa aérea y prevención de desastres
|