Installation du puppet-dashboard (centos 6)

Transcription

Installation du puppet-dashboard (centos 6)
Installation du puppet-dashboard (centos 6)
Introduction
Afin de disposer d'une interface centralisée et synthétique de la santé des serveurs, nous allons utiliser l'outil puppet dashboard. Voici donc
comment il a été installé.
Choix faits
Le serveur puppetmaster sera hébergé sur la même machine que puppet dashboard. De plus, nous utilisons pour le moment webbrick et pas
puppetdb, pour simplifier les choses. Sinon, il faut faire un peu plus de travail de configuration et d'installation. L'installation se fait sur une
Linux CentOS 6.x.
Pré-requis
Il faut que puppet / puppetmaster soient installés et correctement configurés.
Disposer du dépôt puppetlabs.
Commandes d'installation
http://docs.puppetlabs.com/dashboard/manual/1.2/bootstrapping.html
Installation
# Pour installer puppet et puppetmaster, on aurait fait comme suit :
# yum install --enablerepo=puppetlabs-products,puppetlabs-deps puppet facter
puppet-server
# Comme on a désactivé les dépôts de puppetlabs par défaut, on
# les active pour pouvoir faire l'installation.
yum install -y puppet-dashboard --enablerepo=puppetlabs-products,puppetlabs-deps
# Remarque : l'installation précédente ou celle de puppet / puppet-server
installent
# aussi rake, rubygems et ruby-mysql.
# Pour fonctionner, il faut mettre en place un serveur mysql
yum install -y mysql-server
# …
# Création des bases de données pour puppet-dashboard (une pour la prod et le
# développement et une autre pour les tests). Ce sont les recommandations de
# la page d'aide à l'installation de chez puppetlabs.
cat <<EOF > /tmp/dashboard.sql
CREATE DATABASE dashboard CHARACTER SET utf8;
CREATE USER 'dashboard'@'localhost' IDENTIFIED BY '<mot de passe>';
GRANT ALL PRIVILEGES ON dashboard.* TO 'dashboard'@'localhost';
CREATE DATABASE dashboard_test CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON dashboard_test.* TO 'dashboard'@'localhost';
EOF
mysql -u -p<mot de passe> < /tmp/dashboard.sql
Après tout ça, il faut encore modifier le fichier de configuration de base de données de puppet-dashboard :
/usr/share/puppet-dashboard/config/database.yml
diff --git a/database.yml b/database.yml
index 9532a0d..2dbe7c4 100644
--- a/database.yml
+++ b/database.yml
@@ -44,23 +44,23 @@
# be "utf8".
#
production:
- database: dashboard_production
+ database: dashboard
username: dashboard
- password:
+ password: dr1N0uSTash
encoding: utf8
adapter: mysql
development:
database: dashboard_development
database: dashboard
username: dashboard
- password:
+ password: dr1N0uSTash
encoding: utf8
adapter: mysql
+
test:
database: dashboard_test
username: dashboard
- password:
+ password: dr1N0uSTash
encoding: utf8
adapter: mysql
Puis, aussi, le fichier de configuration du dashboard lui-même.
Remarque : il ne faut pas que le certificat (cn_name) existe déjà dans le PKI de puppet. Donc, il ne faut pas mettre le dns du
puppetmaster autrement ça ne fonctionnera pas.
Il faut aussi modifier la configuration de mysql :
/etc/my.cnf
--- /etc/my.cnf.old 2013-02-18 10:01:20.038041982 +0100
+++ /etc/my.cnf
2013-02-19 11:41:07.695047426 +0100
@@ -4,6 +4,7 @@
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
+max_allowed_packet = 32M
[mysqld_safe]
log-error=/var/log/mysqld.log
Maintenant, on peut peupler la base de données. On ne le fait que pour l'environnement de prod parce que ce n'est que celui-ci qu'on utilise
pour l'instant.
Peuplement de la base et test de fonctionnement
# Il *faut* être dans le répertoire d'installation de l'application
# puppet-dashboard
cd /usr/share/puppet-dashboard
rake RAILS_ENV=production db:migrate
# On peut déjà tester que ça marche
# sudo -u puppet-dashboard ./script/server -e production
# puis, aller à http://puppet-test-maitre.example.com:3000/
Ensuite, il faut informer puppet qu'on veut que les informations soient envoyées à puppet-dashboard, notamment au niveau des rapports
envoyés par les clients.
Rapports envoyés au dashboard
# pour les clients
[agent]
report = true
# pour le puppetmaster
[master]
reports = store, http
reporturl = http://puppet-test-maitre.example.com:3000/reports/upload
Enfin, il faut démarrer un ensemble de processus (workers) pour que les rapports remontent vers le dashboard. Autrement, on a des erreurs
du type : pas de rapport encore délivré.
Lancer 4 workers et un processus de monitoring
cd /usr/share/puppet-dashboard
sudo -u puppet-dashboard env RAILS_ENV=production script/delayed_job -p dashboard
-n 4 -m start
À partir de maintenant, on va ajouter certains éléments au dashboard pour qu'il soit plus informatif.
Configuration du dashboard
http://docs.puppetlabs.com/dashboard/manual/1.2/configuring.html
Pour que le dashboard puisse agir sur les clients puppet plutôt que de remonter seulement les informations du bon déroulement de
l'application des manifestes et catalogues, il faut prendre en compte la gestion des clés de chiffrage.
On commence par modifier la config du dashboard :
/usr/share/puppet-dashboard/config/settings.yml
diff --git a/settings.yml b/settings.yml
index 35d6636..bd8191a 100644
--- a/settings.yml
+++ b/settings.yml
@@ -23,13 +23,13 @@ private_key_path: 'certs/dashboard.private_key.pem'
public_key_path: 'certs/dashboard.public_key.pem'
# Hostname of the certificate authority.
-ca_server: 'puppet'
+ca_server: 'puppet-test-maitre.example.com'
# Port for the certificate authority.
ca_port: 8140
# Key length for SSL certificates
-key_length: 1024
+key_length: 4096
# The "inventory service" allows you to connect to a puppet master to retrieve and
node facts
enable_inventory_service: false
On a aussi changé la longueur des clés, juste comme ça.
Mise en place des clés de chiffrement pour le dashboard
cd /usr/share/puppet-dashboard
sudo -u puppet-dashboard rake cert:create_key_pair
sudo -u puppet-dashboard rake cert:request
# Ces actions auront produit une demande de validation de clé
# au niveau du _puppetmaster_. Il faut la valider.
puppet cert sign dashboard
# récupération du certificat par le dashboard
sudo -u puppet-dashboard rake cert:retrieve
Pour pouvoir fouiller dans les facts renvoyés par les clients puppet par l'intermédiaire de facter, on ajoute un inventaire. Il faut encore
modifier la config du dashboard.
/usr/share/puppet-dashboard/config/settings.yml
diff --git a/settings.yml b/settings.yml
index bd8191a..1080ba4 100644
--- a/settings.yml
+++ b/settings.yml
@@ -32,10 +32,10 @@ ca_port: 8140
key_length: 4096
# The "inventory service" allows you to connect to a puppet master to retrieve and
node facts
-enable_inventory_service: false
+enable_inventory_service: true
# Hostname of the inventory server.
-inventory_server: 'puppet'
+inventory_server: 'puppet-test-maitre.example.com'
# Port for the inventory server.
inventory_port: 8140
Il faut aussi changer les autorisation d'accès aux répertoires de puppet.
/etc/puppet/auth.conf
diff --git a/auth.conf b/auth.conf
index 56a87ca..dad3af2 100644
--- a/auth.conf
+++ b/auth.conf
@@ -94,7 +94,14 @@ auth any
method find, save
allow *
+# ajouté pour dashboard http://docs.puppetlabs.com/dashboard/manual/1.2/configuring.html
+path /facts
+auth no
+method find, search
+allow dashboard, puppet-test-maitre.univ-lorraine.fr
+
# this one is not stricly necessary, but it has the merit
# of showing the default policy, which is deny everything else
path /
auth any
Plus le fichier site.pp pour avoir la recherche dans les fichiers remplacés par les opérations de puppet.
/etc/puppet/manifests/site.pp
diff --git a/manifests/site.pp b/manifests/site.pp
index b763c68..ded5a4b 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -8,3 +8,10 @@ $mysql_password="<le mot de passe>"
import "nodes"
import "modules"
+# obligatoire pour dashboard / files http://docs.puppetlabs.com/dashboard/manual/1.2/configuring.html
+filebucket { "main":
+ server => "{your puppet master}",
+ path => false,
+}
+
+File { backup => "main" }
Il faut dire aux clients puppet de faire des archives de leurs fichiers modifiés.
/etc/puppet/puppet.conf
diff --git a/puppet.conf b/puppet.conf
index 66feadd..843a85b 100644
--- a/puppet.conf
+++ b/puppet.conf
@@ -31,6 +31,8 @@
report = true
reports = store
+
# pour dashboard http://docs.puppetlabs.com/dashboard/manual/1.2/configuring.html
+
archive_files = true
[master]
reports = store,http
Et enfin, encore une petite modif des paramètres du dashboard pour avoir les archives des fichiers modifiés par puppet.
/usr/share/puppet-dashboard/config/settings.yml
diff --git a/settings.yml b/settings.yml
index 1080ba4..58a15b3 100644
--- a/settings.yml
+++ b/settings.yml
@@ -42,10 +42,10 @@ inventory_port: 8140
# Set this to true to allow Dashboard to display diffs on files that
# are archived in the file bucket.
-use_file_bucket_diffs: false
+use_file_bucket_diffs: true
# Hostname of the file bucket server.
-file_bucket_server: 'puppet'
+file_bucket_server: 'puppet-test-maitre.example.com'
# Port for the file bucket server.
file_bucket_port: 8140
Il faut encore redémarrer le dashboard.
Relancement du dashboard
service puppet-dashboard restart

Documents pareils