SlideShare a Scribd company logo
Cobbler - installation server open source
                                                           di Roberto Polli



Introduzione
Linux è un sistema operativo orientato alla rete - ed è spesso usato in modalità diskless o con
installazioni via rete.


Cobbler è un software che integra le varie componenti necessarie al boot ed all’installazione via
rete fornendo un unico pannello di gestione per:
         DHCP;
         TFTP - una versione minimale del protocollo FTP;
         repository per le varie distribuzioni;
         file di kickstart per le installazioni automatiche.


Quando un sistema viene avviato con Cobbler, viene mostrato un menù come quello mostrato in
figura, dove è possibile scegliere se avviare da disco locale o installare una delle distribuzioni
indicate.




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Parte I - Introduzione al net booting


Avvio di un sistema linux
Ogni PC/server è dotato di un software - storicamente un Basic I/O System o BIOS - che fornisce
delle funzionalità minimali e permette l’avvio di un sistema operativo. I computer con GNU/Linux
utilizzano un passaggio intermedio: il boot loader.


Fino all’avvento di UEFI - il sostituto di BIOS - i bootloader dovevano essere installati nei primi 512KB
dell’hard disk primario. Questi software minimali permettono di selezionare all’avvio diversi sistemi
operativi. Oggi il bootloader più usato è GRUB, il GRand Unifier Bootloader, giunto alla versione 2.


Per indicare a GRUB di avviare linux è necessario dargli i seguenti comandi:


          root (hd0,3)
          kernel /vmlinuz-2.6.32 init=/bin/init root=UUID=aa-bb-cc-dd ro
          initrd /initrd-2.6.32.img


         root - identifica la partizione dove risiede il kernel - in questo caso la terza partizione del
          primo disco;
         kernel - il file contenente il kernel, in questo caso vmlinuz-2.6.32. A seguire - sottolineati - i
          parametri da passargli, ossia:
                o    il nome del primo processo da eseguire: init
                o    la partizione, identificata tramite l’UUID o tramite device, da montare sotto /
         initrd - init ram disk, una distribuzione minimale contenente i file necessari ad avviare il
          sistema operativo (ad esempio Red Hat)


E’ semplice vedere che un Init Ram Disc contiene un archivio cpio:


          # file /boot/initrd.img-3.4.0
          /boot/initrd.img-3.4.0: gzip compressed data
          # cp /boot/initrd.img-3.4.0 /tmp/initrd.img.gz && gunzip $_ && file $_
          initrd.img: ASCII cpio archive


Al suo interno troviamo alcune utility, svariati moduli del kernel necessari a montare vari filesystem e
diversi file di avvio:


          # gunzip < /boot/initrd.img-3.4* | cpio -t


BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
…
          etc/modprobe.d/
          etc/lvm
          bin/sh
          init
          scripts/
          lib/firmware/
          lib/modules/
          …


Affinché il sistema parta, è necessario che i driver necessari a montare la root partition (ad
esempio storage in fibra o raid hardware) siano inclusi qui.


A questo punto gli script presenti in initrd.img provvederanno a montare il vero disco ed a
completare l’avvio del sistema.


Boot via rete
Avendo bene in mente gli elementi necessari al boot, vediamo come avviare la nostra macchina
via rete.


Schema logico
Se la parte di BIOS è comune a entrambi i processi, la parte di rete ha bisogno di uno step
aggiuntivo: il supporto al protocollo IP. Molte schede di rete includono un firmware (eg. PXE) che
permette di avviare via rete. In alternativa è possibile usare GRUB con la direttiva network device:


          dhcp
          root=(nd)


La procedura è la seguente:
     1. il PC tramite GRUB o un firmware presente sulla rete effettua una richiesta in broadcast
          attendendo:
          a. un IP con cui configurare la sua interfaccia di rete;
          b. un indirizzo dove scaricare file di avvio
          N.B. un server opportunamente configurato gli fornisce entrambi i dati.
     2. il PC si connette all’indirizzo passatogli che nella maggior parte dei casi è un URI TFTP,
          scarica il file - solitamente contenente un boot loader - e lo esegue;
          a questo punto il boot loader può:
          a. caricare un sistema operativo;
BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
b. oppure mostrare un menù di avvio con diverse scelte.




PXE - Pre eXecution Environment
PXE è un software basato su DHCP e TFTP che esegue la procedura descritta precedentemente.
Una sorta di pre-bootloader che richiede e configura lo stack TCP/IP su una macchina e lo utilizza
per caricare il bootloader effettivo (o un sistema operativo).


Durante la procedura PXE comunica al server DHCP le sue capabilities, ad esempio se è in grado
di scaricare file via HTTP o no.


Anche se i PXE installati nei firmware delle schede di rete supportano solo TFTP, esistono anche
versioni che supportano FibreChannel, iSCSI, HTTP ed altri protocolli. Per utilizzarle è necessario
effettuare una procedura di chain-loader, ossia configurare il DHCP per comportarsi come segue:


se il pxeclient supporta HTTP:
          scarica “http://172.23.0.128/boot/params.php”
altrimenti:
          scarica “/pxelinux-http.1”


Il flusso viene descritto dall’immagine seguente:




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Il client quindi scaricherà prima la nuova ROM, la eseguirà ed al secondo giro l’immagine di avvio
gli verrà fornita via http e contenente ad esempio uno script per PXE generato automaticamente
via PHP (vedi http://ipxe.org/scripting).


DHCP - Dynamic Host Configuration Protocol
Vale la pena rivedere il funzionamento del DHCP: questo ci farà risparmiare tempo nel caso
dovessimo fare attività di troubleshooting durante la messa in opera di Cobbler.


Visto che potrebbero esserci più server DHCP su una stessa rete, la procedura di configurazione
dinamica viene fatta in 4 passaggi:
     1. DISCOVER - il client dice “voglio un ip”
     2. OFFER - il server chiede “ti va bene questo?”
     3. REQUEST - il client dice “ok, mi va’ bene”
     4. ACKNOWLEDGEMENT - il server conferma


Discover
La prima cosa che viene fatta da PXE è una richiesta di DHCP-DISCOVER. E’ un datagramma UDP
inviato in broadcast con:
         MAC destinatario 00:00:00:00:00:00;
         IP mittente e destinatario 0.0.0.0 - visto che non abbiamo nessun IP assegnato;
         porta mittente 68 e porta destinatario 67.


Cobbler ci ricorderà di aprire queste porte sul nostro server!


Offer
Il nostro server DHCP è configurato per essere in ascolto su una o più interfacce di rete, e
risponderà a tale richiesta con una DHCP-OFFER contenente:
         MAC del PC che ha inviato la DISCOVER
         IP destinatario 0.0.0.0 - visto che l’IP non è stato ancora accettato;

BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
    porta mittente 67 e porta destinatario 68;
         IP, netmask, gateway, DNS, NTP ed altre opzioni per il client.


Request
Visto che il client ora conosce l’IP del mittente, la richiesta non sarà più in broadcast e conterrà:
         IP mittente 0.0.0.0;
         porta mittente 68 e porta destinatario 67;
         IP richiesto.


Acknowledgement
A questo punto il server invia un DHCP-ACK: la risposta sarà sempre in broadcast perché il client
non ha ancora configurato la sua interfaccia di rete!
         IP destinatario 0.0.0.0;
         porta mittente 67 e porta destinatario 68;
         IP, Netmask, gateway, DNS ed altre opzioni - ancora una volta.


Tra le varie opzioni, quella che ci interessa è il “boot filename” che - nel caso TFTP - si configura sul
server DHCP tramite due parametri:
         next-server <ip del server tftp>
         filename <path del file da usare per l’avvio>


Di seguito un file di configurazione minimale che assegna ai computer che ne fanno richiesta un IP
compreso tra 172.23.0.64 e 172.23.0.128


          subnet 172.23.0.0 netmask 255.255.255.0 {
              range 172.23.0.64 172.23.0.128;


              # parametri usati per il boot via rete
              next-server 172.23.0.3;
              filename “/pxelinux.0”


              # opzioni ulteriori
              option domain-name-servers 172.23.0.254;
              option domain-name "internal.example.org";
              option routers 172.23.0.1;
              option broadcast-address 172.23.0.255;
          }



BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
TFTP - Trivial FTP
Il TFTP è una versione semplificata dell’FTP basata su UDP e che permette solamente di fare GET e
PUT.


Il server - in ascolto sulla porta 69/UDP - può essere avviato normalmente con:


          # in.tftpd -s /path/to/tftpboot/


oppure tramite un TCP wrapper come inetd o xinetd.


Nel secondo caso vanno abilitati entrambi seguendo le indicazioni dateci da Cobbler:


          # chkconfig tftp on
          # chkconfig xinetd on


Quindi copiate il file pxelinux.0 dentro /path/to/tftpboot/ e avete finito: il client scaricherà questo
file via TFTP e lo eseguirà.


Red Hat Linux e kickstart
Fin qui abbiamo visto i passaggi necessari ad avviare un server via rete. Volendo installare Red Hat
Linux o qualunque altra distribuzione basta sostituire al file pxelinux.0 quello fornito nella ISO della
distribuzione. Tale file infatti conterrà una ROM configurata per avviare il programma di
installazione.


Se vogliamo però far si che la macchina si installi da sola è possibile indicargli un file - detto di
kickstart - contenente i vari passaggi:
         localizzazione;
         partizionamento;
         pacchetti da installare;
         script post-installazione.


Per indicare a Red Hat Linux di eseguire una installazione via kickstart basta avviare la procedura di
installazione indicando al kernel argument ks l’indirizzo contenente la configurazione, ad es.:


          linux ks=http://172.23.0.5/install/ks.php




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
I kickstart sono dei file molto semplici ma possono contenere moltissimi parametri. E’ sufficiente
consultare la documentazione e creare delle configurazioni customizzate utilizzando la GUI ed i
tool scritti in python:
         PyKickstart - http://fedoraproject.org/wiki/Pykickstart
         system-config-kickstart


Repository YUM
Creare un repository yum a partire da una ISO di RHEL è molto semplice. Basta montarla e servirla
via httpd - poiché i file degli indici sono già presenti.


          # mkdir -p /var/www/html/rhel/6Server/en/os/x86_64/
          # mount -oloop rhel-6.iso                       $_


In alternativa avremmo potuto copiare il contenuto della ISO nella cartella in questione,
aggiungere ulteriori package e ricostruire gli indici con:


          # createrepo .


Creato il repository, è necessario configurare il puntamento a yum:


          # cat > /etc/yum.repos.d/cobbler.repo <<EOF
          [rhel-cobbler]
          name=Red Hat Enterprise Linux $releasever - $basearch - Source
          baseurl=http://172.23.0.1/rhel/$releasever/en/os/$basearch/
          enabled=1


          EOF



Parte II – Cobbler


Cobbler
Cobbler è un software scritto in python che mette insieme tutte le componenti viste finora,
fornendo un unico punto di accesso per DHCP, TFTP ed HTTP.


Configureremo un boot server per distribuire ai client un menu di avvio che permetterà di:
         installare diverse distribuzioni - nel caso specifico Red Hat Enterprise Linux 6.3;
         installare diverse configurazioni della stessa distribuzione.

BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Lo stesso sistema può essere esteso per avviare una distro live oppure per formattare ex novo le
macchine: tutto dipende da voi!


Il demone principale - cobblerd - si interfaccia con httpd, dhcpd e xinetd per tftp. L’interfaccia di
gestione principale è il comando cobbler. I file di configurazione sono:
         /etc/cobbler/settings
         /etc/cobbler/dhcpd.template


Un’istantanea dell’infrastruttura è data dall’immagine seguente:




Installazione
Cobbler viene distribuito via EPEL - Extra Packages for Enterprise Linux. EPEL è il repository “non
ufficiale” di Fedora e Red Hat. La versione di sviluppo che trovate su github però ha delle
funzionalità decisamente comode che permetteranno di risparmiare un po’ di spazio sul nostro PC.
Vedremo come installare entrambe.


EPEL - Extra Packages for Enterprise Linux
Installare la versione distribuita via RPM è molto semplice. Basta installare l’rpm epel-release che
aggiunge il repository alla nostra configurazione di yum:

BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-
          6-7.noarch.rpm


Potrete verificare che tutto sia andato a buon fine elencando i repository presenti sul vostro server
col comando:


          # yum repolist
          repo id           repo name                                                                             status
          *epel             Extra Packages for Enterprise Linux 6 - x86_64                                        8,163


A questo punto possiamo installare Cobbler con tutte le sue dipendenze ed alcuni tool per gestire
SELinux ed i kickstart. Dobbiamo aggiungere anche il DHCP - che non rientra nelle dipendenze di
Cobbler. E’ possibile infatti utilizzare Cobbler congiuntamente ad un server DHCP esterno.


          # yum -y install cobbler dhcp pykickstart policycoreutils-python


Abilitiamo i servizi necessari al boot e riavviamo il demone cobblerd dopo esserci messi in tail sul
suo log:


          # for s in cobblerd dhcpd httpd xinetd; do
          chkconfig $s on;
              done
          # tail -f /var/log/cobbler/cobbler.log &
          # service httpd restart
          # service cobblerd restart


In caso di MemoryError è necessario configurare SELinux:
         seguendo queste indicazioni https://github.com/cobbler/cobbler/wiki/SELinux;
         oppure mettendolo in permissive mode (vedi seguito).


Una volta avviato il servizio, Cobbler fornisce una comoda checklist da seguire per la
configurazione. Nell’output di seguito evidenziamo i punti principali:


          # cobbler check


          The following are potential configuration items that you may want to fix:




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
1 : The 'server' field in /etc/cobbler/settings must be set to something
          other than localhost, or kickstarting features will not work.                                                     This should
          be a resolvable hostname or IP for the boot server as reachable by all
          machines that will use it.
          2      :      For       PXE        to      be       functional,              the       'next_server'                field         in
          /etc/cobbler/settings must be set to something other than 127.0.0.1, and
          should match the IP of the boot server on the PXE network.
          3 : some network boot-loaders are missing from /var/lib/cobbler/loaders,
          you may run 'cobbler get-loaders' to download them, or, if you only want
          to handle x86/x86_64 netbooting, you may ensure that you have installed a
          *recent* version of the syslinux package installed and can ignore this
          message entirely.                 Files in this directory, should you want to support all
          architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot.
          The 'cobbler get-loaders' command is the easiest way to resolve these
          requirements.
          4 : change 'disable' to 'no' in /etc/xinetd.d/rsync
          5 : since iptables may be running, ensure 69, 80/443, and 25151 are
          unblocked
          6 : debmirror package is not installed, it will be required to manage
          debian deployments and repositories
          7 : The default password used by the sample templates for newly installed
          machines (default_password_crypted in /etc/cobbler/settings) is still set
          to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-
          phrase-here' 'your-password-here'" to generate new one
          8 : fencing tools were not found, and are required to use the (optional)
          power management features. install cman or fence-agents to use them


          Restart cobblerd and then run 'cobbler sync' to apply changes.


Completiamo la checklist lasciando la parte in rosso - ossia il file di configurazione di cobblerd - alla
fine.


Iptables e Tcp Wrapper
Sbloccare le seguenti porte e salvare la configurazione di iptables:


          # for p in 67 69 80 443 25151; do
          printf “sblocca la porta $p (%s)n ” $(grep "b$pb" /etc/services | cut -
          f 1)
          iptables -I INPUT 3 -m state -m tcp -p tcp --state NEW --dport $p -j
          ACCEPT

BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
done
          # service iptables save


Poi abilitare rsync:


          # chkconfig rsync on


SELinux


Fast and Furious
In alcuni casi è sufficiente mettere in modalità permissiva solamente Cobbler e Apache:


          #semanage permissive -a cobblerd_t
          #semanage permissive -a httpd_t


SeTidy
Potete trovare delle indicazioni complete per la configurazione di SELinux a questo indirizzo
https://github.com/cobbler/cobbler/wiki/SELinux.


Di seguito andiamo invece ad analizzare uno degli errori che SeLinux traccia in audit.log


          type=AVC          msg=audit(1352143196.070:72):                          avc:          denied            {    write        }    for
          pid=2753                comm="cobblerd"                      name="tftp"                   dev=dm-0                ino=133586
          scontext=unconfined_u:system_r:cobblerd_t:s0
          tcontext=system_u:object_r:etc_t:s0 tclass=file


Cobbler non riesce a modificare il file con inode 133586, ossia:


          # ls -lZ $(find /etc -inum 133586 )
          -rw-r--r--. root root system_u:object_r:etc_t:s0                                                   /etc/xinetd.d/tftp


Questo perché il contesto cobbler_t e il contesto etc_t sono differenti.


Bootloaders
Installiamo i bootloader ed aggiorniamo la configurazione:


          # cobbler get_loaders
          # cobbler sync


BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Troveremo nella directory /var/lib/tftpboot la seguente alberatura:


     /var/lib/tftpboot
     - pxelinux.0                                     # bootloader
     - pxelinux.cfg
          * default
     - images                                       # immagini delle distro


Se pxelinux.0 è simile a grub, il file default è l'analogo del vecchio menu.lst che descrive le possibili
opzioni di boot. Quella di default è la seguente - che avvia il boot da disco. Altre verranno
aggiunte man mano che inseriremo delle distro.


          LABEL local
                 MENU LABEL (local)
                 MENU DEFAULT
                 LOCALBOOT -1


Attenzione! Cobbler sovrascriverà il contenuto di /var/lib/tftpboot e /var/www/cobbler/ks_mirror
ad ogni modifica della configurazione. E’ importante non modificare manualmente i file in queste
directory ma gestirli interamente tramite Cobbler.


Cobbler e DHCP
I file di configurazione da modificare sono due e risiedono in /etc/cobbler:
         settings
         dhcp.template - usato per generare il dhcp.conf a partire dai valori in settings


Nel primo andiamo ad impostare:
         l’ip del server sulla rete di erogazione
          server=172.23.0.1
          next_server=172.23.0.1
         i parametri per abilitare il boot via rete
          enable_gpxe: 1
          manage_dhcp: 1
          restart_dhcp: 1
         la password da assegnare alle nuove macchine
          # per generare la nuova password usare il comando
          # openssl passwd -1 -salt "$RANDOM" password


BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
default_password=$1$9002$ZrbVUUibMcl0tJvPdRBuZ.


Nel dhcp.template invece andiamo ad impostare solo la rete di erogazione, poiché l’indirizzo del
next-server (in grassetto) viene impostato a partire dal settings:


          subnet 172.23.1.0 netmask 255.255.255.0 {
                   option routers                                  172.23.1.254;
                   option domain-name-servers 172.23.1.254;
                   option subnet-mask                              255.255.255.0;
                   filename                                        "/pxelinux.0";
                   default-lease-time                              21600;
                   max-lease-time                                  43200;
                   next-server                                     $next_server;
          }


Prima di attivare la configurazione andiamo ad aggiungere in /etc/sysconfig/dhcp l’interfaccia di
erogazione in modo da evitare conflitti con server esistenti.


          # cat /etc/sysconfig/dhcp
          DHCPDARGS=”eth1”


Ora possiamo verificare che tutto sia ok con:


          # cobbler sync


che - tra l’altro - sovrascriverà il file /etc/dhcp/dhcpd.conf.


Aggiungere distribuzioni
Per ora il nostro archivio di distribuzioni è vuoto. Con


          #cobbler list


vediamo le varie entità disponibili:
         distros: sono le distribuzioni che il nostro server ci permette di installare. Vedremo in seguito i
          loro parametri;
         profiles: sono configurazioni particolari di una distribuzione. Ad una distro - ex. RHEL 6.3
          possiamo associare diversi tipi diversi di installazione;



BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
    systems: Cobbler permette di generare dinamicamente le configurazioni customizzate del
          DHCP recuperando i parametri dal database interno di Cobbler.


Iniziamo quindi aggiungendo una distribuzione RHEL6 partendo da una ISO montata localmente.
Dovremo attendere un po' perché Cobbler copierà - usando rsync - il contenuto della iso nella
cartella /var/www/cobbler/ks_mirror:


          # mount -oloop /share/RHEL-6.3.iso /mnt/rhel-6.3/
          # cobbler import --name rhel63 --path=/mnt/rhel-6.3


A processo concluso troveremo in /var/www/cobbler/ks_mirror la seguente alberatura
         ks_mirror
                o    rhel63


Mentre con


          # cobbler list


ci accorgiamo di avere aggiunto non una ma due distribuzioni, con i relativi profili:


          distros
              rhel63-i686
              rhel63-x86_64
          profiles
              rhel63-i686
              rhel63-x86_64


Se utilizziamo una versione più recente di Cobbler ed abbiamo già un repository yum, possiamo
evitare di copiare l'intera distro in ks_mirror usando il parametro --available-as. Questo parametro
duplica solamente i file presenti in un apposito elenco - ossia quelli necessari ad avviare
l'installazione - ma non tutto l'elenco dei pacchetti.


          #cobbler import --name rhel63 
            --path=http://172.23.0.1/repo/6Server/en/os/x86_64/Server 
            --available-as=http://172.23.0.1/repo/6Server/en/os/x86_64/Server


E' possibile scaricare una versione recente di Cobbler utilizzando git, clonando il progetto presente
su github e switchando al branch 24

BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
# yum -y install git
          # git clone git://github.com/cobbler/cobbler.github
          # cd cobbler; git checkout release24


Verifichiamo come opera il parametro available-as controllando direttamente i sorgenti (in
python) e verificando quali file vengono selezionati:


          # egrep -ril available-as cobbler/
          cobbler/api.py
          cobbler/cli.py
          # vim cobbler/api.py +/available-as


               # if --available-as was specified, limit the files we
               # pull down via rsync to just those that are critical
               # to detecting what the distro is
               if network_root is not None:
                       rsync_cmd                    =              rsync_cmd                    +              "             --include-
          from=/etc/cobbler/import_rsync_whitelist"


Dentro Cobbler tutto avviene quindi in modo molto semplice!


Anatomia di una distro
In una distro - oltre ad i classici metadati - ci sono i puntamenti ai file necessari al boot ed all'URL
con gli altri file. Per controllarne il contenuto si usa il comando:


          # cobbler distro report --name rhel63-x86_64
          Name                                                    : rhel63-x86_64
          Architecture                                            : x86_64
          TFTP Boot Files                                         : {}
          Initrd                                                                                                                              :
          /var/www/cobbler/ks_mirror/rhel63/images/pxeboot/initrd.img
          Kernel                                                                                                                             :
          /var/www/cobbler/ks_mirror/rhel63/images/pxeboot/vmlinuz
          Kernel Options                                          : {}
          Kernel Options (Post Install)                           : {}
          Kickstart             Metadata                                                                                 :       {'tree':
          'http://172.23.0.1/rhel/6Server/en/os/x86_64/'}
          OS Version                                              : rhel6


BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
...


Kernel ed Initrd puntano ai file copiati con rsync dalla distribuzione importata.
Sulla riga Kickstart Metadata ritorneremo nel prossimo paragrafo: basta ricordarsi che serve a
impostare delle variabili - nel nostro caso tree.


Sincronizzando la configurazione troveremo nuovi files in giro:
         in /var/lib/tftpboot/images/ ci sarà una directory per ogni distribuzione, contenente i file
          necessari al boot. Nel nostro caso:
          rhel63-x86_64/vmlinuz
          rhel63-x86_64/initrd.img
         in /var/lib/tftpboot/pxelinux.cfg/default ci sarà anche la nuova entry per avviare
          l’installazione di una macchina RHEL 6.3
          LABEL rhel63-x86_64
                        kernel /images/rhel63-x86_64/vmlinuz
                        MENU LABEL rhel63-x86_64
                        append           initrd=/images/rhel63-x86_64/initrd.img                                    ksdevice=bootif
          lang=        kssendmac text               ks=http://172.23.0.1/cblr/svc/op/ks/profile/rhel63-
          x86_64
                        ipappend 2


Profili
Ad ogni distro viene associato un profilo di base, da usare come base per eventuali
customizzazioni.


          # cobbler profile report --name rhel63-x86_64
          Name                                                    : rhel63-x86_64
          DHCP Tag                                                : default
          Distribution                                            : rhel6-x86_64
          Enable gPXE?                                            : 1
          Enable PXE Menu?                                        : 1
          Kernel Options                                          : {}
          Kernel Options (Post Install)                           : {}
          Kickstart                                               : /var/lib/cobbler/kickstarts/sample.ks
          Kickstart Metadata                                      : {}
          ...


La riga Kickstart punta ad un kickstart template, di cui vediamo un estratto di seguito. La password
viene sostituita con quella presente in /etc/cobbler/settings mentre altri parametri possono essere
BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
impostati tramite i Kickstart Metadata visti precedentemente (nel nostro caso $tree viene
rimpiazzato dall’URI impostato nella distro).


          # Use network installation
          url --url=$tree
          # If any cobbler repo definitions were referenced
          # in the kickstart profile, include them here.
          # Reboot after installation
          reboot


          #Root password
          rootpw --iscrypted $default_password_crypted


Creiamo un profilo che usa un kickstart personalizzato. E' importante che il nuovo ks sia già
presente quindi ne creiamo uno a partire da sample.ks:


          # cp       /var/lib/cobbler/kickstarts/{sample,webserver}.ks
          # vim /var/lib/cobbler/kickstarts/webserver.ks # aggiungiamo i pacchetti
          del gruppo web-server con @web-server
          # cobbler profile copy --name rhel63-x86_64 --newname rhel63-webserver
          #        cobbler            profile            edit          --name           rhel63-webserver                    --kickstart
          /var/lib/cobbler/kickstarts/webserver.ks


Aggiungiamo poi alcuni parametri del kernel:


          # cobbler profile edit --name rhel63-webserver --kopts “elevator=deadline
          crashkernel=auto LANG=it_IT.UTF-8”


Terminata la configurazione salviamo le modifiche con:


          # cobbler sync


Per verificare il contenuto del kickstart basta andare sull’URI recuperato da pxelinux.cfg/default:


          # curl -v http://172.23.0.1/cblr/svc/op/ks/profile/$PROFILE_NAME




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Abbiamo un network bootloader!
A questo punto è sufficiente avviare una macchina posta sulla stessa rete del nostro server e - una
volta abilitatole il PXE nel BIOS - vedremo un boot menu che permetterà di scegliere cosa avviare -
come nella schermata mostrata ad inizio articolo.


L’immagine seguente mostra 5 profili creati partendo da 3 distribuzioni. Voi potete sbizzarrirvi e
creare in pochi minuti profili molto differenti o aggiungere distro live.


Se dovesse servirvi, vi ricordo che premendo il tasto TAB è possibile verificare le opzioni di boot
relative all’immagine selezionata - contenente i parametri definiti in pxelinux.cfg/default - ed
inserirne di ulteriori migliorando l’esperienza delle vostre installazioni unattended!




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Licenza d'uso “Attribuzione - Non commerciale - Non opere derivate”, secondo i criteri
internazionali Creative Commons (http://creativecommons.org/licenses/by-nc-nd/2.5/it/)




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015

More Related Content

What's hot

APT per RPM
APT per RPMAPT per RPM
APT per RPM
Francesco Taurino
 
[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni
[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni
[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni
Galliate Linux User Group
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewall
Fulvio Corno
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
Alessandro Selli
 
CatraStreamingPlatform_RedHatMagazine
CatraStreamingPlatform_RedHatMagazineCatraStreamingPlatform_RedHatMagazine
CatraStreamingPlatform_RedHatMagazineGiuliano Catrambone
 
Sistemi videoconferenza-web
Sistemi videoconferenza-webSistemi videoconferenza-web
Sistemi videoconferenza-web
angeloniofficina
 
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Claudio Cardinali
 
Iperf
IperfIperf
Iperf
mquaresi
 
7 Gestione Iindirizzi
7 Gestione Iindirizzi7 Gestione Iindirizzi
7 Gestione Iindirizziacapone
 
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e httpsApache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Fulvio Corno
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Matteo Baccan
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linuxMajong DevJfu
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Matteo Baccan
 
DDive2011 - Performance on Lotus Domino
DDive2011 - Performance on Lotus DominoDDive2011 - Performance on Lotus Domino
DDive2011 - Performance on Lotus DominoGTTech
 
Installazione Linux
Installazione LinuxInstallazione Linux
Installazione Linux
arock84
 
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
Marco Cavallini
 

What's hot (20)

APT per RPM
APT per RPMAPT per RPM
APT per RPM
 
[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni
[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni
[Ubuntu per tutti] 2, La struttura del sistema e prime operazioni
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewall
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
 
CatraStreamingPlatform_RedHatMagazine
CatraStreamingPlatform_RedHatMagazineCatraStreamingPlatform_RedHatMagazine
CatraStreamingPlatform_RedHatMagazine
 
Sistemi videoconferenza-web
Sistemi videoconferenza-webSistemi videoconferenza-web
Sistemi videoconferenza-web
 
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
 
Iperf
IperfIperf
Iperf
 
7 Gestione Iindirizzi
7 Gestione Iindirizzi7 Gestione Iindirizzi
7 Gestione Iindirizzi
 
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e httpsApache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https
 
Packet Sniffing
Packet SniffingPacket Sniffing
Packet Sniffing
 
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linux
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
DDive2011 - Performance on Lotus Domino
DDive2011 - Performance on Lotus DominoDDive2011 - Performance on Lotus Domino
DDive2011 - Performance on Lotus Domino
 
Quickr In Real Life - casi di successo di QuickR
 Quickr In Real Life - casi di successo di QuickR Quickr In Real Life - casi di successo di QuickR
Quickr In Real Life - casi di successo di QuickR
 
Installazione Linux
Installazione LinuxInstallazione Linux
Installazione Linux
 
Lotus Foundations Start - Enzo Stanzione
Lotus Foundations Start - Enzo StanzioneLotus Foundations Start - Enzo Stanzione
Lotus Foundations Start - Enzo Stanzione
 
Sametime 8.x configurarlo ed installarlo
Sametime 8.x configurarlo ed installarloSametime 8.x configurarlo ed installarlo
Sametime 8.x configurarlo ed installarlo
 
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
 

Viewers also liked

Cidway Secure Mobile Access Transactions Short 05 12
Cidway Secure Mobile Access Transactions Short 05 12Cidway Secure Mobile Access Transactions Short 05 12
Cidway Secure Mobile Access Transactions Short 05 12
lfilliat
 
Green Games
Green GamesGreen Games
Green Games
Delhi Jal Board
 
Exposicion De Procesos
Exposicion De ProcesosExposicion De Procesos
Exposicion De Procesos
cpantera73
 
Il Documento Programmatico per la Sicurezza
Il Documento Programmatico per la SicurezzaIl Documento Programmatico per la Sicurezza
Il Documento Programmatico per la Sicurezza
peppespe
 
Gen9 - Domande frequenti
Gen9 - Domande frequentiGen9 - Domande frequenti
Gen9 - Domande frequenti
HP Enterprise Italia
 
Test
TestTest
Test
webdgcom
 
Aspetti giuridici della pubblica amministrazione 2.0
Aspetti giuridici della pubblica amministrazione 2.0Aspetti giuridici della pubblica amministrazione 2.0
Aspetti giuridici della pubblica amministrazione 2.0
WISTER: Women for Intelligent and Smart TERritories
 
Consejos para tu idea de negocio
Consejos para tu idea de negocioConsejos para tu idea de negocio
Consejos para tu idea de negocio
gtrujillo2014
 
Relatorio urna
Relatorio urnaRelatorio urna
Relatorio urna
João Rufino de Sales
 
TFT13 - Nathan McNeill, Securing Remote Support
TFT13 - Nathan McNeill, Securing Remote Support TFT13 - Nathan McNeill, Securing Remote Support
TFT13 - Nathan McNeill, Securing Remote Support
TFT presentations Tomorrow's IT Service Future Today
 
Producto final
Producto finalProducto final
Producto final
Edgariin Gallegos
 
Open data Overview by Bonfieni Marco and Girardelli Chiara
Open data Overview by Bonfieni Marco and Girardelli ChiaraOpen data Overview by Bonfieni Marco and Girardelli Chiara
Open data Overview by Bonfieni Marco and Girardelli ChiaraChiara Girardelli
 
Linux, una rivoluzione accidentale
Linux, una rivoluzione accidentaleLinux, una rivoluzione accidentale
Linux, una rivoluzione accidentaleMauro Murgioni
 
Qca agreement
Qca agreementQca agreement
Qca agreement
data brackets
 
Corporate Forensics
Corporate ForensicsCorporate Forensics
Corporate Forensicswfurlan
 
The High Courts
The High CourtsThe High Courts
The High Courts
Joe Christensen
 
Maintaining a Malware Collection
Maintaining a Malware CollectionMaintaining a Malware Collection
Maintaining a Malware Collection
frisksoftware
 
Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...
Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...
Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...
Informatica e Pianificazione Urbana e Territoriale
 

Viewers also liked (20)

Cidway Secure Mobile Access Transactions Short 05 12
Cidway Secure Mobile Access Transactions Short 05 12Cidway Secure Mobile Access Transactions Short 05 12
Cidway Secure Mobile Access Transactions Short 05 12
 
Green Games
Green GamesGreen Games
Green Games
 
Exposicion De Procesos
Exposicion De ProcesosExposicion De Procesos
Exposicion De Procesos
 
Il Documento Programmatico per la Sicurezza
Il Documento Programmatico per la SicurezzaIl Documento Programmatico per la Sicurezza
Il Documento Programmatico per la Sicurezza
 
Gen9 - Domande frequenti
Gen9 - Domande frequentiGen9 - Domande frequenti
Gen9 - Domande frequenti
 
Test
TestTest
Test
 
Aspetti giuridici della pubblica amministrazione 2.0
Aspetti giuridici della pubblica amministrazione 2.0Aspetti giuridici della pubblica amministrazione 2.0
Aspetti giuridici della pubblica amministrazione 2.0
 
Consejos para tu idea de negocio
Consejos para tu idea de negocioConsejos para tu idea de negocio
Consejos para tu idea de negocio
 
01 Intro07
01 Intro0701 Intro07
01 Intro07
 
Relatorio urna
Relatorio urnaRelatorio urna
Relatorio urna
 
TFT13 - Nathan McNeill, Securing Remote Support
TFT13 - Nathan McNeill, Securing Remote Support TFT13 - Nathan McNeill, Securing Remote Support
TFT13 - Nathan McNeill, Securing Remote Support
 
Producto final
Producto finalProducto final
Producto final
 
Open data Overview by Bonfieni Marco and Girardelli Chiara
Open data Overview by Bonfieni Marco and Girardelli ChiaraOpen data Overview by Bonfieni Marco and Girardelli Chiara
Open data Overview by Bonfieni Marco and Girardelli Chiara
 
Linux, una rivoluzione accidentale
Linux, una rivoluzione accidentaleLinux, una rivoluzione accidentale
Linux, una rivoluzione accidentale
 
Qca agreement
Qca agreementQca agreement
Qca agreement
 
Flame
FlameFlame
Flame
 
Corporate Forensics
Corporate ForensicsCorporate Forensics
Corporate Forensics
 
The High Courts
The High CourtsThe High Courts
The High Courts
 
Maintaining a Malware Collection
Maintaining a Malware CollectionMaintaining a Malware Collection
Maintaining a Malware Collection
 
Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...
Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...
Monitoraggio energetico del patrimonio edilizio: sensori, standard ed archite...
 

Similar to Installare i server via rete con Cobbler

Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domestico
Babel
 
LTSP
LTSPLTSP
Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
Claudio Marotta
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
Fulvio Corno
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Gabriele Guizzardi
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red Hat
Babel
 
TOR - The Onion Router
TOR - The Onion Router TOR - The Onion Router
TOR - The Onion Router
Marcello Viti
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
Marco Buttolo
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
Aruba S.p.A.
 
STARTER KIT ORION….un vero e proprio laboratorio elettronico (by FASAR ELETT...
STARTER KIT ORION….un vero e proprio laboratorio  elettronico (by FASAR ELETT...STARTER KIT ORION….un vero e proprio laboratorio  elettronico (by FASAR ELETT...
STARTER KIT ORION….un vero e proprio laboratorio elettronico (by FASAR ELETT...
Flavio Falcinelli
 
Matteo baccan raspberry pi - linox 2015 - corso parte 1
Matteo baccan   raspberry pi - linox 2015 - corso parte 1Matteo baccan   raspberry pi - linox 2015 - corso parte 1
Matteo baccan raspberry pi - linox 2015 - corso parte 1
Matteo Baccan
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Codemotion
 
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Camelug Fava
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open source
Babel
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
Marcello Missiroli
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
gammsystem
 
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...
Aruba S.p.A.
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Codemotion
 

Similar to Installare i server via rete con Cobbler (20)

Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domestico
 
LTSP
LTSPLTSP
LTSP
 
Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red Hat
 
TOR - The Onion Router
TOR - The Onion Router TOR - The Onion Router
TOR - The Onion Router
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
 
STARTER KIT ORION….un vero e proprio laboratorio elettronico (by FASAR ELETT...
STARTER KIT ORION….un vero e proprio laboratorio  elettronico (by FASAR ELETT...STARTER KIT ORION….un vero e proprio laboratorio  elettronico (by FASAR ELETT...
STARTER KIT ORION….un vero e proprio laboratorio elettronico (by FASAR ELETT...
 
Matteo baccan raspberry pi - linox 2015 - corso parte 1
Matteo baccan   raspberry pi - linox 2015 - corso parte 1Matteo baccan   raspberry pi - linox 2015 - corso parte 1
Matteo baccan raspberry pi - linox 2015 - corso parte 1
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
 
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open source
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
 
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...Con Aruba, a lezione di cloud #lezione 22  - parte 2: Unified Storage, un NAS...
Con Aruba, a lezione di cloud #lezione 22 - parte 2: Unified Storage, un NAS...
 
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
 

More from Babel

Sophos Complete Security: arte e scienza della sicurezza
Sophos Complete Security: arte e scienza della sicurezzaSophos Complete Security: arte e scienza della sicurezza
Sophos Complete Security: arte e scienza della sicurezza
Babel
 
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
Babel
 
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
Babel
 
Intercettazioni: guida alle nuove norme per i provider
Intercettazioni: guida alle nuove norme per i providerIntercettazioni: guida alle nuove norme per i provider
Intercettazioni: guida alle nuove norme per i provider
Babel
 
Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...
Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...
Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...
Babel
 
Will iPython replace Bash?
Will iPython replace Bash?Will iPython replace Bash?
Will iPython replace Bash?
Babel
 
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTMLa gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
Babel
 
Shell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della SicurezzaShell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della Sicurezza
Babel
 
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Babel
 
La Desktop Virtualization
La Desktop VirtualizationLa Desktop Virtualization
La Desktop Virtualization
Babel
 
Crittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con PythonCrittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con Python
Babel
 
Intercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestoriIntercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestori
Babel
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: Opsview
Babel
 
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Babel
 
OpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessmentOpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessment
Babel
 
Testing with MySQL embedded
Testing with MySQL embeddedTesting with MySQL embedded
Testing with MySQL embedded
Babel
 
Sicurezza flessibile con SELinux: architettura e configurazione
Sicurezza flessibile con SELinux: architettura e configurazioneSicurezza flessibile con SELinux: architettura e configurazione
Sicurezza flessibile con SELinux: architettura e configurazione
Babel
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
Babel
 
Il fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisureIl fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisure
Babel
 
Il software open source: regole e licenze
Il software open source: regole e licenzeIl software open source: regole e licenze
Il software open source: regole e licenze
Babel
 

More from Babel (20)

Sophos Complete Security: arte e scienza della sicurezza
Sophos Complete Security: arte e scienza della sicurezzaSophos Complete Security: arte e scienza della sicurezza
Sophos Complete Security: arte e scienza della sicurezza
 
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
 
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
L’innovazione a difesa della tradizione: il caso dell’Archivio Storico della ...
 
Intercettazioni: guida alle nuove norme per i provider
Intercettazioni: guida alle nuove norme per i providerIntercettazioni: guida alle nuove norme per i provider
Intercettazioni: guida alle nuove norme per i provider
 
Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...
Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...
Dalla virtualizzazione al private cloud: Il Patronato INCA rinnova la fiducia...
 
Will iPython replace Bash?
Will iPython replace Bash?Will iPython replace Bash?
Will iPython replace Bash?
 
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTMLa gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
 
Shell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della SicurezzaShell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della Sicurezza
 
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
 
La Desktop Virtualization
La Desktop VirtualizationLa Desktop Virtualization
La Desktop Virtualization
 
Crittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con PythonCrittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con Python
 
Intercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestoriIntercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestori
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: Opsview
 
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
 
OpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessmentOpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessment
 
Testing with MySQL embedded
Testing with MySQL embeddedTesting with MySQL embedded
Testing with MySQL embedded
 
Sicurezza flessibile con SELinux: architettura e configurazione
Sicurezza flessibile con SELinux: architettura e configurazioneSicurezza flessibile con SELinux: architettura e configurazione
Sicurezza flessibile con SELinux: architettura e configurazione
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
Il fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisureIl fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisure
 
Il software open source: regole e licenze
Il software open source: regole e licenzeIl software open source: regole e licenze
Il software open source: regole e licenze
 

Installare i server via rete con Cobbler

  • 1. Cobbler - installation server open source di Roberto Polli Introduzione Linux è un sistema operativo orientato alla rete - ed è spesso usato in modalità diskless o con installazioni via rete. Cobbler è un software che integra le varie componenti necessarie al boot ed all’installazione via rete fornendo un unico pannello di gestione per:  DHCP;  TFTP - una versione minimale del protocollo FTP;  repository per le varie distribuzioni;  file di kickstart per le installazioni automatiche. Quando un sistema viene avviato con Cobbler, viene mostrato un menù come quello mostrato in figura, dove è possibile scegliere se avviare da disco locale o installare una delle distribuzioni indicate. BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 2. Parte I - Introduzione al net booting Avvio di un sistema linux Ogni PC/server è dotato di un software - storicamente un Basic I/O System o BIOS - che fornisce delle funzionalità minimali e permette l’avvio di un sistema operativo. I computer con GNU/Linux utilizzano un passaggio intermedio: il boot loader. Fino all’avvento di UEFI - il sostituto di BIOS - i bootloader dovevano essere installati nei primi 512KB dell’hard disk primario. Questi software minimali permettono di selezionare all’avvio diversi sistemi operativi. Oggi il bootloader più usato è GRUB, il GRand Unifier Bootloader, giunto alla versione 2. Per indicare a GRUB di avviare linux è necessario dargli i seguenti comandi: root (hd0,3) kernel /vmlinuz-2.6.32 init=/bin/init root=UUID=aa-bb-cc-dd ro initrd /initrd-2.6.32.img  root - identifica la partizione dove risiede il kernel - in questo caso la terza partizione del primo disco;  kernel - il file contenente il kernel, in questo caso vmlinuz-2.6.32. A seguire - sottolineati - i parametri da passargli, ossia: o il nome del primo processo da eseguire: init o la partizione, identificata tramite l’UUID o tramite device, da montare sotto /  initrd - init ram disk, una distribuzione minimale contenente i file necessari ad avviare il sistema operativo (ad esempio Red Hat) E’ semplice vedere che un Init Ram Disc contiene un archivio cpio: # file /boot/initrd.img-3.4.0 /boot/initrd.img-3.4.0: gzip compressed data # cp /boot/initrd.img-3.4.0 /tmp/initrd.img.gz && gunzip $_ && file $_ initrd.img: ASCII cpio archive Al suo interno troviamo alcune utility, svariati moduli del kernel necessari a montare vari filesystem e diversi file di avvio: # gunzip < /boot/initrd.img-3.4* | cpio -t BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 3. etc/modprobe.d/ etc/lvm bin/sh init scripts/ lib/firmware/ lib/modules/ … Affinché il sistema parta, è necessario che i driver necessari a montare la root partition (ad esempio storage in fibra o raid hardware) siano inclusi qui. A questo punto gli script presenti in initrd.img provvederanno a montare il vero disco ed a completare l’avvio del sistema. Boot via rete Avendo bene in mente gli elementi necessari al boot, vediamo come avviare la nostra macchina via rete. Schema logico Se la parte di BIOS è comune a entrambi i processi, la parte di rete ha bisogno di uno step aggiuntivo: il supporto al protocollo IP. Molte schede di rete includono un firmware (eg. PXE) che permette di avviare via rete. In alternativa è possibile usare GRUB con la direttiva network device: dhcp root=(nd) La procedura è la seguente: 1. il PC tramite GRUB o un firmware presente sulla rete effettua una richiesta in broadcast attendendo: a. un IP con cui configurare la sua interfaccia di rete; b. un indirizzo dove scaricare file di avvio N.B. un server opportunamente configurato gli fornisce entrambi i dati. 2. il PC si connette all’indirizzo passatogli che nella maggior parte dei casi è un URI TFTP, scarica il file - solitamente contenente un boot loader - e lo esegue; a questo punto il boot loader può: a. caricare un sistema operativo; BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 4. b. oppure mostrare un menù di avvio con diverse scelte. PXE - Pre eXecution Environment PXE è un software basato su DHCP e TFTP che esegue la procedura descritta precedentemente. Una sorta di pre-bootloader che richiede e configura lo stack TCP/IP su una macchina e lo utilizza per caricare il bootloader effettivo (o un sistema operativo). Durante la procedura PXE comunica al server DHCP le sue capabilities, ad esempio se è in grado di scaricare file via HTTP o no. Anche se i PXE installati nei firmware delle schede di rete supportano solo TFTP, esistono anche versioni che supportano FibreChannel, iSCSI, HTTP ed altri protocolli. Per utilizzarle è necessario effettuare una procedura di chain-loader, ossia configurare il DHCP per comportarsi come segue: se il pxeclient supporta HTTP: scarica “http://172.23.0.128/boot/params.php” altrimenti: scarica “/pxelinux-http.1” Il flusso viene descritto dall’immagine seguente: BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 5. Il client quindi scaricherà prima la nuova ROM, la eseguirà ed al secondo giro l’immagine di avvio gli verrà fornita via http e contenente ad esempio uno script per PXE generato automaticamente via PHP (vedi http://ipxe.org/scripting). DHCP - Dynamic Host Configuration Protocol Vale la pena rivedere il funzionamento del DHCP: questo ci farà risparmiare tempo nel caso dovessimo fare attività di troubleshooting durante la messa in opera di Cobbler. Visto che potrebbero esserci più server DHCP su una stessa rete, la procedura di configurazione dinamica viene fatta in 4 passaggi: 1. DISCOVER - il client dice “voglio un ip” 2. OFFER - il server chiede “ti va bene questo?” 3. REQUEST - il client dice “ok, mi va’ bene” 4. ACKNOWLEDGEMENT - il server conferma Discover La prima cosa che viene fatta da PXE è una richiesta di DHCP-DISCOVER. E’ un datagramma UDP inviato in broadcast con:  MAC destinatario 00:00:00:00:00:00;  IP mittente e destinatario 0.0.0.0 - visto che non abbiamo nessun IP assegnato;  porta mittente 68 e porta destinatario 67. Cobbler ci ricorderà di aprire queste porte sul nostro server! Offer Il nostro server DHCP è configurato per essere in ascolto su una o più interfacce di rete, e risponderà a tale richiesta con una DHCP-OFFER contenente:  MAC del PC che ha inviato la DISCOVER  IP destinatario 0.0.0.0 - visto che l’IP non è stato ancora accettato; BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 6. porta mittente 67 e porta destinatario 68;  IP, netmask, gateway, DNS, NTP ed altre opzioni per il client. Request Visto che il client ora conosce l’IP del mittente, la richiesta non sarà più in broadcast e conterrà:  IP mittente 0.0.0.0;  porta mittente 68 e porta destinatario 67;  IP richiesto. Acknowledgement A questo punto il server invia un DHCP-ACK: la risposta sarà sempre in broadcast perché il client non ha ancora configurato la sua interfaccia di rete!  IP destinatario 0.0.0.0;  porta mittente 67 e porta destinatario 68;  IP, Netmask, gateway, DNS ed altre opzioni - ancora una volta. Tra le varie opzioni, quella che ci interessa è il “boot filename” che - nel caso TFTP - si configura sul server DHCP tramite due parametri:  next-server <ip del server tftp>  filename <path del file da usare per l’avvio> Di seguito un file di configurazione minimale che assegna ai computer che ne fanno richiesta un IP compreso tra 172.23.0.64 e 172.23.0.128 subnet 172.23.0.0 netmask 255.255.255.0 { range 172.23.0.64 172.23.0.128; # parametri usati per il boot via rete next-server 172.23.0.3; filename “/pxelinux.0” # opzioni ulteriori option domain-name-servers 172.23.0.254; option domain-name "internal.example.org"; option routers 172.23.0.1; option broadcast-address 172.23.0.255; } BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 7. TFTP - Trivial FTP Il TFTP è una versione semplificata dell’FTP basata su UDP e che permette solamente di fare GET e PUT. Il server - in ascolto sulla porta 69/UDP - può essere avviato normalmente con: # in.tftpd -s /path/to/tftpboot/ oppure tramite un TCP wrapper come inetd o xinetd. Nel secondo caso vanno abilitati entrambi seguendo le indicazioni dateci da Cobbler: # chkconfig tftp on # chkconfig xinetd on Quindi copiate il file pxelinux.0 dentro /path/to/tftpboot/ e avete finito: il client scaricherà questo file via TFTP e lo eseguirà. Red Hat Linux e kickstart Fin qui abbiamo visto i passaggi necessari ad avviare un server via rete. Volendo installare Red Hat Linux o qualunque altra distribuzione basta sostituire al file pxelinux.0 quello fornito nella ISO della distribuzione. Tale file infatti conterrà una ROM configurata per avviare il programma di installazione. Se vogliamo però far si che la macchina si installi da sola è possibile indicargli un file - detto di kickstart - contenente i vari passaggi:  localizzazione;  partizionamento;  pacchetti da installare;  script post-installazione. Per indicare a Red Hat Linux di eseguire una installazione via kickstart basta avviare la procedura di installazione indicando al kernel argument ks l’indirizzo contenente la configurazione, ad es.: linux ks=http://172.23.0.5/install/ks.php BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 8. I kickstart sono dei file molto semplici ma possono contenere moltissimi parametri. E’ sufficiente consultare la documentazione e creare delle configurazioni customizzate utilizzando la GUI ed i tool scritti in python:  PyKickstart - http://fedoraproject.org/wiki/Pykickstart  system-config-kickstart Repository YUM Creare un repository yum a partire da una ISO di RHEL è molto semplice. Basta montarla e servirla via httpd - poiché i file degli indici sono già presenti. # mkdir -p /var/www/html/rhel/6Server/en/os/x86_64/ # mount -oloop rhel-6.iso $_ In alternativa avremmo potuto copiare il contenuto della ISO nella cartella in questione, aggiungere ulteriori package e ricostruire gli indici con: # createrepo . Creato il repository, è necessario configurare il puntamento a yum: # cat > /etc/yum.repos.d/cobbler.repo <<EOF [rhel-cobbler] name=Red Hat Enterprise Linux $releasever - $basearch - Source baseurl=http://172.23.0.1/rhel/$releasever/en/os/$basearch/ enabled=1 EOF Parte II – Cobbler Cobbler Cobbler è un software scritto in python che mette insieme tutte le componenti viste finora, fornendo un unico punto di accesso per DHCP, TFTP ed HTTP. Configureremo un boot server per distribuire ai client un menu di avvio che permetterà di:  installare diverse distribuzioni - nel caso specifico Red Hat Enterprise Linux 6.3;  installare diverse configurazioni della stessa distribuzione. BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 9. Lo stesso sistema può essere esteso per avviare una distro live oppure per formattare ex novo le macchine: tutto dipende da voi! Il demone principale - cobblerd - si interfaccia con httpd, dhcpd e xinetd per tftp. L’interfaccia di gestione principale è il comando cobbler. I file di configurazione sono:  /etc/cobbler/settings  /etc/cobbler/dhcpd.template Un’istantanea dell’infrastruttura è data dall’immagine seguente: Installazione Cobbler viene distribuito via EPEL - Extra Packages for Enterprise Linux. EPEL è il repository “non ufficiale” di Fedora e Red Hat. La versione di sviluppo che trovate su github però ha delle funzionalità decisamente comode che permetteranno di risparmiare un po’ di spazio sul nostro PC. Vedremo come installare entrambe. EPEL - Extra Packages for Enterprise Linux Installare la versione distribuita via RPM è molto semplice. Basta installare l’rpm epel-release che aggiunge il repository alla nostra configurazione di yum: BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 10. # rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release- 6-7.noarch.rpm Potrete verificare che tutto sia andato a buon fine elencando i repository presenti sul vostro server col comando: # yum repolist repo id repo name status *epel Extra Packages for Enterprise Linux 6 - x86_64 8,163 A questo punto possiamo installare Cobbler con tutte le sue dipendenze ed alcuni tool per gestire SELinux ed i kickstart. Dobbiamo aggiungere anche il DHCP - che non rientra nelle dipendenze di Cobbler. E’ possibile infatti utilizzare Cobbler congiuntamente ad un server DHCP esterno. # yum -y install cobbler dhcp pykickstart policycoreutils-python Abilitiamo i servizi necessari al boot e riavviamo il demone cobblerd dopo esserci messi in tail sul suo log: # for s in cobblerd dhcpd httpd xinetd; do chkconfig $s on; done # tail -f /var/log/cobbler/cobbler.log & # service httpd restart # service cobblerd restart In caso di MemoryError è necessario configurare SELinux:  seguendo queste indicazioni https://github.com/cobbler/cobbler/wiki/SELinux;  oppure mettendolo in permissive mode (vedi seguito). Una volta avviato il servizio, Cobbler fornisce una comoda checklist da seguire per la configurazione. Nell’output di seguito evidenziamo i punti principali: # cobbler check The following are potential configuration items that you may want to fix: BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 11. 1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it. 2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network. 3 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements. 4 : change 'disable' to 'no' in /etc/xinetd.d/rsync 5 : since iptables may be running, ensure 69, 80/443, and 25151 are unblocked 6 : debmirror package is not installed, it will be required to manage debian deployments and repositories 7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random- phrase-here' 'your-password-here'" to generate new one 8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them Restart cobblerd and then run 'cobbler sync' to apply changes. Completiamo la checklist lasciando la parte in rosso - ossia il file di configurazione di cobblerd - alla fine. Iptables e Tcp Wrapper Sbloccare le seguenti porte e salvare la configurazione di iptables: # for p in 67 69 80 443 25151; do printf “sblocca la porta $p (%s)n ” $(grep "b$pb" /etc/services | cut - f 1) iptables -I INPUT 3 -m state -m tcp -p tcp --state NEW --dport $p -j ACCEPT BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 12. done # service iptables save Poi abilitare rsync: # chkconfig rsync on SELinux Fast and Furious In alcuni casi è sufficiente mettere in modalità permissiva solamente Cobbler e Apache: #semanage permissive -a cobblerd_t #semanage permissive -a httpd_t SeTidy Potete trovare delle indicazioni complete per la configurazione di SELinux a questo indirizzo https://github.com/cobbler/cobbler/wiki/SELinux. Di seguito andiamo invece ad analizzare uno degli errori che SeLinux traccia in audit.log type=AVC msg=audit(1352143196.070:72): avc: denied { write } for pid=2753 comm="cobblerd" name="tftp" dev=dm-0 ino=133586 scontext=unconfined_u:system_r:cobblerd_t:s0 tcontext=system_u:object_r:etc_t:s0 tclass=file Cobbler non riesce a modificare il file con inode 133586, ossia: # ls -lZ $(find /etc -inum 133586 ) -rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/xinetd.d/tftp Questo perché il contesto cobbler_t e il contesto etc_t sono differenti. Bootloaders Installiamo i bootloader ed aggiorniamo la configurazione: # cobbler get_loaders # cobbler sync BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 13. Troveremo nella directory /var/lib/tftpboot la seguente alberatura: /var/lib/tftpboot - pxelinux.0 # bootloader - pxelinux.cfg * default - images # immagini delle distro Se pxelinux.0 è simile a grub, il file default è l'analogo del vecchio menu.lst che descrive le possibili opzioni di boot. Quella di default è la seguente - che avvia il boot da disco. Altre verranno aggiunte man mano che inseriremo delle distro. LABEL local MENU LABEL (local) MENU DEFAULT LOCALBOOT -1 Attenzione! Cobbler sovrascriverà il contenuto di /var/lib/tftpboot e /var/www/cobbler/ks_mirror ad ogni modifica della configurazione. E’ importante non modificare manualmente i file in queste directory ma gestirli interamente tramite Cobbler. Cobbler e DHCP I file di configurazione da modificare sono due e risiedono in /etc/cobbler:  settings  dhcp.template - usato per generare il dhcp.conf a partire dai valori in settings Nel primo andiamo ad impostare:  l’ip del server sulla rete di erogazione server=172.23.0.1 next_server=172.23.0.1  i parametri per abilitare il boot via rete enable_gpxe: 1 manage_dhcp: 1 restart_dhcp: 1  la password da assegnare alle nuove macchine # per generare la nuova password usare il comando # openssl passwd -1 -salt "$RANDOM" password BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 14. default_password=$1$9002$ZrbVUUibMcl0tJvPdRBuZ. Nel dhcp.template invece andiamo ad impostare solo la rete di erogazione, poiché l’indirizzo del next-server (in grassetto) viene impostato a partire dal settings: subnet 172.23.1.0 netmask 255.255.255.0 { option routers 172.23.1.254; option domain-name-servers 172.23.1.254; option subnet-mask 255.255.255.0; filename "/pxelinux.0"; default-lease-time 21600; max-lease-time 43200; next-server $next_server; } Prima di attivare la configurazione andiamo ad aggiungere in /etc/sysconfig/dhcp l’interfaccia di erogazione in modo da evitare conflitti con server esistenti. # cat /etc/sysconfig/dhcp DHCPDARGS=”eth1” Ora possiamo verificare che tutto sia ok con: # cobbler sync che - tra l’altro - sovrascriverà il file /etc/dhcp/dhcpd.conf. Aggiungere distribuzioni Per ora il nostro archivio di distribuzioni è vuoto. Con #cobbler list vediamo le varie entità disponibili:  distros: sono le distribuzioni che il nostro server ci permette di installare. Vedremo in seguito i loro parametri;  profiles: sono configurazioni particolari di una distribuzione. Ad una distro - ex. RHEL 6.3 possiamo associare diversi tipi diversi di installazione; BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 15. systems: Cobbler permette di generare dinamicamente le configurazioni customizzate del DHCP recuperando i parametri dal database interno di Cobbler. Iniziamo quindi aggiungendo una distribuzione RHEL6 partendo da una ISO montata localmente. Dovremo attendere un po' perché Cobbler copierà - usando rsync - il contenuto della iso nella cartella /var/www/cobbler/ks_mirror: # mount -oloop /share/RHEL-6.3.iso /mnt/rhel-6.3/ # cobbler import --name rhel63 --path=/mnt/rhel-6.3 A processo concluso troveremo in /var/www/cobbler/ks_mirror la seguente alberatura  ks_mirror o rhel63 Mentre con # cobbler list ci accorgiamo di avere aggiunto non una ma due distribuzioni, con i relativi profili: distros rhel63-i686 rhel63-x86_64 profiles rhel63-i686 rhel63-x86_64 Se utilizziamo una versione più recente di Cobbler ed abbiamo già un repository yum, possiamo evitare di copiare l'intera distro in ks_mirror usando il parametro --available-as. Questo parametro duplica solamente i file presenti in un apposito elenco - ossia quelli necessari ad avviare l'installazione - ma non tutto l'elenco dei pacchetti. #cobbler import --name rhel63 --path=http://172.23.0.1/repo/6Server/en/os/x86_64/Server --available-as=http://172.23.0.1/repo/6Server/en/os/x86_64/Server E' possibile scaricare una versione recente di Cobbler utilizzando git, clonando il progetto presente su github e switchando al branch 24 BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 16. # yum -y install git # git clone git://github.com/cobbler/cobbler.github # cd cobbler; git checkout release24 Verifichiamo come opera il parametro available-as controllando direttamente i sorgenti (in python) e verificando quali file vengono selezionati: # egrep -ril available-as cobbler/ cobbler/api.py cobbler/cli.py # vim cobbler/api.py +/available-as # if --available-as was specified, limit the files we # pull down via rsync to just those that are critical # to detecting what the distro is if network_root is not None: rsync_cmd = rsync_cmd + " --include- from=/etc/cobbler/import_rsync_whitelist" Dentro Cobbler tutto avviene quindi in modo molto semplice! Anatomia di una distro In una distro - oltre ad i classici metadati - ci sono i puntamenti ai file necessari al boot ed all'URL con gli altri file. Per controllarne il contenuto si usa il comando: # cobbler distro report --name rhel63-x86_64 Name : rhel63-x86_64 Architecture : x86_64 TFTP Boot Files : {} Initrd : /var/www/cobbler/ks_mirror/rhel63/images/pxeboot/initrd.img Kernel : /var/www/cobbler/ks_mirror/rhel63/images/pxeboot/vmlinuz Kernel Options : {} Kernel Options (Post Install) : {} Kickstart Metadata : {'tree': 'http://172.23.0.1/rhel/6Server/en/os/x86_64/'} OS Version : rhel6 BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 17. ... Kernel ed Initrd puntano ai file copiati con rsync dalla distribuzione importata. Sulla riga Kickstart Metadata ritorneremo nel prossimo paragrafo: basta ricordarsi che serve a impostare delle variabili - nel nostro caso tree. Sincronizzando la configurazione troveremo nuovi files in giro:  in /var/lib/tftpboot/images/ ci sarà una directory per ogni distribuzione, contenente i file necessari al boot. Nel nostro caso: rhel63-x86_64/vmlinuz rhel63-x86_64/initrd.img  in /var/lib/tftpboot/pxelinux.cfg/default ci sarà anche la nuova entry per avviare l’installazione di una macchina RHEL 6.3 LABEL rhel63-x86_64 kernel /images/rhel63-x86_64/vmlinuz MENU LABEL rhel63-x86_64 append initrd=/images/rhel63-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://172.23.0.1/cblr/svc/op/ks/profile/rhel63- x86_64 ipappend 2 Profili Ad ogni distro viene associato un profilo di base, da usare come base per eventuali customizzazioni. # cobbler profile report --name rhel63-x86_64 Name : rhel63-x86_64 DHCP Tag : default Distribution : rhel6-x86_64 Enable gPXE? : 1 Enable PXE Menu? : 1 Kernel Options : {} Kernel Options (Post Install) : {} Kickstart : /var/lib/cobbler/kickstarts/sample.ks Kickstart Metadata : {} ... La riga Kickstart punta ad un kickstart template, di cui vediamo un estratto di seguito. La password viene sostituita con quella presente in /etc/cobbler/settings mentre altri parametri possono essere BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 18. impostati tramite i Kickstart Metadata visti precedentemente (nel nostro caso $tree viene rimpiazzato dall’URI impostato nella distro). # Use network installation url --url=$tree # If any cobbler repo definitions were referenced # in the kickstart profile, include them here. # Reboot after installation reboot #Root password rootpw --iscrypted $default_password_crypted Creiamo un profilo che usa un kickstart personalizzato. E' importante che il nuovo ks sia già presente quindi ne creiamo uno a partire da sample.ks: # cp /var/lib/cobbler/kickstarts/{sample,webserver}.ks # vim /var/lib/cobbler/kickstarts/webserver.ks # aggiungiamo i pacchetti del gruppo web-server con @web-server # cobbler profile copy --name rhel63-x86_64 --newname rhel63-webserver # cobbler profile edit --name rhel63-webserver --kickstart /var/lib/cobbler/kickstarts/webserver.ks Aggiungiamo poi alcuni parametri del kernel: # cobbler profile edit --name rhel63-webserver --kopts “elevator=deadline crashkernel=auto LANG=it_IT.UTF-8” Terminata la configurazione salviamo le modifiche con: # cobbler sync Per verificare il contenuto del kickstart basta andare sull’URI recuperato da pxelinux.cfg/default: # curl -v http://172.23.0.1/cblr/svc/op/ks/profile/$PROFILE_NAME BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 19. Abbiamo un network bootloader! A questo punto è sufficiente avviare una macchina posta sulla stessa rete del nostro server e - una volta abilitatole il PXE nel BIOS - vedremo un boot menu che permetterà di scegliere cosa avviare - come nella schermata mostrata ad inizio articolo. L’immagine seguente mostra 5 profili creati partendo da 3 distribuzioni. Voi potete sbizzarrirvi e creare in pochi minuti profili molto differenti o aggiungere distro live. Se dovesse servirvi, vi ricordo che premendo il tasto TAB è possibile verificare le opzioni di boot relative all’immagine selezionata - contenente i parametri definiti in pxelinux.cfg/default - ed inserirne di ulteriori migliorando l’esperienza delle vostre installazioni unattended! BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 20. Licenza d'uso “Attribuzione - Non commerciale - Non opere derivate”, secondo i criteri internazionali Creative Commons (http://creativecommons.org/licenses/by-nc-nd/2.5/it/) BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015