gsp:2019:tpforeman

Installeur Foreman

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 :

  1. les répertoires /etc/foreman /etc/foreman-installer/ /etc/foreman-proxy/ /etc/dhcpd/ /var/lib/tftpboot /etc/bind, /var/cache/bind/, /var/lib/dhcp/
  2. les fichiers /etc/host, /etc/hostname, /etc/default/ftfp-hpa
  3. le fichier résultat de la commande
 sudo -u postgres pg_dump foreman > dump_postgres.sql

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

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.

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

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

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, les filename correctes (le serveur tftp pour le boot doit être votre serveur)
    • que la configuration du DNS est cohérente : les options domain-name et domain-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.

  • Via le foreman installer, activez le plugin discovery et le foreman_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

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ème ubuntu 18.04.4 LTS (C'est un template de configuration de l'installeur automatique de distribution basée sur debian). Pour cela dans Hotes→modèles de provisioning retrouver le modèle preseed 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ème Hotes→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.

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

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 :

  1. changez le nom dans /etc/hostname et vous assuré que c'est pris en compte
  2. utilisez bien un nom avec .fr à la fin
  3. Modifiez le fichier /etc/foreman-installeur/scenario.d/foreman-answer.yaml pour remplacer toutes les occurence de l'ancien nom avec le nouveau nom
  4. déplacez le répertoire /etc/puppetlabs/puppet/ssl/ ailleur car il garde trace de l'ancien nom
  5. relancez l'installeur
  • gsp/2019/tpforeman.txt
  • Dernière modification : 2020/05/31 20:06
  • de fabien.rico