Skip to content

Backup i RHEL6 med Kickstart, Ansible och Attic

Denna guide beskriver en lösning jag gjorde där flera fysiska klienter skulle backas i olika nätverk som ibland hade brandväggar mellan sig. Alla klienter var HP ProLiant G8 maskiner med iLO advanced och RHEL 6 installerat.

Lösningen fokuserar på att kunna backa stora mängder data, men samtidigt på att kunna återställa små mängder data snabbt för att återställa tjänsten.

Backup sker i två steg, där man först och främst gör alla konfigurationsändringar i Ansible och pushar ut dem via SSH till klienterna. För det andra så körs attic regelbundet och tar backup på hela systemen, med eventuellt vissa undantag på specifika kataloger.

Så här är rollerna av de olika mjukvarorna.

Kickstart

  • Återställning av grundsystem via iLO.

  • Används utan ''network''-alternativet så den ställer frågan om IP-adress, annars sker resten automagiskt.

Ansible

  • Hantering av systemkonfiguration.

  • Återställning av systemkonfiguration via SSH.

Attic

  • Återställning av databasdumpar som behövs för att återställa tjänst.

  • Återställning av bulkdata som är bland annat arkiverade logfiler och backuper från andra system. Denna data behövs inte för att återställa tjänsten.

Installationshandbok

Skapa ISO med kickstart

Montera först RHEL ISO.

mkdir {rhel_iso,rhel_mnt}
sudo mount -o loop rhel-server-6.5-x86_64-dvd.iso rhel_mnt/

Kopiera allt innehåll till en ny katalog.

shopt -s dotglob
cp -ri iso_mnt/* rhel_iso/

Skriv kickstart

Skapa en ks.cfg direkt i roten av iso-trädet.

vim rhel_iso/ks.cfg

Den kan se ut så här.

keyboard sv-latin1
lang sv_SE
timezone Europe/Stockholm

#Root account disabled

rootpw --iscrypted $6$...

#Initial user

user --name admin --iscrypted --groups wheel --password $6$...

#Reboot after installation

reboot

#Use text mode install

text

#Install OS instead of upgrade

install
cdrom
#url --url http://10.221.168.23/rhel6-x86_64

#System bootloader configuration

bootloader --location=mbr

#Clear the Master Boot Record

zerombr yes

#Partition clearing information

clearpart --all --initlabel

#Create partitions

partition /boot --size=500 --fstype ext2 --asprimary #Boot
#partition swap --size=1g --asprimary #Swap

partition pv.01 --size=1 --fstype ext4 --grow #Rest

#Create lvm

volgroup vg_system pv.01
logvol swap --vgname=vg_system --size=1024 --name=lv_swap
# I haven't seen precise results with percent but it accomplishes the goal of

# leaving a little on the PV for new volumes and expansion.
logvol / --vgname=vg_system --size=20000 --grow --percent=80 --name=lv_root

#System authorization infomation

auth  --useshadow

#Firewall configuration

firewall --disabled

#Do not configure the X Window System

skipx

services --enabled ssh

#Packages

%packages
openssh-server
openssh-clients
vim
curl
nmap
%end

%post --log=/root/ks-post.log
echo '%wheel ALL=NOPASSWD: ALL' > /etc/sudoers.d/wheel
visudo -cf /etc/sudoers.d/wheel || rm /etc/sudoers.d/wheel

Denna filen frågar efter nätverksinformation eftersom den ska användas för att återställa flera olika maskiner utan PXE så måste det göras så här.

Skapa ISO

Jag skapar den på Debian så jag använder genisoimage. På RHEL kan man bara byta ut kommandot mot mkisofs.

cd rhel_iso
genisoimage -o /var/rhel6-server-x86_64-dvd.iso -b isolinux/isolinux.bin -c isolinux/boot.cat --no-emul-boot --boot-load-size 4 --boot-info-table -J -R -V disks .

Se också


Last update: October 2, 2021