Aller au contenu | Aller au menu | Aller à la recherche

Installer Kibana par Puppet (5/5)

kibana-logoA présent, que tout est correctement installé, il ne reste plus qu'à configurer l'ensemble pour que Kibana se déploie sans soucis.

  • Configuration du Foreman-Proxy

L'intérêt de Foreman est la forte intégration à Puppet. En effet, une fois les deux applications correctement configurés, Puppet peut très bien être configurés intégralement à travers l'interface Web de Foreman et sans plus mettre à jour les fichiers de configuration. Foreman s'occupe de tout, automatiquement ! :siffle: Toutefois, Foreman n'étant lui-même qu'une interface Web passive, il n'a pas les compétences pour la collecte d'information de la part de Puppet. La solution consiste à utiliser un Smart Proxy réalisant cette tâche... Or, le hasard faisant bien les choses, Foreman fournit justement un Smart Proxy personnalisé, le bien nommé Foreman-Proxy :-D (Pour ceux qui n'ont pas compris, c'est ce Smart Proxy que j'ai décidé de configurer)
A l'instar de Foreman, Foreman-Proxy tourne grâce à Ruby et nécessite de se connecter à la base de données pour la collecte et le dépot d'informations. Ainsi, il faut installer la bibliothèque permettant à Ruby de se connecter, dans notre cas, à MySQL.

[root@sophie conf.d]# yum -q -y install ruby-mysql
[root@sophie conf.d]# service foreman-proxy restart

Le proxy écoutant sur le port 8443, il ne faut pas oublier d'ajouter une nouvelle règle pour iptables dans /etc/sysconfig/iptables.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT
  • Configuration du Foreman-Proxy et de Foreman

Tout d'abord, Foreman dispose de deux modes d'utilisations (Désolé pour les anglicismes, j'ai pas trouvé de bonne traduction :-(

  • Le mode attended permet la gestion de machines déjà installés et sur lesquels Puppet est déjà installé. La configuration est plus rapide mais nécessite une intervention initiale sur les serveurs à déployer.
  • Le mode unattended permet la gestion de machines dès l'installation, moment où sont créés les modèles d'installation (Preseed ou Kickstart). La configuration est plus complète mais permet la totale automatisation du processus de déploiement.

Par défaut, Foreman s'installation en mode unattended, mais nécessite donc énormement d'information sur le serveur à configurer (Adresse MAC, domaine, etc.). A moins d'avoir un réel besoin d'installer des serveurs via Foreman, mieux vaut désactiver l'option, c'est plus rapide. Dans mon cas, ma machine cliente charlotte étant déjà installé, je n'en ai pas besoin et l'ai donc désactivé :

[root@sophie conf.d]# sed -i "s/:unattended: true/:unattended: false/g" /etc/foreman/settings.yaml
[root@sophie conf.d]# service httpd restart

L'avantage d'utiliser un Smart Proxy, c'est que cela rend vraiment la gestion de Foreman plus simple ;-) En deux trois coups de Puppet à pot, on peut obtenir un environnement fonctionnel.

  1. Se connecter à Foreman avec les droits d'administrateur
  2. Créer un nouveau Smart Proxy dont l'URL est https://sophie.localdomain:8443
  3. Dans Settings, changer le modulepath en /etc/puppet/svn/modules
  4. Dans Settings, changer le puppet_server en sophie.localdomain
  5. Dans Settings, changer le foreman_url en sophie.localdomain
  6. Dans Settings, changer le remote_addr en 127.0.0.1
  7. Dans Environnment, cliquer sur Import from Proxy et importer environnements et classes

C'est tout 8-) Le serveur est dorénavant bien configuré ! Il ne reste qu'à ajouter des serveurs à la liste des Hosts.

[root@sophie ~]# puppetd -t

En saisissant la commande ci-dessus sur sophie, ce serveur-ci est ajouté au Foreman.

  • Intégration de charlotte dans Foreman

Tout d'abord, comme rien n'est encore installé sur charlotte, il faut commencer par installer le client Puppet afin que ce serveur puisse communiquer avec le PuppetMaster. Le package nécessaire se trouvant dans les sources EPEL, on ajoute un lien pour YUM vers ce dépot :

[root@charlotte etc]# cat > /etc/yum.repos.d/epel.repo << EOF
[epel]
name=epel
baseurl=http://mirrors.ircam.fr/pub/fedora/epel/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.ircam.fr/pub/fedora/epel/RPM-GPG-KEY-EPEL-6
EOF

On peut alors installer le client demandé :

[root@charlotte etc]# yum -q -y install puppet

A présent, le client est installé. Toutefois, la configuration du fichier /etc/puppet/puppet.conf est celle par défaut et ne correct pas à la configuration présente. Il faut donc modifier ce fichier.

[root@charlotte etc]# cat >> /etc/puppet/puppet.conf << EOF
report      = true
pluginsync  = true
masterport  = 8140
environment = production
certname    = charlotte.localdomain # le FQDN du serveur client
server      = sophie.localdomain # le FQDN du puppetmaster
listen      = false
EOF

Il ne reste pas qu'à lancer une requête auprès du serveur Puppet...

[root@charlotte etc]# puppetd -t

...requête qui plantera lamentablement... Car, oui! charlotte n'ayant pas été ajouté au PuppetMaster, celui-ci refuse la connexion, prétextant qu'il ne reconnait pas ce client (ce qui n'est pas entièrement faux, il faut le reconnaître...). Toutefois, le serveur sophie a noté le fingerprint de charlotte et l'a placé en attente de validation. Ainsi, si ce serveur est considéré comme validé, il obtiendra l'insigne honneur de communiquer avec cette bonne sophie. Sur le serveur, on peut faire la liste des serveurs en attente de validation.

[root@sophie puppet]# puppetca -l
"charlotte.localdomain" (75:65:48:27:49:F0:6F:2C:F4:D6:B5:8B:A7:7A:EA:0C)

Il suffit alors de signer ce serveur (c'est-à-dire reconnaître sa clé SSH) pour qu'il soit considéré comme validé par le serveur

[root@sophie puppet]# puppetca -s charlotte.localdomain

Ceci étant fait, il ne reste qu'à relancer une requête auprès du serveur Puppet, via le client.

[root@charlotte etc]# puppetd -t

Tout un ensemble d'informations appraissent (heureusement en vert :-D ), preuve que le client a bien été reconnu par le serveur. Toutefois rien d'autre ne se passe... Cela s'explique par le fait que, bien que le client est reconnu, aucun module n'a été chargé à partir du serveur. Une honte ! C'est donc le moment de procéder à l'installation de Kibana :oops:

  • Installation du serveur Kibana

Comme j'ai indiqué sur la première page de ce tutoriel, Kibana est très simple à installer, sauf quand il n'y a pas de réseau et là, ça devient un enfer (foutues Gems :-C ). Hormi, ce fait, il faut installer des serveurs ElasticSearch et Redis, sans oublier LogStash qui a pour tâche d'expédier les flux qui vont bien là où il faut ; bref, un beau foutoir à configurer. Pour simplifier l'installation de toutes les machines, j'ai donc créé un module kibana pour Puppet et c'est ce module qui se chargera de tout installer.
On télécharge donc les fichiers du module de classe et on les charge sur sophie grâce à Subversion :

[jbl@bulow ~]$ wget http://www.jesuisungeek.com/public/files/rhel/kibana-puppet.tar.gz -O - | tar zxvf - -C /répertoire/dépot/svn/local
[jbl@bulow ~]$ cd /répertoire/dépot/svn/local
[jbl@bulow local]$ svn add kibana && svn commit

Dans le cas où, comme indiqué plus haut, il est impossible de télécharger à partir d'Internet sur notre client SVN, les fichiers d'archives sont attachés à ce post. Dans ce cas, il suffit de transférer et tout décompresser dans le répertoire du dépot SVN local avant de l'ajouter à SVN

Grâce à la magie des hooks, le serveur SVN a été mis automatiquement à jour et il ne reste plus qu'à mettre à jour les modules gérés par Foreman. Pour cela, sur le Foreman de sophie

  1. Dans les options, choisir l'option Puppet Classes, puis cliquer sur Import pour ajouter la nouvelle classe kibana.
  2. Ajouter la classe kibana à sophie
  3. Ajouter la classe kibana::server à charlotte
  4. Aller dans Global Parameters et ajouter une variable kibana_server (ici : 192.168.1.48)

Foreman - Puppet classes Il ne reste plus qu'à déployer les classes demandés sur charlotte et sophie. Toutefois, les deux serveurs échangeront les informations à logguer via Redis, ne pas oublier d'ouvrir le port nécessaire (ici 161) en ajoutant une nouvelle règle pour iptables dans /etc/sysconfig/iptables.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 161 -j ACCEPT

Ensuite, il ne reste qu'à relancer l'agent Puppet sur les deux serveurs

[root@charlotte etc]# puppetd -t
[root@sophie etc]# puppetd -t

Après que Puppet ait déroulé les informations de modification de configuration, il suffit d'attendre quelqus minutes (le temps que l'ensemble des logs commence à être remonté) pour se connecter à http://charlotte:8080 pour constater le bon fonctionnement de l'ensemble.
Kibana - Fonctionnement

QR code
Jean-Baptiste Langlois

Auteur: Jean-Baptiste Langlois

Restez au courant de l'actualité et abonnez-vous au Flux RSS de cette catégorie

Commentaires (0)

Soyez le premier à réagir sur cet article

Ajouter un commentaire Fil des commentaires de ce billet

:-) ;-) :-/ :mdr: :-D :-( :-C 8-) :-O :-s :siffle: :-P :love: :oops: :money: :caca:


À voir également

Icinga avec LDAPS

Connexion en LDAPS avec Icinga

Authentification sur Icinga via un serveur LDAP nécessitant un certificat

Lire la suite

icinga-api-2.PNG

Remonter les checks Icinga grâce à Ruby

Classe Ruby permettant de remonter des informations grâce à l'interface REST de Icinga-Web

Lire la suite