Grml Live-Linux für Deployment und Desaster Recovery

Grml Live-Linux
für Deployment +
Desaster Recovery
Michael Prokop <[email protected]>
Michael Prokop
Projektleiter von Grml
Debian-Entwickler
IT + Open Source Consultant (Grml-Solutions.com)
Mitglied im Debian Forensic-Team
Gründer von Grml-Forensic
Editor im Operating Team von InfoQ.com
.. mag Katzen!
Grml?
2004
32bit
64bit
Bekannt für „unübliche“
Releasenamen
Lackdose-Allergie
Hustenstopper
Schluchtenscheisser
Hello-Wien
Funkenzutzler
Meilenschwein
Bootenschnitzl
Skunk
Winterschlapfn
Dioptrienotto
Eierspass
Tokolytika
… und aktuell:
Besuchertasche
Wer nutzt Grml?
Was ist unter
der Haube?
• Debian
• offizielle Debian-Pakete
• Grml-Pakete (Open Source +
öffentlich zugänglich)
• Aufs als Overlay-System
• SquashFS als komprimiertes root-fs
Core-Technologien?
Userspace
udev
initramfs-tools
live-initramfs
...
Debian-Pakete
3rd party Software
Dateisystem
Kernel
Block Device
Hardware
grml / grml-live
Booten
•
•
•
•
Textmodus
12 virt. Konsolen
screen, getty, iptstate, multitail, htop
X.org optional:
– grml-x
– Bootoption startx
Praktische
Bootoptionen
•
•
•
•
•
grml nodhcp
grml ssh=passwort
grml2ram / grml toram=file.squashfs
grml lang=de / keyboard=de
...
LVM + RAID
• LVM:
– Bootoption „lvm“ (nolvm)
– „Start lvm2“ [:= /etc/init.d/lvm2 start]
• SW-RAID:
– -Bootoption „swraid“ (noswraid)
– „Start mdadm-raid“
Neues in 2010.04
•
•
•
•
•
dmraid=on / dmraid=off / nodmraid
vnc=password startx[=wm]
bootid=...
verbessertes Serial Console Setup
robusteres PXE-Booten →
PXE mit mehreren NICs
•
•
•
•
Default: alle NICs via DHCP
'ethdevice=eth1': nur eth1
'ethdevice=eth0,eth1': eth0 + eth1
'ethdevice-timeout=30': Timeout für
Konfiguration von 15 (Default) auf
30 Sekunden erhöhen
PXE-Boot Bsp.
grml-quickconfig
• Modularisiert + konfigurierbar:
% cat /usr/share/grml-quickconfig/010-network.sh
# grml-network module for grml-quickconfig
LINE='print_line "Configure ${HIGHLIGHT}n$
{NORMAL}etwork ($HIGHLIGHT_NAME}
netcardconfig${NORMAL})"'
KEY=(n)
FUNCTION='run netcardconfig'
display_entry() { return 0 ; }
grml2usb
• Grml auf USB-Stick installieren
• grml2usb bietet Support für
Multi-ISOs:
# grml2usb \
--bootoptions „ssh=GLT10“ \
grml-medium_2010.04.iso \
grml64-medium_2010.04.iso \
/dev/sdb1
grml-terminalserver
•
•
Use Case: Grml auf vielen Clients [gleichzeitig] booten
Grml via PXE booten – schnell und einfach:
# grml-terminalserver
HA PXE Setup
•
•
•
•
DRBD
Heartbeat
Redundante Hardware
Bootoption netscript, z.B.:
netscript=http://example.org/foo.sh
netscript
• Konfiguration:
cat > script.sh << EOF
#!/bin/sh
printf „hello world\n“
EOF
python -m SimpleHTTPServer
• Grml booten via:
... netscript=http://example.org:8000/script.sh
HA PXE - Deployment
System bootet
Ist System bereits registriert?
Nein
Ins DeploymentNetzwerk booten
Ja
Deployment
Ins ProduktionsNetzwerk booten
System registrieren/ Server bereits deployed?
inventarisieren
Ja
Nein
Produktivbetrieb
Grml via PXE
ohne NFS booten
• Kernel, initrd + squashfs vom ISO extrahieren
• Webserver liefert Dateien
• pxelinux.cfg/default:
LABEL grml-small-2010.04
MENU LABEL grml-small 2010.04 (HTTP)
kernel grml/2010.04/small-linux26
append initrd=grml/2010.04/small-minirt26.gz \
boot=live \
fetch=http://example.org/grml/grml-small.squashfs \
nodhcp noeject vga=791 ssh=glt10
• s.a. http://www.pro-linux.de/news/2008/13569.html
myconfig
myconfig=/dev/sda1
scripts=boot/grml/network.sh
#!/bin/sh
ip link set dev eth0 up
ip addr add dev eth0 192.168.8.240/24 brd +
ip route add default via 192.168.8.254
echo nameserver 192.168.8.254 >
/etc/resolv.conf
echo “grml:1234” | chpasswd
/etc/init.d/ssh start
Booten via
Remote Adapter
• HP iLO
• IBM RSA/AMM/...
• ...
HP i(ntegrated)
L(ights) O(ut) 2
• Login via ssh → iLO-Prompt (</>hpiLO->):
power reset
vsp
vm cdrom get
vm cdrom insert http://1.2.3.4/grml.iso
vm cdrom set [boot_once|boot_always]
power warm
• Grml mit Bootoption „serial“ booten
IBM Remote Disk
• Remote Supervisor Adapter II (RSA II)
• BladeCenter [Advanced] Management
Module (AMM):
ssh admin@$BLADE
boot -T system:blade[$NR]
Blade Tasks → Remote Control → Start
Remote Control → Remote Disk
IBM AMM –
Remote Disk 1/3
IBM AMM –
Remote Disk 2/3
IBM AMM –
Remote Disk 3/3
Serielle Konsole
mit Grub
# main serial config:
serial --unit=0 –speed=115200
[--word=8 --parity=no –stop=1]
# terminal config for grub1:
terminal serial console
# terminal config for grub2:
terminal_input console serial
Tipps:
• http://wiki.grml.org/doku.php?id=rescue
• Offical HP doc – Google for „Integrated LightsOut Virtual Serial Port configuration and
operation“
grml-live
• Framework fürs Bauen von Debianbasierten Live-Systemen
– Offizielles Buildsystem für Grml
• Basiert auf FAI (Full Automated Installation)
• Klassenbasiert:
– Software-Auswahl simpel via
Plaintext-Datei
• Vollautomatisierbar:
– daily.grml.org
Deployment
• Installation
• Provisioning/Konfiguration
Installation
• Debian:
– [c]debootstrap
– grml-debootstrap
– FAI
• Gentoo:
http://www.gentoo.org/doc/en/handbook/handb
ook-x86.xml
• Fedora:
– febootstrap
– cobbler/koan
grml-debootstrap
$PARTITIONING # upcoming: fai-setup-storage
echo 'y' |grml-debootstrap -m $MIRROR \
-r $SUITE -t $TARGET --hostname $HOSTNAME \
--password $PWD
cat << EOT |grml-chroot $TARGET /bin/bash
$DO_WHATEVER_YOU_WANT_IN_THE_CHROOT
EOT
[fai-]setup-storage
# cat << EOT | setup-storage -X -f disk_config sdc
primary 100 - primary 50 - primary 20 - primary 0- - disk_config raid
raid1
/
sda1,sdb1 ext3 rw,errors=remount-ro
raid1
/drbd sda2,sdb2 swap rw
raid1
swap sda3,sdb3 swap rw
raid1
/data sda4,sdb4 ext3 default
EOT
FAI
• Klassenbasiert:
/etc/grml/fai/config/scripts/FOO/43-hostname
/etc/grml/fai/config/files/etc/foo.rc/FOO
• Senior-Admin: Design des FAI Configspace
• Junior-Admin: Deployment, Operating
Konfiguration
•
•
•
•
puppet
cfengine
bcfg2
....
Fsckup
Recovery
• Automatisiertes Deployment:
– Installation oder Image einspielen
– Konfiguration
– Optional Daten/Backup einspielen
• Fsckup?
– dd_rescue
– testdisk
Use case: Sipwise
Tricks zum Booten
• grml bootfrom=/dev/sda1 → „force“
• grml isofrom=/dev/sda1/grml.iso → direkt
angegebenes ISO booten
• grml findiso=/grml_2009.05.iso → Suche nach
angegebenem ISO
• Tip: kann direkt in Grub2 integriert werden!
http://blog.zugschlus.de/archives/825-grmlals-eigenes-Rescuesystem.html
• Supergrub Disk wird es ebenfalls OOTB
unterstützen
Angepasste
Konfiguration 1/2
DCS (Debs, Configuration + Scripts)
– save-config / restore-config
– FS-Label GRMLCFG:
• grml.sh → das eigene Skript
• config.tbz → Konfigarchiv
– http://grml.org/config/
Angepasste
Konfiguration 2/2
Root-Persistency:
–
–
–
–
live-snapshot -d …
FS-Label „live-rw“
Bootoption „persistent“
http://wiki.grml.org/doku.php?
id=persistency
Thanks
Michael Prokop
[email protected]
@mikagrml
@grmlproject
http://grml.org/