Configurar PuppetBoard

Para facilitar la administración de Puppet (opensource) tenemos una nueva herramienta que se llama PuppetBoard su objetivo es dar accesos a la data que nosotros tenemos almacenada en nuestro PuppetDB de forma gráfica vía web, además de permitirnos ver el funcionamiento y reportes de los nodos al momentos de conectarse al nuestro Master. PuppetBoard difiere de Pupet Dansboard en:

  • Esta escrito en Python no en Ruby
  • No almacena ningún tipo de data, toda información es requerida del PuppetDB
  • No es posible funcionar sin PuppetDB
  • La instalación del servicio no es compleja, puedes ver con lujo y detalle todos los pasos acá. Para nuestro caso el proceso de instalación es el siguiente:

    Instalación

    Nota: Nuestra instalación será en base a Apache + mod-wsi

    Creamos nuestro directorio web de PuppetBoard

    1
    
    $ mkdir -p /var/www/puppetboard
    

    Clonamos el fuente

    1
    
    git clone https://github.com/nedap/puppetboard.git /var/www/puppetboard
    

    O lo instalamos de forma manual

    1
    
    pip install puppetboard
    

    Instalamos paquetería necesaria

    1
    
    yum install mod_wsgi python-pip
    

    Copiamos el archivo de ejemplo /usr/lib/python2.6/site-packages/puppetboard/default_settings.py a la ruta /var/www/puppetboard, la nombramos settings.py

    1
    2
    
    $ cp /usr/lib/python2.6/site-packages/puppetboard/default_settings.py /var/www/puppetboard
    $ mv /var/www/puppetboard/default_settings.py /var/www/puppetboard/settings.py
    

    Y colocamos el siguiente contenido

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    PUPPETDB_HOST = '127.0.0.1'
    PUPPETDB_PORT = 8080
    #PUPPETDB_SSL_VERIFY = True
    PUPPETDB_KEY = None
    PUPPETDB_CERT = None
    PUPPETDB_TIMEOUT = 20
    DEV_LISTEN_HOST = '127.0.0.1'
    DEV_LISTEN_PORT = 5000
    UNRESPONSIVE_HOURS = 2
    ENABLE_QUERY = True
    LOGLEVEL = 'info'
    

    En el mismo directorio del PuppetBoard, creamos el archivo wsgi.py con el siguiente contenido

    1
    2
    3
    4
    5
    6
    
    from __future__ import absolute_import
    import os
    
    # Needed if a settings.py file exists
    os.environ['PUPPETBOARD_SETTINGS'] = '/var/www/puppetboard/settings.py'
    from puppetboard.app import app as application
    

    Ahora, creamos el archivo /etc/httpd/conf.d/wdgi.conf para cargar el módulo en Apache con el siguiente contenido

    1
    
    LoadModule wsgi_module modules/mod_wsgi.so
    

    Finalmente, creamos el archivo de configuración para el virtualhosts que nos permita el acceso al PuppetBoard vía web

    1
    
    $ touch /etc/httpd/conf.d/puppetboard.conf
    

    Y colocamos la siguiente configuración

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    <VirtualHost *:80>
        ServerName puppet.example.com
        WSGIDaemonProcess puppetboard user=apache group=apache threads=5
        WSGIScriptAlias / /var/www/puppetboard/wsgi.py
        ErrorLog /var/log/httpd/puppetboard.error.log
        CustomLog /var/log/httpd/puppetboard.access.log combined
    
        Alias /static /usr/lib/python2.6/site-packages/puppetboard/static/
    
        <Directory /usr/lib/python2.6/site-packages/puppetboard>
            AuthType Basic
            AuthName "Authentication Required"
            AuthUserFile "/var/www/puppetboard/.htpasswd"
            Require valid-user
            Order allow,deny
            Allow from all
           WSGIProcessGroup puppetboard
            WSGIApplicationGroup %{GLOBAL}
          #  Require all granted
    #      Order deny,allow
    #        Allow from all
        </Directory>
    </VirtualHost>
    

    Creando el usuario para el acceso web

    1
    2
    
    [root@master puppetboard]$ cd /var/www/puppetboard/
    [root@master puppetboard]$ htpasswd -c .htpasswd admin #colocamos el Password para el acceso web
    

    Finalmente podemos acceder luego de ingresar el usuario y password.

    Comments