Puppet-dashboard

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Application web (obsolète)
Contexte Ancien ENC (External Node Classifier) et interface de reporting pour Puppet 2.x/3.x
Statut Projet archivé côté éditeur — remplacé par la console Puppet Enterprise, Foreman ou des outils PuppetDB dédiés
Voir aussi Puppet · Puppet enterprise · Foreman

Puppet Dashboard était une application Rails permettant de gérer l'affectation des classes Puppet aux nœuds (rôle d'ENC, External Node Classifier) et de visualiser l'historique des runs (rapports de changement/échec). Le projet est aujourd'hui abandonné par l'éditeur : les installations Puppet 4+ s'orientent plutôt vers la console de Puppet Enterprise, vers Foreman (qui propose un ENC et bien plus), ou vers des tableaux de bord construits directement sur PuppetDB.

Cette page est conservée à titre historique/documentaire pour la maintenance d'installations existantes ; à ne pas utiliser pour un nouveau déploiement.

Installation

Prérequis (procédure historique — les versions de paquets citées ci-dessous, comme RubyGems 1.3.5, datent d'environ 2010 et sont largement obsolètes aujourd'hui ; à adapter entièrement si cette installation devait être reproduite) :

yum install -y mysql mysql-devel mysql-server ruby ruby-devel ruby-irb ruby-mysql ruby-rdoc ruby-ri gcc libcurl-devel openssl-devel zlib-devel gcc-c++
service mysqld start
chkconfig --add mysqld
cd /tmp
wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.5.tgz
tar -xzf rubygems-1.3.5.tgz
cd rubygems-1.3.5
ruby setup.rb
gem install rake

Dépôt PuppetLabs :

vi /etc/yum.repos.d/puppetlabs.repo
[puppetlabs]
name=Puppet Labs Packages
baseurl=http://yum.puppetlabs.com/base/
enabled=1
gpgcheck=1
gpgkey=http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
yum update
yum install puppet-dashboard puppetserver vim-puppet

Configuration

Base de données

Fichier de connexion : /usr/share/puppet-dashboard/config/database.yml

production:
  database: dashboard
  username: dashboard
  password: <mot_de_passe>
  encoding: utf8
  adapter: mysql

Création de la base et de l'utilisateur MySQL :

mysql> CREATE DATABASE dashboard CHARACTER SET utf8;
mysql> CREATE USER 'dashboard'@'localhost' IDENTIFIED BY '<mot_de_passe>';
mysql> GRANT ALL PRIVILEGES ON dashboard.* TO 'dashboard'@'localhost';

Initialisation du schéma :

cd /usr/share/puppet-dashboard
rake RAILS_ENV=production db:create
rake RAILS_ENV=production db:migrate
service puppet-dashboard start

Serveur web (Apache + Passenger)

yum install ruby ruby-libs ruby-devel httpd httpd-devel
gem install passenger
passenger-install-apache2-module

VirtualHost type (chemins de Passenger à adapter à la version installée) :

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.11
PassengerRuby /usr/bin/ruby
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
PassengerStatThrottleRate 120
RailsAutoDetect On

<VirtualHost *:80>
    ServerName dashboard.example.com
    DocumentRoot /usr/share/puppet-dashboard/public/
    <Directory /usr/share/puppet-dashboard/public/>
        Options None
        AllowOverride AuthConfig
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog /var/log/apache2/dashboard.example.com_error.log
    LogLevel warn
    CustomLog /var/log/apache2/dashboard.example.com_access.log combined
    ServerSignature On
</VirtualHost>
service httpd restart

Sans reverse-proxy Apache/Passenger, l'application écoute directement sur le port 3000 :

http://<hostname>:3000

Rapports

Importer des rapports existants (par défaut cherche dans /var/puppet/lib/reports) :

rake RAILS_ENV=production reports:import
rake RAILS_ENV=production reports:import REPORT_DIR=/path/to/your/reports

Purger les rapports de plus de 3 mois :

rake RAILS_ENV=production reports:prune upto=3 unit=mon

Optimiser / sauvegarder / restaurer la base :

rake RAILS_ENV=production db:raw:optimize
rake RAILS_ENV=production db:raw:dump
rake RAILS_ENV=production FILE=/path/to/backup/file.sql db:raw:dump
rake RAILS_ENV=production FILE=production.sql db:raw:restore

Voir aussi

  • Puppet — page hub
  • Puppet enterprise — console de remplacement côté distribution commerciale
  • Foreman — ENC et outil de provisioning de remplacement, actif et maintenu
  • Puppet client — installation de l'agent que ce dashboard classifie