24
Cobbler: Quando Linux installa Linux e ti fa le scarpe! Stefano Frontori Associazione di Promozione Sociale LOLUG – Gruppo Utenti Linux Lodi [email protected]

Sfrontori pillole-cobbler

Embed Size (px)

Citation preview

Cobbler: Quando Linux installa Linuxe ti fa le scarpe!

Stefano FrontoriAssociazione di Promozione Sociale LOLUG – Gruppo Utenti Linux [email protected]

PILLOle: CobblerStefano Frontori 2

Spesso accade che...

devo (re)installare il sistema operativo:

● Che noia, ma quanto ci mette?

● non trovo più il CD... (e se il lettore non cè?)

● mi sono sbagliato, lo devo reinstallare?

● ma come lo avevo configurato?

PILLOle: CobblerStefano Frontori 3

Cobbler

● Ufficialmente: “Installation e update server for Linux”

● Un server linux che ci permette di avere un ambiente di installazione centralizzato, modulare e flessibile.

● basato su pochi e semplici oggetti,● distro, profili, sistemi, immagini e repository.

● Gestisce macchine fisiche e virtuali

PILLOle: CobblerStefano Frontori 4

Installazione & config

[root@ariel ~]# yum -y install cobbler koan tftp-server dhcp httpd bind

[root@ariel ~]# cobbler check ....

[root@ariel ~]# vim /etc/cobbler/settings

[root@ariel ~]# service cobblerd restart

PILLOle: CobblerStefano Frontori 5

Una semplice procedura

[root@ariel ~]# cobbler listdisto Fedora-10-i386 profile Fedora-10-i386 profile rescue-Fedora-10-i386

[root@ariel ~]# cobbler import --mirror=/media/cdrom/ --name=Fedora-10-i386

PILLOle: CobblerStefano Frontori 6

Le Distribuzioni

● Kernel = software avente il compito di fornire ai processi in esecuzione sull'elaboratore un accesso sicuro e controllato all'hardware.

● Initrd = "initial ramdisk", ed è un piccolo filesystem montato in memoria da Linux nella fase iniziale della procedura di boot

cobbler distro add --name=string --kernel=path --initrd=path

PILLOle: CobblerStefano Frontori 7

Object tree

Distro

Profili

Sistemi

kernel

initrd

kickstart

interfacce

Repo

Immagini

ProfiliProfilikickstart

Data mirror

Binary

PILLOle: CobblerStefano Frontori 8

Aggiungere un profilo

● Ogni profilo è caratterizzato da un file di kickstart

● Ad ogni distro possono essere associati uno o più profili

[root@ariel ~]# cobbler profile add --name=myWebServer-Fedora-10 --distro=Fedora10-i386--kickstart=/path/my-WebServer-kickstart.ks

PILLOle: CobblerStefano Frontori 9

I profili● Sono l'associazione tra una distribuzione e un

file di kickstart

● Un profilo specializza la configurazione di una tipologia di macchine● web server, mail, ftp, desktop...

cobbler profile add --name=string --distro=string [--kickstart=path]

PILLOle: CobblerStefano Frontori 10

I file di kickstart#platform=x86, AMD64, or Intel EM64T# System authorization informationauth --useshadow --enablemd5# System bootloader configurationbootloader --location=mbr# Partition clearing informationclearpart --all --initlabel# Use text mode installtext# Firewall configurationfirewall --disabled# Run the Setup Agent on first bootfirstboot --disable# System keyboardkeyboard it# System languagelang en_US# Use network installationurl --url=$tree# If any cobbler repo definitions were referenced in the kickstart $yum_repo_stanza# Network information$SNIPPET('network_config')# Reboot after installationreboot

PILLOle: CobblerStefano Frontori 11

Object tree

Distro

Profili

Sistemi

kernel

initrd

kickstart

interfacce

Repo

Immagini

ProfiliProfilikickstart

Data mirror

Binary

PILLOle: CobblerStefano Frontori 12

Aggiungere un sistema

● Da un profilo possiamo creare un sistema semplicemente associandogli un interfaccia di rete.● un pezzo di hardware indentificaco da un mac

address

[root@ariel ~]# cobbler system add --name=myDesktop --profile=myDesktop-Fedora-10--interface=eth0 --ip=192.168.0.50 --mac=AA:BB:CC:DD:EE:A1

PILLOle: CobblerStefano Frontori 13

I sistemi

● Cobbler gestisce le interfacce attraverso gli snippets● pre_install_network_config● post_install_network_config

contenuti nel file di kickstart associato al

sistema

cobbler system add --name=string --profile=string [--mac=macaddress]

PILLOle: CobblerStefano Frontori 14

Snippets● Gli snippets rendono dinamico (!) un file di

kickstart

%pre$kickstart_start$SNIPPET('pre_install_network_config')

%packages$SNIPPET('func_install_if_enabled')

%post# Start yum configuration $yum_config_stanza# End yum configuration$SNIPPET('post_install_kernel_options')$SNIPPET('post_install_network_config')$SNIPPET('func_register_if_enabled')$SNIPPET('download_config_files')# Enable post-install boot notification$SNIPPET('post_anamon')# Start final steps$kickstart_done

PILLOle: CobblerStefano Frontori 15

Object tree

Distro

Profili

Sistemi

kernel

initrd

kickstart

interfacce

Repo

Immagini

ProfiliProfilikickstart

Data mirror

Binary

PILLOle: CobblerStefano Frontori 16

Repository e Immagini

[root@ariel ~]# cobbler repo add--mirror=http://mirrors.kernel.org/fedora-10/--name=Fedora10-i386-updates

[root@ariel ~]# cobbler image add --name=Fedora-10-LIVE --file=/path/Fedora-10-LIVE.iso --image-type=iso

PILLOle: CobblerStefano Frontori 17

Provisioning

Abbiamo aggiunto tutto quello che ci serve, ora come lo installiamo?

● Cobbler supporta l'installazione via rete tramite PXE (preboot execution enviroment)

● anche la gestione di servizi dhcp e di bind

[root@ariel ~]# vim /etc/cobbler/dhcp.template[root@ariel ~]# service dhcpd start[root@ariel ~]# service xinetd start

PILLOle: CobblerStefano Frontori 18

Provisioning● Ogni volta che si aggiunge o crea un

elemento è necessario riavviare tutti i servizi utilizzati

● È anche possibile fare provisionig alla vecchia maniera, a mano ;-)

[root@ariel ~]# cobbler sync

[root@ariel ~]# cobbler buildiso

PILLOle: CobblerStefano Frontori 19

VirtualizzareE se avessi la necessità di macchine virtuali?

● Koan (kickstart over a network) gestisce il processo di installazione su di una macchina

● virtuale (Xen, Kvm/Qemu, VmWare)● dove non è possibile utilizzare PXE● per reinstallare un sistema già esistente

[root@ariel ~]# koan --server=myCobblerServer --replace-self --system=myVirtual-WebServer

PILLOle: CobblerStefano Frontori 20

Cobbler web interface

PILLOle: CobblerStefano Frontori 21

Api & Xmlrpc● Cobbler mette a disposiozione delle comode

api per accedere alle funzionalità del server

#!/usr/bin/env python

from cobbler import api as cobbler_apicobbler_api = cobbler_api.BootAPI()

import xmlrpclib

my_uri = "http://192.168.0.1/cobbler_api_rw" remote = xmlrpclib.Server(my_uri)# now add a profile pro_id = remote.new_profile(token) remote.modify_profile(pro_id, 'name', profilename, token) remote.modify_profile(pro_id, 'distro', distroname, token) remote.modify_profile(pro_id, 'kickstart', kslink, token)

status = remote.save_profile(pro_id,token)

PILLOle: CobblerStefano Frontori 22

Useful Command● È possibile importare in cobbler anche sistemi

non unix-like

● È anche possibile fare il provisioning di distribuzioni Live!

[root@ariel ~]# koan --server=myCobblerServer --virt --virt-name=Fedora-9-LIVECD -C --image=Fedora-9-LiveCD

[root@ariel ~]# cobbler image add --name=WindowsXP --filename=WindowsXP.iso

PILLOle: CobblerStefano Frontori 23

Domande?

PILLOle: CobblerStefano Frontori 24

Riferimenti

● Main Site:https://fedorahosted.org/cobbler/

● User Documentation● https://fedorahosted.org/cobbler/wiki/UserDocs

● Developer Documentation● https://fedorahosted.org/cobbler/wiki/DeveloperDocs