LinuxParty
Puppet software le permite administrar la configuración de software en todos los ordenadores de la red. Simplifica las operaciones repetitivas y asegura la integridad del estado y la configuración entre gran número de máquinas. Un servidor maestro único y centralizado impulsa los cambios de configuración y comandos de nodos esclavos, con certificados SSL en ambos lados para la seguridad.
Puppet viene en versiones de código abierto Apache con licencia de empresa y, se trabajó con este último. Su potente lenguaje de configuración orientado a objetos compatible con la herencia y la reutilización de código. Puppet puede ejecutarse y gestionar una amplia gama de sistemas operativos --Linux, FreeBSD, Solaris y Windows, incluso (parcialmente)-- por lo que es adecuada para entornos de servidor heterogéneos que ejecutan diferentes distribuciones de Linux o incluso diferentes sistemas operativos.
Con Puppet, especificas un manifiesto que expresa la configuración que desee en sus sistemas, y Puppet encuentra la mejor manera de alcanzar este estado. Por ejemplo, si desea instalar el paquete httpd en un servidor en particular, no se lo digas directamente a Puppet para que ejecute el comando yum -o apt-get-, en su lugar, se especifica en un archivo de configuración de puppets que se requiere que el paquete httpd y deja que Puppet decida la mejor manera de instalarlo.
Cómo instalar Puppet
Si quieres probar Puppet, la mejor manera de instalarlo es a través de sus repositorios oficiales. Muchas distribuciones de Linux están soportadas, por CentOS puede utilizar el repositorio de Red Hat Linux y sus derivados.
Para instalar la versión actual del repositorio Puppet on CentOS 6, ejecute
(Prueba primeramente a buscarlo en sus repositorios)
[javier@localhost ~]$ yum search puppet
Complementos cargados:langpacks, presto, refresh-packagekit
========================= Nombre/Resumen que coinciden con: puppet =========================
rubygem-puppet-lint.noarch : Ensure your Puppet manifests conform with the Puppetlabs style
: guide
ovirt-node-plugin-puppet.noarch : Puppet plugin for oVirt Node image
puppet-server.noarch : Server for the puppet system management tool
rubygem-puppet-lint-doc.noarch : Documentation for rubygem-puppet-lint
syntastic-puppet.noarch : A syntax checker for puppet programming language
yum-plugin-puppetverify.noarch : Yum plugin to add puppet checksums to verify data
aeolus-configure.noarch : Aeolus Configure Puppet Recipe
facter.x86_64 : Command and ruby library for gathering system information
puppet.noarch : A network tool for managing many disparate systems
Nombre y resumen que coinciden con y sólo , use "buscar todo" para todo.
[javier@localhost ~]$
Para este ejemplo, vamos a instalar el repositorio de puppetlabs
rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-6.noarch.rpm
Una vez que tenga el repositorio de puppets, ejecute el comando yum -y install puppet
en los nodos esclavos Puppet y yum -y install puppet puppet-server
en el servidor maestro de puppets. Estos comandos instalan no sólo puppets, también todas sus dependencias, así, como el lenguaje de programación Ruby, en el que se basa Puppet. Ruby pueden ayudar a diseñar configuraciones avanzadas con plantillas ERB, pero Ruby es sólo la base subyacente y no es necesario saber que para poder trabajar con títeres.
Un paquete de dependencia notable es Facter, una herramienta multi-plataforma independiente que recopila información como el sistema operativo host, la distribución, la arquitectura y las interfaces de red. La información de Facter está disponible tanto para el nodo local y al maestro. Con base en esta información Puppet decide cómo aplicar el estado especificado para cada máquina local.
Para asegurarse de que puppets se inicia y se detiene de forma automática con el sistema CentOS, ejecute los comandos
chkconfig puppet on
En los nodos esclavos, y en el servidor maestro ejecute
chkconfig puppet on && checkconfig puppetmaster on
.
Si utiliza iptables para su firewall, asegúrese de permitir que los nodos esclavos puedan conectar con el maestro. El servicio Puppet master escucha por defecto en el puerto TCP 8140. Para permitir iptables en CentOS, ejecute los siguientes comandos:
iptables -I INPUT -p TCP --dport 8140 -j ACCEPT service iptables save
Configuración inicial Puppet
Puppet requiere algunos ajustes menores en la configuración antes de poder empezar a usarlo. En primer lugar, asegúrese de que los nodos esclavos se pueden conectar con el maestro. De forma predeterminada, los esclavos buscan el host maestro en el nombre de dominio completo "puppet" Puede especificar un nombre de dominio completo diferente para el maestro colocando la directiva server=somehost.example.org
dentro del bloque de configuración [main]
en el archivo /etc/puppet/puppet.conf en cada nodo. Alternativamente, puede simplemente codificar la dirección 'puppet' por defecto en el archivo /etc/hosts en cada nodo, añadiendo una línea como 192.168.1.200 puppet
a cada instancia de ese archivo.
El certificado SSL en el maestro tiene que coincidir con el FQDN a la que se conectan los nodos. Si dejas el valor predeterminado FQDN "puppet" para el maestro, añada estas dos líneas al archivo /etc/puppet/puppet.conf El encabezado de sección [master]
indica que una directiva para el maestro. La propia Directiva es certname=puppet
.
Ahora bien, los nodos deben saber dónde encontrar al maestro y ser capaz de establecer una conexión válida y segura, por lo que puede iniciarse manualmente los servicios de puppets por primera vez. En la shell de root escriba:
service puppetmaster start && service puppet start
En los nodos haga funcionar
service puppet start
.
Cuando los servicios de puppets comienzan en los nodos intentan conectar con el maestro, pero el maestro no permite que se conecten automáticamente. Usted tiene que autorizar las conexiones y establecer una relación de confianza con la firma de los certificados de los nodos.
Para ver las actuales peticiones de firma en el maestro, ejecute el comando:
puppet cert --list
Esto debería producir una salida similar a:
"server2" (SHA256) 82:A8:FA:BB:CE:0D:D5:0A:DB:7A:3E:8D:A5:62:5B:AC:91:7D:9C:65:51:5F:
80:50:F7:DB:ED:36:87:EC:B4:C0 "server3" (SHA256) 7C:5C:05:58:CC:5A:1C:D7:7C:98:CC:C4:34:17:D5:35:1C:11:E8:DC:04:92:
42:1C:8E:58:36:EA:5C:11:03:9B
Para firmar el certificado de un nodo, ejecute el comando puppet cert --sign
seguido del nombre del nodo: puppet cert --sign server2
, por ejemplo. Asegúrese de que los nombres de los hosts se pueden resolver desde el maestro para evitar problemas. La manera más fácil de hacerlo es agregar registros estáticos en el archivo hosts.
En el maestro, para verificar que los certificados se han firmado, utilice el comando puppet cert --list --all
. En la salida, un signo más delante de un nombre de certificado indica que se ha firmado: + "server1" (SHA256)
, por ejemplo.
En los nodos, para verificar que son capaces de conectar con el maestro, consulte el archivo /var/log/messages, al que Puppet envía sus registros de forma predeterminada. Cuando haya creado una exitosa relación con el maestro, usted debe ver una entrada como:
Dec 11 12:03:20 server2 puppet-agent[2429]: Finished catalog run in 0.14 seconds
Esto significa que el nodo puede conectar con el maestro y descargar y ejecutar el catálogo. ¿Qué es un catálogo? Me alegro de que lo preguntes!
Manifiesta Puppets y catálogos
Los archivos de configuración de puppets son llamados manifiestos. Ellos contienen las instrucciones que puppet utliza para llevar los nodos a un estado deseado. Los manifiestos se compilan en un catálogo. El proceso de compilación resuelve dependencias y reordena las instrucciones correctamente. Por ejemplo, suponga que desea instalar el paquete httpd y poner el requisito de que el paquete PHP esté presente. En este caso, los controles de puppets instalan PHP primero si es necesario, y luego procede con la instalación del paquete httpd.
Cuando un nodo se conecta al maestro se descarga el catálogo y se ejecuta de forma local. Ejecución del catálogo: la comprobación para garantizar el estado del nodo actual se corresponde con el estado configurado en el maestro. De forma predeterminada, los esclavos Puppet conectan cada 30 minutos con el maestro para sincronizar. Puedes mandan la actividad de Puppets en el archivo /var/log/messages.
Los manifiestos se almacenan en el maestro en el directorio /etc/puppet/manifests/ con la extensión, por defecto, la extensión .pp, Si desea incluir un archivo llamado something.pp puedes colocar la extensión, Puppet añade automáticamente pp en la búsqueda de un archivo a importar.
El archivo site.pp es el manifiesto principal del que puppet carga de forma predeterminada. Para empezar con un ejemplo sencillo, crée uno con el siguiente contenido:
node 'server2' { } node 'server3' { include postfix } import "postfix"
La directiva node
toma FQDN de un nodo y especifica la configuración para cada nodo. Y la directiva import
Al igual que en un lenguaje de programación, para que la configuración sea más legible y reutilizable debe separarse por piezas atómicas de configuración (llamadas clases de puppets) en archivos separados, e importarlas usando la directiva import
. Aquí se importa el contenido del archivo postfix.pp, que se encuentra en /etc/puppet/ manifiest, el mismo directorio que site.pp. La clase Postfix podría tener este aspecto:
class postfix { package { "postfix": ensure => installed, } service { "postfix": ensure => running, enable => true, } }
En primer lugar, el paquete Postfix debe instalarse ( ensure => installed
). Usted no tiene que decirle a Puppet el comando a ejecutar, sino que busca y utiliza el gestor de paquetes correcto de la base a los datos facilitados por Facter automáticamente.
El manifiesto anterior también muestra que se debe iniciar el servicio postfix ( ensure => running
) y se añade a los niveles de ejecución por defecto ( enable => true
), lo que significa que se va a iniciar y detener el sistema.
Una vez que tenga la clase anterior se puede incluir en la definición de un nodo, como lo hemos hecho con el nodo server3, para asegurarse de que el nodo cumple con el manifiesto del servicio postfix.
Una última nota sobre manifiest: Cuando se realizan cambios en el archivo site.pp, Puppet detecta automáticamente y se las impone mediante la recarga de su configuración. Si se realizan cambios en los archivos importados en site.pp, tiene que actualizar la marca de tiempo site.pp con el comando touch site.pp
hacer que Puppet reconozca los cambios.
A través de sus manifiest Puppet puede editar archivos de texto, servir archivos estáticos, realizar instalaciones y adaptar las configuraciones de sistemas heterogéneos. Puede obtener más información sobre los manifiestos de la documentación oficial .
Reporting
Puppet admite la presentación de informes para sus ejecuciones de catálogos. Cuando se configura, los nodos pueden enviar informes a la maestra acerca de los cambios y las operaciones que se han ejecutado con éxito, y los que no tienen. Para habilitar los informes se debe configurar los nodos para enviar informes y el maestro a aceptarlos. En los nodos, edite el archivo / etc / puppet / puppet.conf y añadir en el [agent]
sección de una nueva fila que contiene report = true
. En el servidor, edite /etc/puppet/puppet.conf, pero esta vez van a la sección [master]
y añadir dos filas. El primero, reportdir = /etc/puppet/reports
, especifica el directorio en el que se almacenarán los informes. El segundo, reports = store
, define la acción predeterminada para los registros recibidos.
Después de reiniciar Puppet tanto en los nodos como en el maestro debe comenzar a ver los informes en el directorio /etc/puppet/reports. Cada nodo crea su propio directorio existe el nombre de su host.
Informes de puppets, que vienen en formato YAML, son detallados y detallado. Cada informe comienza con el nombre del archivo del manifiesto aplicada, por ejemplo, file: /etc/puppet/manifests/postfix.pp
. Una línea con un message
la etiqueta se describe lo que ha sucedido: message: "ensure changed 'stopped' to 'running'"
. Este mensaje significa que la puppet se ha iniciado el servicio de acuerdo a las instrucciones del manifiesto. La última línea especifica la hora del evento, tales como time: 2012-12-16 07:00:57.326020 +02:00
.
Informes Puppet proporcionan mucha más información que en el simple ejemplo anterior. Usted no va a querer analizar de forma manual, herramientas tales como el tablero de puppets pueden ayudarle a visualizar los informes.
En este artículo se proporciona solo como una introducción para mostrar una de las muchas funciones de puppets. Puppet es muy poderoso, pero requiere un poco de conocimiento para operar bien. Por suerte, un montón de recursos educativos pueden ayudar a enseñarle Puppets, empieza explorando la documentación oficial de puppets.
-
Apache
- Cómo Resolver Problemas de Acceso en Apache Relacionados con SELinux en Fedora
- Cómo cambiar el nombre del servidor Apache por cualquier cosa personalizando el servidor
- Cómo instalar Varnish y realizar una evaluación comparativa del servidor web
- 13 consejos para reforzar la seguridad del servidor web Apache en Servidores Linux
- Cómo administrar el servidor Apache usando la herramienta "Apache GUI"
- Crear un sitio web protegido, con usuario y contraseña
- Cómo instalar Joomla en Rocky Linux y AlmaLinux
- Incrementar el rendimiento de su Web usando Nginx como Proxy con Apache
- ¿Cómo usar IPv6 en Apache?
- Cómo configurar HTTPS en Apache Web Server con CentOS
- Usar el comando occ, cómo funciona.
- Redirigir todo tu viejo dominio al nuevo dominio a través de .htaccess
- Ejemplos y Trucos de uso y configuración del htaccess de Apache
- Seguridad de Joomla: Cómo asegurar su sitio web de Joomla durante la instalación
- Securizar tu servidor Web Apache con mod_security