Cet article va principalement s’intéresser aux quatres principales briques que Foreman va manager à votre place : DNS, DHCP, TFTP et bien sûr Puppet / PuppetCA.
Ajout d’un smart-proxy dans Foreman
Lancez votre service foreman-proxy :
# service foreman-proxy start
Pour vérifier que votre service s’est bien lancé, faite pointer votre navigateur HTTP sur l’url de votre foreman-proxy sur le port 8443. (ex: http://foreman:8443/features) Vous devriez voir apparaitre une page listant les fonctionnalités activées sur votre Smart Proxy Foreman. Si cette page n’est pas accessible pensez à vérifier vos règles de firewalling.
Avant de pouvoir ajouter un smart-proxy dans Foreman il faut au moins activer une fonctionalité. Comme nous allons le voir par la suite vous pouver activer :
:tftp: true
:dns: true
:dhcp: true
:puppetca: true
:puppet: true
Pensez à redémarrer le proxy pour appliquer la nouvelle configuration. On peut maintenant ajouter un Smart Proxy dans Foreman. Pour cela allez sur l’interface de Foreman, dans le menu déroulant à droite sélectionnez « Smart Proxies », New Proxy, nommez le et indiquez son URL sans oublier le port d’écoute du serveur Webrick (8443) par défaut.
Lorsque vous sauvegardez, si tout vas bien vous devriez voir toutes les Features supportées par votre smart-proxy.
Configuration du serveur TFTP
Pour configurer votre serveur TFTP, il vous faut aller dans /tftpboot (ou votre racine TFTP si vous en avez choisi une différente) .
Il vous faut un pxelinux.0 et des fichiers permettant une netboot de debian. Vous pouvez trouver ceux-ci dans cette archive proposée par Debian (http://ftp.fr.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/netboot.tar.gz).
Extrayez l’archive dans /tftpboot (ou la racine de votre serveur TFTP), supprimez le lien symbolique de pxelinux.cfg et créez les répertoires boot et pxelinux.cfg (oui, c’est un répertoire !). Donnez les droits 700 et user foreman-proxy:root à ces deux dossiers.
# tar xvf netboot.tar.gz
# rm -rf pxelinux.cfg
# mkdir boot pxelinux.cfg && chmod 700 boot pxelinux.cfg && chown foreman-proxy:root boot pxelinux.cfg
# rm netboot.tar.gz
Dans le fichier /etc/foreman-proxy/settings.yml :
- Décommenter la ligne :tftp: true
- Décommenter la ligne :tftproot et mettez /tftpboot (ou votre autre dossier)
Redémarrez votre service foreman-proxy, retournez dans la configuration des smart-proxy sur Foreman, éditez votre proxy renseigné et sauvegardez tout de suite : la feature TFTP devrait s’afficher.
On va créer un fichier de boot par défaut. Si vous ne demandez pas explicitement à Foreman de reconstruire votre machine alors ce fichier de boot par défaut demandera à votre machine de continuer son boot sur son disque local en cas de redémarrage. Pour cela on va utiliser la fonction de templating de Foreman. Allez sur l’interface Web, un template nommé « PXE Default File » devrait être présent. Vous avez juste à clicker sur « Build PXE Default button », et c’est bon, vous devriez avoir un serveur PXE fonctionnel.
Configuration du serveur DHCP
Dans le fichier de configuration du serveur DHCPd, il vous faut ajouter les lignes suivantes par rapport à une configuration « classique » :
> omapi-port 7911;
> allow booting;
> allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
option domain-name-servers 192.168.1.1 8.8.8.8 8.8.4.4;
option domain-name "mycomapny.com";
option routers 192.168.1.1;
filename "/pxelinux.0";
next-server 192.168.1.1;
}
Dans le fichier /etc/foreman-proxy/settings.yml :
- Décommenter la ligne :dhcp: true
- Décommenter la ligne :dhcp_vendor: isc
- Ajouter les lignes
:dhcp_config: /etc/dhcp/dhcpd.conf
:dhcp_leases: /var/lib/dhcp/dhcpd.leases
On redémarre le service de smart-proxy :
# service foreman-proxy restart
Configuration de Bind
On va maintenant passer à la configuration du serveur DNS. Nous allons utiliser le serveur Bind9. Pour que foreman puisse modifier dynamiquement des zones via l’outils nsupdate, il va falloir lui générer une paire de clé permettant de l’authentifier.
Ces clés vont être générées via les commandes :
# dnssec-keygen -a HMAC-MD5 -b 512 -n USER foreman.mycompany.com
Je stocke personnellement ces clés dans le répertoire /etc/bind en les renomant foreman.key et foreman.private. Il faut leur donner les droits 400 et les users foreman-proxy:foreman-proxy.
Il faut ensuite indiquer à Bind que le user à qui appartient cette clé à le droit de modifier sa zone. Il faut donc dans votre déclaration de zone ajouter une directive allow-update. Vous devriez obtenir quelquechose comme ca :
zone "mycompany.com" {
type master;
file "/etc/bind/mycompany/db.mycompany.com";
allow-update {key "foreman"; };
};
Pensez à faire de même pour votre zone reverse !
Création d’un domaine dans Foreman
Il vous faut maintenant indiquer à Foreman qu’il peut gérer un nouveau domaine. Dans le menu déroulant sélectionnez Domain, New Domain.
Entrez un nom qui vous servira uniquement de référence dans Foreman, le nom complet de votre domaine puis associez votre smart-proxy. Enfin sauvez !
Configuration de Puppet / PuppetCA
Il faut dans un premier temps installer le package sudo.
#apt-get install sudo
Puis il faut ajouter dans le fichier /etc/sudoers les lignes suivantes :
# visudo
> foreman ALL=(ALL) NOPASSWD:/usr/sbin/puppetca
> foreman-proxy ALL=(ALL) NOPASSWD:/usr/sbin/puppetca --clean *
Comme d’habitude on va activer ces services en dé-commentant les lignes correspondantes aux services dans /etc/foreman-proxy/settings.yml puis redémarrer le service foreman-proxy. Pour faire prendre en compte ces nouveaux services par foreman, éditez votre smart-proxy et sauvez ! Les services devraient apparaitre dans la liste des services disponibles pour ce smart-proxy !
Dans /etc/puppet, créer un fichier autosign.conf et changer son owner en foreman-proxy:puppet
# cd /etc/puppet
# touch autosign.conf
# chown foreman-proxy:puppet autosign.conf
Ajouter un sous-réseau dans Foreman
Pour ajouter un sous-réseau dans Foreman, sélectionnez Subnet dans le menu déroulant, puis New Subnet.
Remplissez son nom, son domaine associé, les informations relatives au réseau et le serveur smart-proxy que vous souhaitez associer à ce sous-réseau.
Conclusion
Voila, vous avez fini de paramétrer globalement la gestion des 4 briques principales que Foreman va pouvoir piloter pour vous. Nous verrons dans une dernière partie comment utiliser Foreman pour automatiser complètement l’installation d’une machine Debian.