Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 8686|Respuesta: 0

Gestión de configuración: Instalación y uso de marionetas (1)

[Copiar enlace]
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 detalle
Pró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
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com