Cobbler est un serveur d'installation. Il permet d'installer facilement et automatiquement des systèmes d'exploitations, virtualisés ou non via pxe.
Cobbler est un projet fedora, il utilise donc de nombreuses technologies propres aux systèmes red-hat/Fedora (yum, rpm, kickstart…). Il est donc particulièrement adapté pour ces systèmes, mais des efforts sont en cours pour le rendre compatible avec debian notamment.
Il est vivement recommandé d'installer Cobbler sur un serveur et un système récemment mis à jour. Il est donc recommandé de mettre à jour les paquetages disponibles et de mettre à jour le système.
yum -y update
yam -y install epel-release
Installer Cobbler avec les packages dépendants respectifs.
yum -y install cobbler cobbler-web dnsmasq syslinux pykickstart xinetd
Pour utiliser l'interface web, il faut également installer le paquet httpd
.
Pour utiliser les outils de gestion de l'énergie, il faudra installer le paquet cman
.
Pour éviter de nombreux problèmes avec SELinux
, il est recommandé de le mettre en mode permissif et corriger les problèmes au fur et à mesure de leur apparition. Pour désactiver temporairement SELinux
, exécuter la commande suivante Setenforce 0
.
Ensuite, démarrer Cobbler
et le serveur Web Apache et leur permettre de s'exécuter au démarrage.
systemctl start cobblerd systemctl enable cobblerd systemctl start httpd systemctl enable httpd
Avant de démarrer le service cobblerd
, il faut modifier quelques éléments.
Les paramètres de cobbler/cobblerd
sont stockés dans /etc/cobbler/settings
. Ce fichier est un fichier de données au format YAML, il faut donc faire attention lors de la modification de ce fichier car si celui-ci est mal formaté,cela empêchera cobbler/cobblerd
de s'exécuter.
Ce paramètre contrôle le mot de passe root défini pour les nouveaux systèmes au cours du démarrage.
Default_password_crypted: "$1$bfI7WLZz$PxXetL97LkScqJFxnW7KS1"
Il faut modifier cela en exécutant la commande openssl passwd -1
et en insérant le résultat dans la chaîne ci-dessus (veillez à enregistrer les guillemets):
# openssl passwd -1 Password: Verifying - Password: $1$j9/aR8Et$uovwBsGM.cLGcwR.Nf7Qq0 #
/etc/cobbler/settings
sous le paramètre default_password_crypted
. Il faut également activer les fonctionnalités DHCP
, DNS
, PXE
et TFTP
de Cobbler en modifiant la valeur du paramètre de 0 à 1.vi /etc/cobbler/settings default_password_crypted: "$1$j9/aR8Et$uovwBsGM.cLGcwR.Nf7Qq0" manage_dhcp: 1 manage_dns: 1 pxe_just_once: 1 next_server: YourServerIP server: YourServerIP
L'option server
définit l'adresse IP qui sera utilisée pour l'adresse du serveur Cobbler. NE PAS UTILISER 0.0.0.0, car il ne s'agit pas de l'adresse d'écoute. Elle doit être définie sur l'adresse IP que les hôtes en construction utiliseront pour contacter le Serveur Cobbler activé pour des protocoles tels que HTTP et TFTP.
# default, localhost server: 127.0.0.1
L'option next_server
est utilisée pour DHCP/PXE
en tant qu'adresse IP du serveur TFTP
à partir duquel les fichiers d'amorçage du réseau sont téléchargés.En général, il s'agit de la même adresse IP que celle de server
.
# default, localhost Next_server: 127.0.0.1
Pour pouvoir démarrer PXE, on a besoin d’un serveur DHCP
qui distribue les adresses et dirige le système d’amorçage sur le serveur TFTP
, où il peut télécharger les fichiers d’amorçage réseau. Cobbler peut le gérer ce serveur, via le paramètre manage_dhcp
:
# défaut, ne gère pas manage_dhcp: 0
Définir ce paramètre sur 1 pour que cobbler génère le fichier dhcpd.conf
en fonction du fichier dhcp.template
inclus dans cobbler.
/etc/cobbler/dhcp.template
pour mettre à jour le sous-réseau du serveur DHCP.$ vi /etc/cobbler/dhcp.template
Pour la plupart des utilisations, il vous suffira de modifier ce bloc:
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option domain-name-servers 192.168.1.210,192.168.1.211; option subnet-mask 255.255.255.0; filename "/pxelinux.0"; default-lease-time 2.8.0; max-lease-time 43200; next-server $next_server; }
Ne pas modifier la ligne next-server $next_server;
, car c’est ainsi que le paramètre next_server
est intégré à la configuration. Ne rien modifier également après cette ligne:
#for dhcp_tag in $dhcp_tags.keys():
/etc/cobbler/dnsmasq.template
:vi /etc/cobbler/dnsmasq.template dhcp-range=192.168.10.80,192.168.10.140
Pour configurer le serveur dhcp, il faut rajouter ces deux lignes dans le fichier /etc/dhcp3/dhcpd.conf
:
next-server ip-du-serveur-cobbler filename "pxelinux.0"
Ces lignes indiquent l'IP du serveur qui assure le service PXE et le nom du fichier à télécharger sur ce serveur.
Une fois les paramètres mis à jour, on peut démarrer le service.
Lorsque le système utilise systemctl
pour gérer les services:
$ systemctl start cobblerd.service $ systemctl enable cobblerd.service $ systemctl status cobblerd.service
Ou le script init
standard
$ service cobblerd start $ chkconfig cobblerd on $ service cobblerd status
Si tout s'est bien passé, on doit voir la sortie de la commande status comme ceci:
cobblerd.service - Cobbler Helper Daemon Loaded: loaded (/lib/systemd/system/cobblerd.service; enabled) Active: active (running) since Sun, 17 Jun 2012 13:01:28 -0500; 1min 44s ago Main PID: 1234 (cobblerd) CGroup: name=systemd:/system/cobblerd.service └ 1234 /usr/bin/python /usr/bin/cobblerd -F
Maintenant que le service cobblerd
est opérationnel, il faut vérifier si des problèmes se sont produits. La commande check
de Cobbler fera quelques suggestions, mais il est important de se rappeler que ce ne sont principalement que des suggestions et qu'elles ne sont probablement pas essentielles pour les fonctionnalités de base. Sous iptables
ou SELinux
, il est important de passer en revue tous les messages concernant ceux que le contrôle peut signaler.
$ cobbler check The following are potential configuration items that you may want to fix: .... .... Restart cobblerd and then run 'cobbler sync' to apply changes.
Lorsqu'on applique l'une des suggestions, telles que l'installation de packages supplémentaires, la modification de la configuration, etc., il faut redémarrer le service cobblerd
.
Une fois que l'examen le résultat de “cobbler check” est terminé, il faut faire une première synchronisation. Ce n'est pas critique, mais un échec de la synchronisation correcte à ce stade peut révéler un problème de configuration.
$ cobbler sync task started: 2012-06-24_224243_sync task started (id=Sync, time=Sun Jun 24 22:42:43 2012) running pre-sync triggers ... rendering DHCP files generating /etc/dhcp/dhcpd.conf rendering TFTPD files generating /etc/xinetd.d/tftp cleaning link caches running: find /var/lib/tftpboot/images/.link_cache -maxdepth 1 -type f -links 1 -exec rm -f '{}' ';' received on stdout: received on stderr: running post-sync triggers running python triggers from /var/lib/cobbler/triggers/sync/post/ running python trigger cobbler.modules.sync_post_restart_services running: dhcpd -t -q received on stdout: received on stderr: running: service dhcpd restart received on stdout: received on stderr: running shell triggers from /var/lib/cobbler/triggers/sync/post/ running python triggers from /var/lib/cobbler/triggers/change/ running python trigger cobbler.modules.scm_track running shell triggers from /var/lib/cobbler/triggers/change/ TASK COMPLETE
En supposant que tout se soit bien passé et qu'aucune erreur n'ait été signalée, on peut passer à l'étape suivante. .
Cobbler automatise l'ajout de distributions et de profils via la commande cobbler import
, qui permet (généralement) de détecter automatiquement le type et la version de la distribution importée et de créer (un ou plusieurs) profils avec les paramètres appropriés.
Pour importer une distribution, on a besoin d'un fichier ISO de la distribution
Il faut utiliser une image DVD complet et non un fichier ISO Live CD
.
Une fois le fichier téléchargé, il faut le monter quelque part:
Créer un répertoire, copier le fichier ISO de CentOS 7 et exécuter les commandes ci-dessous pour monter l'image ISO.
mkdir /mnt/iso mount -o loop,ro /path/to/isos/Fedora-Server-dvd-x86_64-28-1.1.iso /mnt/iso/
On est maintenant prêt à importer la distribution.Les arguments nom et chemin sont les seules options requises pour l'importation:
cobbler import --arch=x86_64 --path=/mnt/iso --name=fedora28
L'option --arch
n'a pas besoin d'être spécifiée, car elle sera normalement détectée automatiquement.
On peut aussi utiliser une url :
cobbler import --path=rsync://servergoeshere/path/to/distro --name=distro
si des erreurs de signature surviennent lors de l'importation, exécuter la commande ci-dessous pour résoudre le problème.
cobbler signature update
Cobbler utilise beaucoup le répertoire /var
, qui regroupe tous les fichiers de la distribution et du référentiel, on aura besoin de 5 à 10 Go d’espace libre par distribution à importer.
La commande import
crée généralement au moins une paire distro/profil
, qui porte le même nom que celui indiqué ci-dessus. Dans certains cas (par exemple, lorsqu'un noyau basé sur xen
est trouvé), plusieurs paires distro/profil
seront créées.
Si aucune erreur n'a été signalée lors de l'importation, on peut afficher des détails sur les distributions et les profils créés lors de l'importation.
$ cobbler distro list
$ cobbler profile list
La commande report
affiche les détails des objets dans Cobbler:
$ cobbler distro report --name=fedora28-x86_64 Name : fedora28-x86_64 Architecture : x86_64 TFTP Boot Files : {} Breed : redhat Comment : Fetchable Files : {} Initrd : /var/www/cobbler/ks_mirror/fedora28-x86_64/images/pxeboot/initrd.img Kernel : /var/www/cobbler/ks_mirror/fedora28-x86_64/images/pxeboot/vmlinuz Kernel Options : {} Kernel Options (Post Install) : {} Kickstart Metadata : <<inherit>> Management Classes : [] OS Version : fedora28 Owners : ['admin'] Red Hat Management Key : <<inherit>> Red Hat Management Server : <<inherit>> Template Files : {}
Comme on peut le voir ci-dessus, la commande import
remplit automatiquement plusieurs champs, tels que , breed, OS version et l'emplacement des fichiers initrd/kernel.
Certains champs sont définis sur << inherit >>
. Cela signifie qu'ils utiliseront le paramètre par défaut (trouvé dans le fichier de paramètres) ou (dans le cas de profils, de sous-profils et de systèmes). Utilise tout ce qui est défini dans l'objet parent.
Maintenant qu'on a une distribution et un profil, on peut créer un système. Les profils peuvent être utilisés pour démarrer PXE, mais la plupart des fonctionnalités de cobbler
tournent autour des objets système. Plus on donne d'informations sur un système, plus il le fera automatiquement.
Tout d'abord, créer un objet système en fonction du profil créé lors de l'importation. Lors de la création d'un système, le nom et le profil sont les deux seuls champs obligatoires:
$ cobbler system add --name=test --profile=fedora28-x86_64 $ cobbler system list test $ cobbler system report --name=test Name : test TFTP Boot Files : {} Comment : Enable gPXE? : 0 Fetchable Files : {} Gateway : Hostname : Image : IPv6 Autoconfiguration : False IPv6 Default Device : Kernel Options : {} Kernel Options (Post Install) : {} Kickstart : <<inherit>> Kickstart Metadata : {} LDAP Enabled : False LDAP Management Type : authconfig Management Classes : [] Management Parameters : <<inherit>> Monit Enabled : False Name Servers : [] Name Servers Search Path : [] Netboot Enabled : True Owners : ['admin'] Power Management Address : Power Management ID : Power Management Password : Power Management Type : ipmitool Power Management Username : Profile : fedora28-x86_64 Proxy : <<inherit>> Red Hat Management Key : <<inherit>> Red Hat Management Server : <<inherit>> Repos Enabled : False Server Override : <<inherit>> Status : production Template Files : {} Virt Auto Boot : <<inherit>> Virt CPUs : <<inherit>> Virt Disk Driver Type : <<inherit>> Virt File Size(GB) : <<inherit>> Virt Path : <<inherit>> Virt RAM (MB) : <<inherit>> Virt Type : <<inherit>>
La configuration du réseau est la principale raison de la création d'un objet système. Lorsqu'on utilise des profils, on est limité aux interfaces DHCP, mais on peut spécifier beaucoup plus d'options de configuration réseau avec les systèmes.
On va maintenant configurer une seule interface simple dans le réseau 192.168.1 / 24:
$ cobbler system edit --name=test --interface=eth0 --mac=00:11:22:AA:BB:CC --ip-address=192.168.1.100 --netmask=255.255.255.0 --static=1 --dns-name=test.mydomain.com
La passerelle par défaut n'est pas spécifiée par NIC, donc il faut l'ajouter simplement (avec le nom d'hôte):
$ cobbler system edit --name=test --gateway=192.168.1.1 --hostname=test.mydomain.com
--hostname
correspond au nom du système local et est renvoyé par la commande “hostname” .
--dns-name
(qui peut être défini par carte réseau) doit correspondre à une image A DNS liée à l'adresse IP de cette adresse. Aucune Interface n'est requise, mais il est recommandé de spécifier les deux. Certaines fonctionnalités avancées (telles que la gestion de la configuration) reposent sur le champ --dns-name
pour la recherche des enregistrements système.
Chaque fois qu'un système est édité, cobbler exécute ce que l'on appelle une “synchronisation simplifiée”, qui régénère des fichiers critiques tels que le fichier de démarrage PXE dans le répertoire racine TFTP. Une chose qu'il ne fera PAS est d'exécuter des actions de gestion de service, telles que la régénération du dhcpd. Conf et redémarrage du service DHCP Après avoir ajouté un système avec une interface statique, il est judicieux d'exécuter une “synchronisation de cordonnier” complète afin de garantir que le fichier dhcpd.conf
est réécrit avec le bail statique correct et que le service est renvoyé.
/var/lib/cobbler/kickstarts
est l'emplacement par défaut des fichiers kickstart.
Créer maintenant un fichier CentOS7.ks
en utilisant n’importe quel éditeur de texte.
vi /var/lib/cobbler/kickstarts/CentOS7.ks
Ajouter le contenu suivant au fichier, puis enregistrer et quitter l'éditeur de texte.
Remplacer l’IP du serveur, le mot de passe root et d’autres détails.
# plate-forme = x86, AMD64 ou Intel EM64T # version = DEVEL # Configuration du pare-feu firewall --disabled # Installer le système d'exploitation au lieu de la mise à niveau install # Utilise le support d'installation HTTP url --url="http://172.168.10.5/cblr/links/CentOS7-x86_64/" # mot de passe Root rootpw --iscrypted $1$j9/aR8Et$uovwBsGM.cLGcwR.Nf7Qq0 # Network information network --bootproto=dhcp --device=eth0 --onboot=on # Redémarrer après l'installation reboot # Information d'autorisation du système auth useshadow passalgo=sha512 # Utiliser l'installation graphique graphicalfirstboot disable # Clavier système keyboard us # Langue du système lang en_US # configuration SELinux selinux disabled # Niveau de journalisation de l'installation logging level=info # Fuseau horaire du système timezone Europe/Amsterdam # Configuration du chargeur de démarrage du système bootloader location=mbrclearpart --all --initlabel part swap --asprimary --fstype="swap" --size=1024 part /boot --fstype xfs --size=500 part pv.01 --size=1 --grow volgroup root_vg01 pv.01 logvol / --fstype xfs --name=lv_01 --vgname=root_vg01 --size=1 --grow%packages @^minimal@core %end %addon com_redhat_kdump --disable --reserve-mb='auto' %end
Synchroniser le profil mis à jour sur le serveur Cobbler avec la commande suivante:
cobbler profile edit --name=CentOS7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS7.ks cobbler sync
La commande report
doit afficher une nouvelle valeur pour le champ “Kickstart Metadata” :
$ cobbler distro report --name=fedora28-x86_64 Name : fedora28-x86_64 Architecture : x86_64 TFTP Boot Files : {} Breed : redhat Comment : Fetchable Files : {} Initrd : /var/www/cobbler/ks_mirror/fedora28-x86_64/images/pxeboot/initrd.img Kernel : /var/www/cobbler/ks_mirror/fedora28-x86_64/images/pxeboot/vmlinuz Kernel Options : {} Kernel Options (Post Install) : {} Kickstart Metadata : {'tree': 'file://var/lib/cobbler/kickstarts/'} Management Classes : [] OS Version : fedora28 Owners : ['admin'] Red Hat Management Key : <<inherit>> Red Hat Management Server : <<inherit>> Template Files : {}
Le champ “Kickstart Metadata” (--ksmeta
en interne) est utilisé pour les variables diverses, Et contient la variable tree
utilisée dans les modèles de kickstart
pour spécifier l’URL où se trouvent les fichiers d’installation.
Cobbler permet de mirrorer les dépôts afin d'accélérer les installations et les mises à jour des systèmes.
Pour mirrorer le dépôt de base utiliser la commande suivante :
# cobbler repo add --mirror=http://download.fedora.redhat.com/pub/fedora/linux/releases/11/Everything/i386/ --name=f11-i386-everything
Il vaut mieux éviter d'utiliser le serveur : download.fedora.redhat.com
. Préférer un serveur proche, pour connaître la liste des miroirs consulter la liste officielle.
Pour mirrorer le depôt contenant les mises à jour utiliser une commande du type :
# cobbler repo add --mirror=http://download.fedora.redhat.com/pub/fedora/linux/updates/11/ --name=f11-i386-updates
Pour récupérer réellement les données, il faut lancer la commande suivante (attention, c'est assez long !) :
# cobbler reposync
Pour utiliser les miroirs lors de l'installation, il faut l'inclure dans le profile:
cobbler profile edit --name=f11-PAE-i386 --repos="f11-i386-updates f11-i386-everything"
Pour pouvoir utiliser les miroirs après l'installation, il faut modifier une variable dans le fichier de configuration de cobbler /etc/cobbler/settings
:
yum_post_install_mirror: 1
Il faudra alors mettre à jour régulièrement ces dépôts, pour cela on peut utiliser le service Cron
. Voicie un exemple de planification de la mise à jour des dépôts à une heure du matin tout les jours :
0 1 * * * cobbler reposync --tries=3 --no-fail
Afin que les dépôts soient accessibles, il faut démarrer le serveur web apache :
/sbin/service httpd start /sbin/chkconfig httpd on