Installer Kibana par Puppet (5/5)
Publié le lundi 11 février 2013, 15:50 - modifié le 13/02/13 - Bidouilles - Lien permanent
- Article
- |
- Commentaires (0)
- |
- Annexes (1)
A 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 ! 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 (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.
- Se connecter à Foreman avec les droits d'administrateur
- Créer un nouveau Smart Proxy dont l'URL est
https://sophie.localdomain:8443
- Dans Settings, changer le modulepath en
/etc/puppet/svn/modules
- Dans Settings, changer le puppet_server en
sophie.localdomain
- Dans Settings, changer le foreman_url en
sophie.localdomain
- Dans Settings, changer le remote_addr en
127.0.0.1
- Dans Environnment, cliquer sur
Import from Proxy
et importer environnements et classes
C'est tout 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 ), 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
- 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 ). 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
- Dans les options, choisir l'option
Puppet Classes
, puis cliquer surImport
pour ajouter la nouvelle classekibana
. - Ajouter la classe
kibana
àsophie
- Ajouter la classe
kibana::server
àcharlotte
- Aller dans Global Parameters et ajouter une variable
kibana_server
(ici : 192.168.1.48)
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.