The Foreman

Comme je commence à dépasser les 20 serveurs personnels, je me suis intéressé depuis 2 ans aux solutions d’automatisation.

J’ai utilisé avec plaisir Saltstack jusqu’à très récemment. Mais l’absence d’interface graphique dans la version communautaire aura eu raison de mon intérêt pour le produit : je me tape des lignes de commandes à longueur de journée, si je dois continuer à m’en faire à titre personnel, ça risque de me dégouter.

Ma société a investi récemment dans un Redhat Satellite, en version 6. En discutant avec l’intervenant qui est venu le mettre en place, il m’a dit que celui-ci est basé sur The Foreman (https://theforeman.org/) avec quelques plugins activés par défaut.

Je me suis donc attelé à l’installation d’un Foreman chez moi, pour gérer à la fois mes serveurs virtuels et physiques présents dans ma maison, mais aussi les quelques serveurs virtuels et physiques que je loue chez OVH.

L’installation

J’ai choisi d’avoir mon Foreman sur une centos, car je commence à vraiment m’habituer à cette distribution et à la préférer à Debian que j’utilise pourtant depuis des années.

J’ai donc déployé une VM Centos 7 (à priori The Foreman ne fonctionne pas bien sur la 8 donc je n’ai pas osé essayer) tout ce qu’il y’a de plus classique.

Ensuite, the Foreman est passé sur puppet pour l’installation, donc il faut installer Puppet.

Globalement, après un peu de trial and error, je suis arrivé à cette série de commandes pour obtenir un Foreman fonctionnel (il faut ABSOLUMENT éditer votre fichier /etc/hosts pour ajouter une ligne correspond à votre serveur sinon l’installeur vous enverra bouler) :

sudo yum -y install https://yum.puppet.com/puppet6-release-el-7.noarch.rpm
sudo yum -y install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://yum.theforeman.org/releases/2.1/el7/x86_64/foreman-release.rpm
sudo yum -y install foreman-release-scl
sudo yum -y install foreman-installer
sudo foreman-installer --enable-foreman-cli-ansible \
--enable-foreman-plugin-ansible \
--enable-foreman-proxy-plugin-ansible \
--enable-foreman-cli-remote-execution \
--enable-foreman-plugin-remote-execution \
--enable-foreman-proxy-plugin-remote-execution-ssh \
--enable-foreman-proxy-plugin-remote-execution-cockpit \
--enable-foreman-cli-openscap \
--enable-foreman-plugin-openscap \
--enable-foreman-proxy-plugin-openscap \
--puppet-dns-alt-names home.dyn.oupsman.fr

sudo firewall-cmd --permanent --add-port=53/tcp
sudo firewall-cmd --permanent --add-port=67-69/udp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --permanent --add-port=5910-5930/tcp
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --permanent --add-port=8140/tcp
sudo firewall-cmd --permanent --add-port=8443/tcp
sudo firewall-cmd --reload

Au bout de quelques minutes, vous obtenez un Foreman fonctionnel. Vous noterez l’utilisation du paramètre –puppet-dns-alt-names pour préciser que Puppet doit répondre sur deux noms DNS.

J’ai aussi activé des plugins pour réaliser des tâches à distance via Ansible et des audits de sécurité avec Openscap (ces plugins sont actifs par défaut sur Satellite 6, c’est vraiment très facile à utiliser)

Une fois le Foreman installé, vous arrivez sur une interface un peu vide, vous n’avez qu’un seul serveur actif dessus, le foreman lui même.

Mais on va corriger ça très vite

Installer l’agent Puppet 6 sur votre serveur.

Sur Debian 10 :

# get https://apt.puppetlabs.com/puppet6-release-buster.deb
# dpkg -i puppet6-release-buster.deb
# apt update
# apt install -y puppet-agent

Déconnectez vous et reconnectez vous en tant que root

# puppet agent -td --server foreman.example.com
# puppet config set server foreman.example.com
# puppet agent

Sur Redhat/Centos 8, c’est à peu près identique, mis à part que vous passez les commandes suivantes pour installer l’agent Puppet :

# yum install -y https://yum.puppetlabs.com/puppet6/puppet6-release-el-8.noarch.rpm
# yum install -y puppet-agent

La dernière action (non obligatoire sauf si vous voulez exécuter des playbooks ansible à distance) est de recopier la clé publique de l’utilisateur foreman-proxy dans le fichier authorized_keys de l’utilisateur root de votre serveur.

Je ne vous ferai pas l’insulte de vous donner la commande pour le faire, mais si vous en avez besoin, n’hésitez pas à laisser des commentaires.

Intégration Ansible

Comme j’ai activé Ansible sur The Foreman (j’ai entendu dire que dans les futures versions de RH Satellite, puppet ne sera pas utilisé), j’ai donc commencé à jouer avec Ansible.

Pour ajouter des roles Ansible, il faut les placer dans le répertoire /etc/ansible/roles du serveur Foreman.

On peut les récupérer depuis Galaxy avec les commandes suivantes :

# ansible-galaxy install geerlingguy.ntp -p /etc/ansible/roles/

On peut ensuite affecter les rôles aux serveurs, ou bien aux groupes de serveurs :

Une fois qu’on a affecté ces rôles, on peut les exécuter. Depuis l’écran d’un hôte, on clique sur « Run Ansible Roles » :

Et là, les rôles affectés au serveur démarrent :

On peut ensuite planifier l’exécution de ces rôles en automatique. J’ai choisi ainsi de planifier l’ensemble des rôles à 1h00 du matin toutes les nuits. Ainsi, je suis certain que mes serveurs sont à jour, et supervisés via Zabbix.

The Foreman permet de faire bien plus que ce que j’en fait, en particulier en permettant le déploiement facilité de serveurs virtuels, et autres choses encore.

Mais l’utilisation que je vais en faire va se limiter principalement à la gestion des mises à jour et de l’état de mes serveurs. Je sais que c’est possible (et facile) avec Fedora/Centos/Redhat mais l’utilisation de Katello et Pulp sur Debian n’est pas aisé.

Je posterai des billets en fonction de mes découvertes, bien sûr.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *