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

Installer Kibana par Puppet (2/5)

kibana-logoSuite de nos aventures avec, aujourd'hui, la configuration de Foreman et Puppet sur sophie.

Un peu de sécurité


Au terme de l'installation de Foreman, il faudrait que le service Web soit accessible de bulow car c'est plus facile d'avoir de gérer une interface Web avec un navigateur moderne plutôt qu'un truc en ligne de commande comme lynx (En plus, je suis pas sûr que lynx et l'Ajax soient très copains...) donc il va falloir permettre les connexions extérieures à sophie.
Pour ce faire, il faut ajouter les lignes suivantes dans le fichier /etc/sysconfig/iptables :

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

Attention à bien ajouter ces lignes avant l'instruction COMMIT car, dans le cas contraire, elles ne seront pas prises en compte

Ne pas oublier de rédemarrer pour appliquer la nouvelle configuration :

[root@sophie foreman]# service iptables restart

Dans le même ordre d'idées, Passenger et SELinux n'étant pas très enclins à se faire des bisous, j'ai désactivé SELinux. Si quelqu'un trouve une meilleure péthode, je suis tout ouïe...

[root@sophie httpd]# echo 0 >/selinux/enforce
[root@sophie httpd]# cat > /etc/selinux/config << EOF
SELINUX=disabled
SELINUXTYPE=targeted
EOF


Attaquons les choses sérieuses !


Bon, voilà que les prérequis sont là, on va pouvoir attaquer les choses sérieuses et installer Puppet et Foreman. En fait, si on se réfère au site de Foreman, on comprend que ce qui est nommé installeur est en fait une ligne d'instruction permettant de télécharger et d'installer Foreman grâce à Puppet. Ainsi, la première chose à faire est de s'occuper de Puppet.

C'est pour cela qu'on installe... MySQL !! En effet, tant Puppet que Foreman ont besoin d'une base de données pour enregistrer leur configuration, donc on a, avant toute chose, besoin d'une base de données. A noter que sqllite fait aussi l'affaire mais je ne connais pas du tout ce SGBDR (D'ailleurs, c'est un SGBDR ?? :-s )
Du coup, on commence par un petit :

yum install mysql-server

Suivi d'un non moins utile :

mysqladmin -u root password 'MotDePasseTropBienDeLaMort'

car, à l'installation (et alors là, ça dépend de : la version, du packageur et de l'âge du capitaine !), il arrive que le mot de passe root ne soit pas (ou mal) défini, donc c'est mieux de le resaisir. A noter que j'ai pris MotDePasseTropBienDeLaMort comme mot de passe parce que j'aime trop les blagues trop LOL, mais on est libre de choisir n'importe quel autre mot de passe (tel que Pastis51 ou encore Biere1664). Il ne reste plus qu'à créer la base de données pour puppet ainsi que l'utilisateur qui aura le droit de se connecter à cette base :

[root@puppet ~]# mysql -u root -p
mysql> CREATE DATABASE puppet;
mysql> GRANT ALL ON puppet.* TO puppet@localhost IDENTIFIED BY 'MotDePasseTropBienDifferentDeRoot';


Histoire de ne pas réinventer la roue, on peut gagner du temps en installant directement les RPMs existants de Puppet. Comme les RPMs sont packagés par EPEL, on ajoute ce dépot :

[root@sophie yum.repos.d]# cat /etc/yum.repos.d/epel.repo 
[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

Puis on installe les outils nécessaires :

[root@sophie yum.repos.d]# yum -y -q install puppet-server puppet

Bon, avec le jeu des dépendances, puppet seul n'est pas installé. Augeas et Facter font partie de la bande, aussi, hein (Facter est d'ailleurs fondamental pour l'installation de Foreman). Il ne reste plus qu'à configurer puppet de façon à ce qu'il puisse stocker la configuration de chaque client dans notre toute nouvelle et pimpante base de données MySQL.
Pour ce faire, il éditer le fichier /etc/puppet/puppet.conf, puis repérer la partie débutant par master et y ajouter les lignes suivantes (En prenant soin, bien entendu de faire correspondre MotDePasseTropBienDifferentDeRoot avec le mot de passe défini pour l'utilisateur puppet dans la base de données éponyme).

storeconfigs = true
dbadapter = mysql
dbuser = puppet
dbpassword = MotDePasseTropBienDifferentDeRoot
dbserver = localhost
dbsocket = /var/lib/mysql/mysql.sock


MySQL est fonctionnel, Puppet se porte comme un charme, le grand moment est arrivé 8-) ! Installons Foreman!
Comme indiqué précédemment, Foreman nécessite une installation correct de Puppet car c'est au travers de ce dernier qu'il s'installe. En effet, l'installeur (tel qu'il est appelé), télécharge dans un premier temps les packages nécessaire à partir de Git, puis applique la configuration grâce à Puppet.

export MODULE_PATH="/etc/puppet/modules/common" 
mkdir -p $MODULE_PATH
for mod in apache foreman foreman_proxy git passenger puppet tftp xinetd; do
  mkdir -p $MODULE_PATH/$mod
  wget http://github.com/theforeman/puppet-$mod/tarball/master -O - | tar xzvf - -C $MODULE_PATH/$mod --strip-components=1
done;

Dans le cas où l'on doit réaliser une installation de Foreman sans réseau, il faut télécharger les fichiers suivants :

http://github.com/theforeman/puppet-apache/tarball/master
http://github.com/theforeman/puppet-foreman/tarball/master
http://github.com/theforeman/puppet-foreman_proxy/tarball/master
http://github.com/theforeman/puppet-git/tarball/master
http://github.com/theforeman/puppet-passenger/tarball/master
http://github.com/theforeman/puppet-puppet/tarball/master
http://github.com/theforeman/puppet-tftp/tarball/master
http://github.com/theforeman/puppet-xinetd/tarball/master

et les décompresser dans le répertoire /etc/puppet/modules/common du serveur Puppet.

Il ne reste plus qu'à faire executer les fichiers de configuration par Puppet :

echo include puppet, puppet::server, foreman, foreman_proxy | puppet apply --modulepath /etc/puppet/modules/common

La bécane devrait turbiner pendant quelques minutes, affichant de temps en temps des jolis messages en couleurs (tant que c'est que du bleu, c'est bon ;-) ).

Si le programme sort avec une erreur indiquant qu'il n'arrive pas à trouver le Fact fqdn, éditer le fichier /etc/syconfig/network, puis rajouter un domaine au hostname (.localdomain, ça claque :mdr: ), avant de redémarrer et de relancer la commande d'installation.

Durant l'installation, diverses tâches sont effectués : modification des scripts Puppet, configuration d'Apache (Foreman s'exécutant via Passenger, l'installeur configure Apache en ce sens) ou encore ajout d'un repository de RPMs pour la gestion de plugins pour Foreman. De ce fait, peu de tâches sont nécessaires en post-install. Toutefois, il faut faire s'interfacer Foreman avec l'environnement existant. Dans notre cas, il faut qu'il puisse s'enregistrer dans la base de données.
On installe donc le plugin de gestion de MySQL :

[root@sophie foreman]# yum -y -q install foreman-mysql2

Puis, on lui précise les informations de connexion à la base de données précedemment créée (En prenant soin, bien entendu de faire correspondre MotDePasseTropBienDifferentDeRoot avec le mot de passe défini pour l'utilisateur puppet dans la base de données éponyme) :

[root@sophie foreman]# cat > /etc/foreman/database.yml << EOF 
production:
  adapter: mysql2
  database: puppet
  username: puppet
  password: MotDePasseTropBienDifferentDeRoot
  host: localhost
  socket: "/var/lib/mysql/mysql.sock"
EOF

Faire bien attention à l'identation, celle-ci est primordiale, ici !

On peut alors lancer la création et le remplissage des tables, puis redémarrer Apache pour prendre en compte la nouvelle configuration de Passenger.

[root@sophie foreman]# cd /usr/share/foreman
[root@sophie foreman]# RAILS_ENV=production rake db:migrate
[root@sophie foreman]# service httpd restart

Voilà, c'est installé ! Un petit http://sophie, à partir de bulow, fait apparaitre la fenêtre de connexion classique de Foreman. Par défault le login est admin et le mot de passe est changeme.

Foreman - Login

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:

no attachment



À 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