Konfiguraatiotiedostojen varmistukset¶
Koha-Suomen Koha-installaatiot ovat periaatteessa toistensa klooneja, joten niiden varmuuskopioimiseksi periaatteessa riittää pelkkien kimppakohtaisten konfiguraatiotiedostojen kopiointi talteen. Mikäli jostain syystä ajaudumme tilanteeseen, jossa on tarpeen saada aikaiseksi uusi Koha-installaatio jollekkin kimpalle, voidaan periaatteessa mikä tahansa Koha-kontti kloonata ja sen jälkeen sijoittaa siihen paikalleen kimppakohtaiset konfiguraatiotiedostot. Varmastikin vaatii hieman säätämistä, mutta periaatteessa koko kontin varmistaminen ei ole tarpeen. Kopioimalla talteen pelkästään konfiguraatiotiedostot "varmuuskopiot" voidaan tehdä hyvin nopeasti lennossa ja ilman koko kontin varmuuskopioinnin aiheuttamaa käyttökatkoa.
Varmistus¶
Konfiguraatietoedostojen varmistus tehdään kimppojen palvelimilla ajastetusti joka päivä klo 20.00 hostin root-käyttäjän crontabista:
00 20 * * * /usr/local/sbin/sync_configs.sh
sync_configs.sh tekee kryptattuja .tar.gz paketteja, joiden tarkentimena lummestaging-palvelimella on .tgc. Pakettien kryptaukseen käytetään ccryptiä, joka salaa paketit AES256-salauksella. Kaikista palvelimella olevista lxc-konteista tehdään konfiguraatiotiedostovarmuuskopio, joka sisältää:
- kontin config -tiedoston
- kontin iptables -skriptin
- rootfs/etc -hakemiston
- rootfs/home/koha/koha-dev/etc -hakemiston, jos sellainen on olemassa
Paketit sijoitetaan rsyncillä ssh:n yli lummestaging-palvelimen 'configs' käyttäjän kotihakemistoon ja niitä säilytetään 14 vuorokautta. Pakettien siivous on ajastettuna lummestaging-palvelimen root-käyttäjän crontabissa:
00 10 * * * find /home/configs/ -name '*.tgc' -mtime +14 -exec rm {} \;
Konfiguraatio¶
Varmistuksen konfiguraatiotiedosto on kunkin kimpan Koha-palvelimen /etc hakemistossa ja se on nimeltään sync_configs.conf. Tiedoston ensimmäisellä rivillä on salaukseen käytettävä avain ja toisella rivillä varmuuskopion tunniste (kimpan nimi), esimerkiksi:
TämäOnFeikkiavain,JokaEiTeeMitään. kinppa
Tiedoston oikeuksien pitää olla rajattu siten että vain omistajalla (root) on tiedostoon luku- ja kirjoitusoikeus (chmod 600 /etc/sync_configs.conf).
Palautus¶
Mikäli konfiguraatiotiedostoja on tarpeen palauttaa varmuuskopioista, se voidaan tehdä seuraavasti:
- siirrä haluamasi paketti oikealle palvelimelle esimerkiksi scp:llä tai sftp:llä
- pura paketin salaus ccdecrypt [paketin_nimi.tgc]
- pura paketti tar xzvf [paketin_nimi.tgc]
Paketti puretaan sen hakemiston alle johon sijoitit paketin. Siirrä tarvittavat tiedostot varmuuskopiosta oikeille paikoilleen.
sync_configs.sh -skripti ei ole githubissa, koska se on ajatus ajaa host-koneen puolelta eikä Koha-kontin sisältä. Sillä tavalla talteen saadaan myös konttien konfiguraatiotiedostot, NAT-säännöt ym.
sync_configs.sh¶
#!/bin/sh # This script will sync configuration files in local Koha installations to lummestaging. # You will need to create /etc/sync_configs.conf, with two lines: first line has the encryption/decryption key # and the second line has the "system identifier" for the source system of the configuration. To keep the key safe, # the file needs to be mode 600 (chmod 600 /etc/sync_configs.conf). # Put this script in root-crontab in Koha-containers: # 00 21 * * * /usr/local/sbin/sync_configs.sh timestampme() { date "+[%Y-%m-%d %H:%M:%S]" ; } test "$(whoami)" != "root" && echo "You are not root." && exit 1 # Check that we have the required software installed if ! which ccrypt > /dev/null 2>&1; then echo "$(timestampme) Missing ccrypt, apt install ccrypt." exit 1 fi if ! which rsync > /dev/null 2>&1; then echo "$(timestampme) Missing rsync, apt install rsync." exit 1 fi # Check the configuration test ! -e /etc/sync_configs.conf && echo "$(timestampme) No /etc/sync_configs.conf." && exit 1 test $(wc -l /etc/sync_configs.conf | cut -f 1 -d ' ') -ne 2 && echo "$(timestampme) Faulty /etc/sync_configs.conf. Two lines are required: key and system identifier." && exit 1 test $(stat --printf="%a" /etc/sync_configs.conf) -ne 600 && echo "$(timestampme) Wrong permissions on /etc/sync_configs.conf, needs to be mode 600. Please fix." && exit 1 # Everything good, proceed with backup prefix="$(tail -n 1 /etc/sync_configs.conf)" umask 077 timestamp=$(date +%Y-%m-%d) IFS=' ' for i in $(ls -1 /var/lib/lxc); do mytemp=$(mktemp) echo "$(timestampme) Creating configuration backup $prefix-$i-$timestamp.tgc..." tar czf $mytemp -C /var/lib/lxc/$i config iptables rootfs/etc rootfs/home/koha/koha-dev/etc 2> /dev/null ccrypt -k /etc/sync_configs.conf $mytemp rsync $mytemp.cpt configs@195.148.220.32:$prefix-$i-$timestamp.tgc rm $mytemp.cpt done echo "$(timestampme) Done."