# Centos: Mise en oeuvre de Cobbler
{{INLINETOC}}
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.
# Installation et configuration
## Installation de cobbler
### Mettre à jour le Système
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
```
### Activer le référentiel EPEL
```
yam -y install epel-release
```
### Installer cobbler
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
```
## Configuration de cobbler
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.
### Mot de passe crypté par défaut
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):
* générer un mot de passe root chiffré et pour ce faire, exécuter la commande suivante.
```
# openssl passwd -1
Password:
Verifying - Password:
$1$j9/aR8Et$uovwBsGM.cLGcwR.Nf7Qq0
#
```
* mettre ce mot de passe root chiffré dans le fichier de paramètres `/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
```
### Server et Next_Server
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
```
### Configuration du serveur DHCP
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
```
#### Gestion de DHCP par cobbler
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.
* éditer `/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():
```
* mettre à jour la plage d'adresses IP dans le fichier `/etc/cobbler/dnsmasq.template`:
```
vi /etc/cobbler/dnsmasq.template
dhcp-range=192.168.10.80,192.168.10.140
```
#### Gestion de DHCP en dehors de cobbler
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.
## Démarrer et activer le service Cobbler
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
```
## Vérifications et première synchronisation
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.
.
# Importer une première distribution
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.
## Télécharger une image ISO
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/
```
## Exécuter l'importation
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.
## Vérification de l'import
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.
### Liste des objets
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
```
### Détails d'objet
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 : <>
Management Classes : []
OS Version : fedora28
Owners : ['admin']
Red Hat Management Key : <>
Red Hat Management Server : <>
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.
## Créer un système
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 : <>
Kickstart Metadata : {}
LDAP Enabled : False
LDAP Management Type : authconfig
Management Classes : []
Management Parameters : <>
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 : <>
Red Hat Management Key : <>
Red Hat Management Server : <>
Repos Enabled : False
Server Override : <>
Status : production
Template Files : {}
Virt Auto Boot : <>
Virt CPUs : <>
Virt Disk Driver Type : <>
Virt File Size(GB) : <>
Virt Path : <>
Virt RAM (MB) : <>
Virt Type : <>
```
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é.
# Utilisation d'un fichier kicksart personnalisé
## Création d'un fichier kickstart
`/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
```
## Utilisation du fichier kickstart
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 : <>
Red Hat Management Server : <>
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.
# Utilisation d'un miroir yum local
## Création d'un miroir Yum
Cobbler permet de mirrorer les dépôts afin d'accélérer les installations et les mises à jour des systèmes.
### Récupération des données
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
```
## Utilisation des miroirs
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
```