Introduction
Cobbler centralise :
- Gestion d'images d'install (distros)
- Configuration DHCP + DNS + TFTP automatique
- Templates de kickstart (RHEL), preseed (Debian), autoinstall (Ubuntu)
- Profils heritables (base > customisation par usage)
- API REST + CLI
- Webhooks pour deploy automation
- Power management (IPMI, iLO) pour rebooter les machines
Cas d'usage : datacenter VeryCloud, lab de provisioning rapide, deploiement automatise de fleet.
Prerequis
- VPS Linux Debian 12 / Ubuntu 24.04 / Rocky 9
- 4 vCPU, 4 Go RAM, 100 Go disk minimum
- LAN avec controle DHCP
- Acces root
Etape 1 : Installation
Debian / Ubuntu
sudo apt update
sudo apt install -y cobbler cobbler-web dhcp-server tftpd-hpa apache2
Rocky / RHEL
sudo dnf install -y cobbler cobbler-web httpd
sudo systemctl enable --now httpd cobblerd
Etape 2 : Configuration de base
/etc/cobbler/settings.yaml :
default_password_crypted: "$6$rounds=4096$xxxx..."
manage_dhcp: true
manage_dhcp_v4: true
manage_tftpd: true
manage_dns: false
next_server_v4: 192.168.1.5
server: 192.168.1.5
pxe_just_once: true
Generez le password root :
openssl passwd -6
Etape 3 : Demarrer Cobbler
sudo systemctl enable --now cobblerd
sudo cobbler check
cobbler check liste tout ce qui doit etre fixe. Corrigez avant de continuer.
Etape 4 : Configurer DHCP via Cobbler
/etc/cobbler/dhcp.template :
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 1.1.1.1, 8.8.8.8;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.1.100 192.168.1.200;
filename "pxelinux.0";
next-server $next_server_v4;
}
sudo cobbler sync
Cela regenere les configs DHCP, TFTP et HTTP a partir des templates Cobbler.
Etape 5 : Importer une distro
Telechargez une ISO Debian 12 :
sudo mkdir -p /var/cobbler-isos
cd /var/cobbler-isos
sudo wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso
sudo mount -o loop debian-12.5.0-amd64-netinst.iso /mnt
Importez :
sudo cobbler import --name=debian12 --path=/mnt --breed=debian --os-version=bookworm
sudo umount /mnt
Cobbler copie les fichiers d'install dans /var/www/cobbler/distro_mirror/ et cree automatiquement une distro et un profile.
Verifiez :
sudo cobbler distro list
sudo cobbler profile list
Etape 6 : Profile et kickstart
Voir les details du profile :
sudo cobbler profile report --name=debian12-x86_64
Editez le kickstart/preseed associe :
sudo cp /var/lib/cobbler/templates/sample.seed /var/lib/cobbler/templates/debian12.seed
sudo nano /var/lib/cobbler/templates/debian12.seed
Exemple /var/lib/cobbler/templates/debian12.seed :
d-i debian-installer/locale string fr_FR.UTF-8
d-i keyboard-configuration/xkb-keymap select fr
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string $hostname
d-i mirror/country string manual
d-i mirror/http/hostname string ftp.fr.debian.org
d-i mirror/http/directory string /debian
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password $default_password_crypted
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Paris
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
tasksel tasksel/first multiselect ssh-server
d-i pkgsel/include string openssh-server sudo curl vim
d-i grub-installer/bootdev string default
d-i finish-install/reboot_in_progress note
Assignez-le au profile :
sudo cobbler profile edit --name=debian12-x86_64 --autoinstall=debian12.seed
Etape 7 : Customiser via profiles heritables
Cobbler supporte les profils enfants pour customisation :
# Profile parent : Debian 12 generique
sudo cobbler profile edit --name=debian12-x86_64 --kopts="quiet"
# Profile enfant : Debian 12 web
sudo cobbler profile add --name=debian12-web --parent=debian12-x86_64 \
--autoinstall=debian12-web.seed \
--kopts-post="role=web"
# Profile enfant : Debian 12 db
sudo cobbler profile add --name=debian12-db --parent=debian12-x86_64 \
--autoinstall=debian12-db.seed
Etape 8 : Enregistrer des hosts (systems)
Pour pre-configurer une machine specifique :
sudo cobbler system add \
--name=web1 \
--profile=debian12-web \
--hostname=web1.verycloud.fr \
--interface=eth0 \
--mac=AA:BB:CC:DD:EE:01 \
--ip-address=192.168.1.20 \
--netmask=255.255.255.0 \
--gateway=192.168.1.1 \
--dns-name=web1.verycloud.fr
Au prochain boot PXE, la machine avec MAC AA:BB:CC:DD:EE:01 recevra automatiquement l'IP 192.168.1.20 et installera le profile debian12-web sans intervention.
sudo cobbler sync
Etape 9 : Power management
Pour rebooter des serveurs distants en IPMI / iLO :
sudo cobbler system edit --name=web1 \
--power-type=ipmitool \
--power-address=192.168.100.20 \
--power-user=admin \
--power-pass=motdepasse
Commande :
sudo cobbler system poweron --name=web1
sudo cobbler system poweroff --name=web1
sudo cobbler system reboot --name=web1
Combine avec un boot PXE one-time, vous deployez une fleet de zero en quelques minutes.
Etape 10 : Interface web
Apres install de cobbler-web :
sudo htdigest -c /etc/cobbler/users.digest "Cobbler" cobbler
Visitez https://IP:8080/cobbler_web. Login : cobbler + mdp choisi.
L'UI permet : voir distros, profiles, systems, lancer sync, etc.
Etape 11 : Snippets et templates
Cobbler utilise des snippets reutilisables :
sudo nano /var/lib/cobbler/snippets/custom_packages
htop curl vim git fail2ban ufw
Dans votre preseed :
d-i pkgsel/include string openssh-server $SNIPPET('custom_packages')
Etape 12 : API REST
Cobbler expose une API XML-RPC. Aussi du JSON sur /cblr/svc/op/.
Exemple en bash :
curl -k -H "Content-Type: application/json" \
https://IP:8080/cblr/svc/op/profile_list/
En Python (cobbler-cli) :
import xmlrpc.client
server = xmlrpc.client.Server('http://localhost/cobbler_api')
token = server.login('cobbler', 'password')
profiles = server.get_profiles(token)
print(profiles)
Pratique pour automatiser via vos scripts ou Ansible.
Depannage
"cobbler check" liste plein d'erreurs
Avant de provisionner, fixez chaque erreur. Souvent :
- SELinux a configurer
- DHCP/TFTP ports bloques par firewall
- Apache pas demarre
"Distro not found"
sudo cobbler distro list
Si vide, refaites un import :
sudo cobbler import --name=debian12 --path=/mnt --breed=debian
Sync echoue
sudo cobbler sync 2>&1 | tee /tmp/cobbler-sync.log
Cherchez l'erreur. Souvent un template avec erreur de syntaxe Cheetah.
Client PXE ne trouve pas son system
Verifiez le MAC dans Cobbler :
sudo cobbler system find --mac=AA:BB:CC:DD:EE:01
Sinon, le client va recevoir le profile par defaut.
Performance lente
Cobbler 3.x utilise un backend Python. Si vous avez beaucoup de systems (1000+), considerez Foreman a la place.
Commandes utiles
# Check / sync
sudo cobbler check
sudo cobbler sync
# Distros
sudo cobbler distro list
sudo cobbler distro report --name=debian12
sudo cobbler distro remove --name=debian12
# Profiles
sudo cobbler profile list
sudo cobbler profile add --name=...
sudo cobbler profile edit --name=...
sudo cobbler profile report --name=...
# Systems
sudo cobbler system list
sudo cobbler system add --name=... --mac=... --profile=...
sudo cobbler system find --mac=AA:BB:CC:DD:EE:01
# Power
sudo cobbler system poweron --name=web1
sudo cobbler system reboot --name=web1
# Import
sudo cobbler import --name=ubuntu24 --path=/mnt --breed=ubuntu
# Logs
sudo tail -f /var/log/cobbler/cobbler.log
Conclusion
Cobbler centralise et orchestre vos deploiements :
- Multi-distro (Debian, Ubuntu, RHEL, etc.)
- Templates et heritage de profiles
- Power management
- API REST
Limites :
- Complexite initiale plus elevee que PXE simple
- Moins moderne que MAAS / Foreman
- Communaute active mais reduite
Pour aller plus loin :
- Combinez avec Ansible pour la config post-install
- Pour un workflow plus moderne, regardez Foreman ou MAAS
- Cobbler 3.x reecrit en Python 3, evite Cobbler 2.x EOL
Ressources
- Documentation officielle : https://cobbler.readthedocs.io
- Cobbler GitHub : https://github.com/cobbler/cobbler
- Foreman (alternative) : https://www.theforeman.org
- MAAS (alternative) : https://maas.io


















