1. Cobbler: Quando Linux
installa Linux
e ti fa le scarpe!
Stefano Frontori
Associazione di Promozione Sociale LOLUG – Gruppo Utenti Linux Lodi
stefano.frontori@lolug.org
2. Spesso accade che...
devo (re)installare il sistema operativo:
● Che noia, ma quanto ci mette?
● non trovo più il CD... (e se il lettore non cè?)
● mi sono sbagliato, lo devo reinstallare?
● ma come lo avevo configurato?
Stefano Frontori PILLOle: Cobbler 2
3. Cobbler
● Ufficialmente: “Installation e update server for
Linux”
● Un server linux che ci permette di avere un
ambiente di installazione centralizzato,
modulare e flessibile.
● basato su pochi e semplici oggetti,
● distro, profili, sistemi, immagini e repository.
● Gestisce macchine fisiche e virtuali
Stefano Frontori PILLOle: Cobbler 3
6. Le Distribuzioni
cobbler distro add --name=string
--kernel=path --initrd=path
● Kernel = software avente il compito di fornire
ai processi in esecuzione sull'elaboratore un
accesso sicuro e controllato all'hardware.
● Initrd = "initial ramdisk", ed è un piccolo
filesystem montato in memoria da Linux nella
fase iniziale della procedura di boot
Stefano Frontori PILLOle: Cobbler 6
7. Object tree
kernel
Distro
initrd
Repo
Data mirror
kickstart
Profili
Immagini
Binary
interfacce
Sistemi
Stefano Frontori PILLOle: Cobbler 7
8. Aggiungere un profilo
[root@ariel ~]# cobbler profile add
--name=myWebServer-Fedora-10
--distro=Fedora10-i386
--kickstart=/path/my-WebServer-kickstart.ks
● Ogni profilo è caratterizzato da un file di
kickstart
● Ad ogni distro possono essere associati uno
o più profili
Stefano Frontori PILLOle: Cobbler 8
9. I profili
● Sono l'associazione tra una distribuzione e un
file di kickstart
cobbler profile add --name=string
--distro=string [--kickstart=path]
● Un profilo specializza la configurazione di una
tipologia di macchine
● web server, mail, ftp, desktop...
Stefano Frontori PILLOle: Cobbler 9
10. I file di kickstart
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard it
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Reboot after installation
reboot
Stefano Frontori PILLOle: Cobbler 10
11. Object tree
kernel
Distro
initrd
Repo
Data mirror
kickstart
Profili
Immagini
Binary
interfacce
Sistemi
Stefano Frontori PILLOle: Cobbler 11
12. Aggiungere un sistema
[root@ariel ~]# cobbler system add
--name=myDesktop
--profile=myDesktop-Fedora-10
--interface=eth0
--ip=192.168.0.50
--mac=AA:BB:CC:DD:EE:A1
● Da un profilo possiamo creare un sistema
semplicemente associandogli un interfaccia di
rete.
● un pezzo di hardware indentificaco da un mac
address
Stefano Frontori PILLOle: Cobbler 12
13. I sistemi
cobbler system add --name=string
--profile=string [--mac=macaddress]
● Cobbler gestisce le interfacce attraverso gli
snippets
● pre_install_network_config
● post_install_network_config
contenuti nel file di kickstart associato al
sistema
Stefano Frontori PILLOle: Cobbler 13
14. Snippets
● Gli snippets rendono dinamico (!) un file di
kickstart
%pre
$kickstart_start
$SNIPPET('pre_install_network_config')
%packages
$SNIPPET('func_install_if_enabled')
%post
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$kickstart_done
Stefano Frontori PILLOle: Cobbler 14
15. Object tree
kernel
Distro
initrd
Repo
Data mirror
kickstart
Profili
Immagini
Binary
interfacce
Sistemi
Stefano Frontori PILLOle: Cobbler 15
17. Provisioning
Abbiamo aggiunto tutto quello che ci serve, ora
come lo installiamo?
● Cobbler supporta l'installazione via rete
tramite PXE (preboot execution enviroment)
● anche la gestione di servizi dhcp e di bind
[root@ariel ~]# vim /etc/cobbler/dhcp.template
[root@ariel ~]# service dhcpd start
[root@ariel ~]# service xinetd start
Stefano Frontori PILLOle: Cobbler 17
18. Provisioning
● Ogni volta che si aggiunge o crea un
elemento è necessario riavviare tutti i servizi
utilizzati
[root@ariel ~]# cobbler sync
● È anche possibile fare provisionig alla vecchia
maniera, a mano ;-)
[root@ariel ~]# cobbler buildiso
Stefano Frontori PILLOle: Cobbler 18
19. Virtualizzare
E se avessi la necessità di macchine virtuali?
● Koan (kickstart over a network) gestisce il
processo di installazione su di una macchina
● virtuale (Xen, Kvm/Qemu, VmWare)
● dove non è possibile utilizzare PXE
● per reinstallare un sistema già esistente
[root@ariel ~]# koan --server=myCobblerServer
--replace-self --system=myVirtual-WebServer
Stefano Frontori PILLOle: Cobbler 19
21. Api & Xmlrpc
● Cobbler mette a disposiozione delle comode
api per accedere alle funzionalità del server
#!/usr/bin/env python
from cobbler import api as cobbler_api
cobbler_api = cobbler_api.BootAPI()
import xmlrpclib
my_uri = "http://192.168.0.1/cobbler_api_rw"
remote = xmlrpclib.Server(my_uri)
# now add a profile
pro_id = remote.new_profile(token)
remote.modify_profile(pro_id, 'name', profilename, token)
remote.modify_profile(pro_id, 'distro', distroname, token)
remote.modify_profile(pro_id, 'kickstart', kslink, token)
status = remote.save_profile(pro_id,token)
Stefano Frontori PILLOle: Cobbler 21
22. Useful Command
● È possibile importare in cobbler anche sistemi
non unix-like
[root@ariel ~]# cobbler image add
--name=WindowsXP
--filename=WindowsXP.iso
● È anche possibile fare il provisioning di
distribuzioni Live!
[root@ariel ~]# koan --server=myCobblerServer
--virt --virt-name=Fedora-9-LIVECD
-C --image=Fedora-9-LiveCD
Stefano Frontori PILLOle: Cobbler 22