Installeur Foreman
Rendu
Ce travail va occasionner un rendu, vous devez faire un rapport avec les commandes que vous tapez, les problèmes que vous rencontrez éventuellement et un screenshot des différents pint où vous arrivez.
De plus, il faudra me fournir une archive contenant pour le serveur foreman :
- les répertoires
/etc/foreman
/etc/foreman-installer/
/etc/foreman-proxy/
/etc/dhcpd/
/var/lib/tftpboot
/etc/bind
,/var/cache/bind/
,/var/lib/dhcp/
- les fichiers
/etc/host
,/etc/hostname
,/etc/default/ftfp-hpa
- le fichier résultat de la commande
sudo -u postgres pg_dump foreman > dump_postgres.sql
Prérequis
Le serveur foreman que vous allez configurer :
- Doit avoir suffisamment de mémoire (3Go). Pour limiter la mémoire utiliser, il vaut mieu éviter de lancer le serveur X et se connecter dessus en ssh et https depuis votre ordinateur.
- Doit avoir une interface dans le réseaux privé fourni par virtualbox.
- Doit avoir accès à internet (voir Quelques trucs)
- Doit avoir un nom FQDN (modifiez s'il le faut le fichier
/etc/hostname
). Le domaine doit terminer par.fr
- Doit avoir connaitre sont adresse à partir de ce nom donc ajoutez dans
/etc/hosts
192.168.56.2 nomdelamachine.domain.fr
où 192.168.56.2
doit être l'adresse de votre serveur dans le réseau privé et nomdelamachine.domain.fr
doit être le nom de votre serveur.
Cas d'un serveur debian
Les local anglaises américaines doivent être présente. Ce n'est pas forcement le cas si vous avez installé un serveur debian en francais. Utilisez dpkg-reconfigure locales
pour les installer
foreman-installer
La meilleur façon d'installer foreman est d'utiliser le l'installeur automatique. Voir https://theforeman.org/manuals/2.0/quickstart_guide.html
C'est un logiciel basé sur puppet il s'occupera d'installer tous les logiciels nécessaires et de les configurer. Vous aurez souvent à l'utiliser pour modifier les configurations ou mettre à jour les outils.
- Suivez les instructions de la page de foreman
- Lancer l'installeur foreman pour obtenir le résultat :
* Foreman is running at https://theforeman.example.com Initial credentials are admin / 3ekw5xtyXCoXxS29 * Foreman Proxy is running at https://theforeman.example.com:8443 * Puppetmaster is running at port 8140 The full log is at /var/log/foreman-installer/foreman-installer.log
L'adresse du serveur doit être celle de votre machine. Il est très important que ce nom soit celui de la machine et que cette dernière puisse le résoudre en obtenant sa propre adresse (voir les prérequis)
- Notez bien le mot de passe administrateur, si vous le perdez
- Connectez-vous sur le serveur web foreman
Configuration
Relancez l'installeur mais avec l'option -i
pour modifier les configurations avant l'installation.
Le but est de configurer le foreman-proxy
. En effet, ce dernier est l'agent qui va effectivement gérer les services nécessaires à l'installation automatique : un serveur tftp; un serveur dhcp et un serveur dns.
Il s'agit de la configuration 11 du menu principal. Vérifiez :
- que le module foreman-proxy est actif (option 1)
que le module puppet est inactif (option 12)- puis dans la configuration du foreman_proxy (option 11)
- que le serveur tftp est actif (option 61) et notez dans le rapport les fichiers le répertoire racine tftp (celui où se trouveront tous les fichiers permettant le démarrage PXE)
- que le serveur dhcp est actif (otion 70)
- que les valeurs de
subnets
,option_domain
,dhcp_interface
,gateway
,range
, range sont correctes et remplir les valeurs vides. Ces paramètres doivent correspondre à votre configuration. Pour le range dhcp, utiliser les adresse .200 à .230 de votre réseau. - Ajoutez la gestion du serveur dns (option 94)
- Revenez au menu principale et lancer l'installation save and run).
Cette opération a installé les modules nécessaires au serveur foreman. Il faut maintenant configurer la base via l'interface web. Sur cette interface, configurer le sous réseau et le domaine DNS (dans infrastructure, en français, un problème de traduction fait apparaitre 2 panneau de configuration du domaine, il s'agit du premier).
A ce stade, les services DHCP, tftp et DNS doivent être installés sur votre serveur avec des configurations de base. Vérifiez dans les fichiers de configuration :
- Pour le serveur dhcp que
- le service est présent
- le fichier de configuration permet le boot PXE avec l'option
nextserver
, lesfilename
correctes (le serveur tftp pour le boot doit être votre serveur) - que la configuration du DNS est cohérente : les options
domain-name
etdomain-name-server
doivent correspondre à votre domaine et votre serveur. - le sous réseau privé virtual box est présent, donne bien le bon gateway, le pool d'adresse configuré …
- Pour le serveur tftp :
- la configuration dans
/etc/default/tftp-hpa
- la présence du fichier
pxelinux.0
dans la racine du serveur/var/lib/tftpboot/
- Pour le serveur dns :
- la présence de la zone DNS correspondant à votre machine dans
/etc/bind/zones.conf
- la présence du nom et de l'adresse IP de votre serveur dans le fichier de configuration de la zone (
/var/cache/bind/zones/db.nom.de.la.zone
).
Si vous créez une nouvelle machine virtuelle qui boot sur le réseau, cette dernière devrait avoir un adresse IP, télécharger l'image PXE mais faire une erreur car elle ne trouve pas de fichier de configuration PXE par défaut. Pour remédier à cela, nous allons créer ce fichier et installer un outils de découverte.
Plugin discovery
- Via le foreman installer, activez le
plugin discovery
et leforeman_proxy_plugin_discovery
. - Pour le proxy activez aussi l'option
install_image
afin qu'il télécharge automatiquement le micro noyau permettant la découverte de la machine.
Après avoir activé les changement, retournez dans l'interface web et dans Hotes→Modèle de provisionning
cliquer sur le bouton Créer fichier PXE par défaut
.
Vous devriez maintenant avoir :
- un fichier de boot PXE par défaut dans
/var/lib/tftpboot/pxelinux.cfg/
- un ensemble de fichier pour le démarrage dans
/var/lib/tftpboot/boot/fdi-image
Il faut rester le fonctionnement avec une VM qui boot sur le réseau privé de virtualbox. Via le boot réseau vous devez arriver au menu PXE qui vous propose de démarrer sur l'image Foreman discovery image.
Faites le, si la démarche est un succès, la machine sera enregistrée dans foreman (Hotes→Discovered hosts
).
Idéalement, il faut rendre le discovery automatique en modifiant l'image lancée par défaut lors du premier démarage. Pour cela il faut modifier la valeur de l'option ONTIMEOUT
du fichier /var/lib/tftpboot/pxelinux.cfg/default
ONTIMEOUT discovery
Instanciation d'une machine
Pour instancier une machine, il faut que les options du serveur foreman soient bien configurées malheureusement ce dernier est (inutilement?) configurable et complexe. Pour instancier la machine découverte, il faut un Host group fonctionnel,Créez en un et dans chaque onglet, vous devez remplir les champs suivants :
- Groupes d'hôtes
- l'environnement
- puppet master
- puppet CA
- Réseau
- Domaine (le premier uniquement, le second est le realm kerberos)
- Sous réseau IPv4
- Système d'exploitation
- Architecture (x86_64)
- Système d'exploitation (ubuntu 18.04)
- Media (Ubuntu mirror)
- Table de partition
- Chargeur PXE
- Emplacement
- Default location doit être sélectionné
- Organistion
- Default organization doit être sélectionné
Si le serveur ne propose pas un champs pour certaines de ces valeurs, c'est qu'il lui manque une association entre les différents paramètres. En effet, Tout système d'exploitation ne convient pas à toute architecture, il faut donc associer à la main la possibilité de lancer le système ubuntu
sur l'architecture x86_64
.
La première chose est donc de choisir un jeu possible de parametres via les configurations.
Par exemple,
- Le modèle de provisionnement
preseed default
doit être associé à un systèmeubuntu 18.04.4 LTS
(C'est un template de configuration de l'installeur automatique de distribution basée sur debian). Pour cela dansHotes→modèles de provisioning
retrouver le modèlepreseed default
et associez le au système. - Pour simplifier les choses , il faut aussi configurer le système
ubuntu 18.04.4 LTS
pour qu'il utilise ce modèle. Cela se passe dans la configuration du systèmeHotes→Système d'explouitation→ubuntu 18.04.4 LTS→Modèles
Voila une liste des choix possibles que vous pouvez essayer pour installer une ubuntu (je m'excuse par avance d'un oubli).
preseed default
(un modèle de provisioning) doit être associé àubuntu 18.04.4 LTS
preseed default PXELinux
(modèle de configuration du boot PXE) doit être associé àubuntu 18.04.4 LTS
pressed default finish
(modèle de terinaison) doit être associé àubuntu 18.04.4 LTS
- Le système
Ubuntu 18.04.4 LTS
doit avoir :- L'architecture
x86_64
, - la table de partition
preseed default
, - le media
ubuntu mirror
- le modèle de provisionnement
preseed default
- le modèle PXE
preseed default PXELinux
Si tout cela est correcte, cela devrait permettre ensuite de remplir correctement le groupe d'hôtes.
* Après avoir configuré le groupe d'hôte, tentez l'installation de la machine virtuelle découverte au chapitre précédent. Allez dans discovered host
et pour la machine découverte choisissez l'action “provisionner” puis personnaliser l'hôte. Il faut alors vérifier et remplir effectivement les champs avec les valeurs par défaut qui proviènnent du groupe d'hôte.
Pour correctement s'intaller, une machine doit trouver 3 modèle
- un modèle pour le boot PXE pour démarrer (il sera placé dans la configuration dans
tftpboot/pxelinux.cfg
; - un modèle pour l'installeur preseed (qui sera téléchargé au démarrage de l'installeur preseed);
- un modèle de finish qui est téléchargé et exécuté à la fin de l'installation (pour signaler la fin de l'installation au serveur et exécuter qq scripts de configuration).
Petit conseil, lors de la création de l'hôte dans l'onglet Système d'exploitation
en bas du panneau, il est proposé de résoudre les Modèles de provisionnement, dans mon expérience, il ne trouve que les modèles de boot et de provisionning, il manque le modèle de finish. Par contre une fois le lancement de l'installation fait, le panneau de contrôle de la nouvelle machine propose bien les 3 modèles.
Quelques trucs
Mot de passe foreman
Avec foreman-installer
le mot de passe initial est dans le fichier /etc/foreman-installer/scenarios.d/foreman-answers.yaml
Si vous l'avez perdu, vous pouvez utiliser le processus de récupération ici
foreman-rake permissions:reset
Accès à internet pour le réseau privé
Idéalement, il faudrait que vous puissiez vous connecter au serveur foreman en ssh et en web que les machine de ce réseau est un accès à internet via le NAT et que les VM puissent se contacter, notamment que le serveur foreman puisse jouer le rôle DHCP dans le réseau. Pour cela il y a 2 choix (à prendre selon votre situation).
Via un réseau privé
Dans un réseau privé virtualbox, les machines présentes peuvent communiquer, il est possible de gérer ou non le dhcp et enfin, la machine hôte à une interface dans ce réseau. Mais virtualbox ne prend pas en charge le NAT, il faut donc le configurer à la main. Sous linux c'est relativement simple.
* Vérifiez que le forwarding IP est en place
[root@horus ~]# cat /proc/sys/net/ipv4/ip_forward 1 Ou [root@horus ~]# sysctl -a | grep ip_for net.ipv4.ip_forward = 1
Si ce n'est pas le cas corrigez :
# passer par un fichier rend la chose permanente [root@horus ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-ajoutipforward.conf [root@horus ~]# sysctl -p /etc/sysctl.d/99-ajoutipforward.conf net.ipv4.ip_forward = 1
- ajouter les règles iptables utiles
iptables -t nat -A POSTROUTING -s 192.168.56.0/24 ! -o vboxnet0 -j MASQUERADE # eventuellement supprimer les soucis de parefeu iptables -t filter -I FORWARD -o vboxnet0 -j ACCEPT iptables -t filter -I FORWARD -i vboxnet0 -j ACCEPT
Où vboxnet0 est l'interface crée par virtualbox pour votre VM
Cette configuration n'est pas permanente, ce qui est une bonne chose mais peut être compliqué au cas où votre machine reboote.
Pour la rendre permanente, vous pouver utiliser le fichier /etc/rc.local
qui est exécuté à chaque démarrage. Il n'existe pas forcement donc créer le fichier ou ajouter ces lignes dedans.
#!/bin/sh -e # la ligne précédente est peut être déjà présente iptables -t nat -A POSTROUTING -s 192.168.56.0/24 ! -o vboxnet0 -j MASQUERADE # eventuellement supprimer les soucis de parefeu iptables -t filter -I FORWARD -o vboxnet0 -j ACCEPT iptables -t filter -I FORWARD -i vboxnet0 -j ACCEPT
Rendez le fichier exécutable chmod a+x /etc/rc.local
Ensuite, il faut configurer la VM pour avoir une bonne configuration réseau :
- le DNS est un DNS existant (par exemple google: 8.8.8.8 ou celui de chez vous)
- la gateway est l'adresse de votre ordi (hote vbox) dans le réseau
- …
Voir plus bas la configuration via netplan des réseaux sous ubuntu
Via un réseau privé NAT
Dans ces réseau, virtualbox prend en charge le NAT, il est possible aux machines de communiquer, de désactiver le DHCP, mais l'hote n'a pas d'accès à ce réseau. Pour avoir un accès ssh/web à foreman, il faut utiliser les transfert de port.
Selon l'interface graphique de Virtualbox, il n'est pas forcement possible de bien configurer ces réseaux, il est donc préférable d'utiliser l'outil en ligne de commande VBoxMannage
.
VBoxManage natnetwork add --netname reseauprivnat --enable --dhcp off --port-forward-4 "ssh:tcp:[]:2222:[192.168.56.2]:22" --network 192.168.56.0/24
Qui crée un réseau de nom reseauprivnat
sans dhcp avec un transfert de port pour ssh. Il reste a ajouter le transfert pour les port 80
et 443
.
Vous pouvez :
- ajouter un nouveau forwarding de port :
VBoxManage natnetwork modify --netname reseauprivnat --port-forward-4 "NOMFORWARDING:tcp:[]:PORTSOURCE:[IPDEST]:PORDEST"
- supprimer un forwarding erroné :
VBoxManage natnetwork modify --netname reseauprivnat --port-forward-4 delete NOMFORWARDING
Ensuite, il faut configurer la VM pour avoir une bonne configuration réseau :
- le DNS est un DNS existant (par exemple google: 8.8.8.8 ou celui de chez vous)
- la gateway est l'adresse de votre ordi (hote vbox) dans le réseau
- …
Voir plus bas la configuration via netplan des réseaux sous ubuntu
Configuration du réseau via netplan sur ubuntu 18.04.4
Voir le site ici https://doc.ubuntu-fr.org/netplan
Attention au nom du DNS, dans un réseau privé nat, le DNS est l'adresse du gateway. Dans un reseau privé, vous pouvez utiliser le DNS de chez vous ou celui de google 8.8.8.8
Attention aussi, si on change une configuration réseau via ssh, on perd la connexion !.
Changer le nom du serveur foreman
D'abord vous ne devriez pas avoir a le faire si vous aviez suivit les instructions !
Il y a plusieurs choses à faire :
- changez le nom dans
/etc/hostname
et vous assuré que c'est pris en compte - utilisez bien un nom avec .fr à la fin
- Modifiez le fichier
/etc/foreman-installeur/scenario.d/foreman-answer.yaml
pour remplacer toutes les occurence de l'ancien nom avec le nouveau nom - déplacez le répertoire
/etc/puppetlabs/puppet/ssl/
ailleur car il garde trace de l'ancien nom - relancez l'installeur