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