2016. április 6., szerda

Helyi Debian tükör készítése

A posztban Debian 8 Jessie-n példálózom, de nyilván másmilyenre is jó a módszer, legalábbis, amikor a posztot írom, akkor tutira.

Szóval, a egy reggel arra ébredsz, hogy mindenképp Debian tükörszerverre van szükséged, akkor a következőképp érdemes eljárnod:
  • Tükrözöd az egész hóbelevancot
  • Teszel elé egy webszervert
Itt persze akár abba is hagyhatnánk, mert végül is ennyi az egész, de mégis inkább elmondjuk részletesebben:

A Debian tároló tükrözése

A régi szép időkben ezt például az apt-mirror használatával végezte az ember. Már a linkelt cikkben is említettem, hogy néha nem annyira értettem, hogy mi a francot művel a drága, na de van ilyen.
Most meg itt a jó kis ftpsync szkriptegyüttes, vagy mifene. Ez a javasolt mód. És működni látszik. Hogy miért ftp? Nemtom, mert rsync-kel dolgozik.

Első dolog: készíteni egy jóóóóóóó naaaaaaaaagy helyet. Én csak az amd64-es Jessie-t tükrözöm és majd' 300 GB.

Ha elkészült, tölthetjük az ftpsync-cuccot:
wget https://ftp-master.debian.org/ftpsync.tar.gz

Csomagoljuk ki:
tar xzf ftpsync.tar.gz

Készítsünk új felhasználót neki:
adduser mirroruser

Készítsünk egy könyvtárat az archívumnak (nálam pl nem a helyi gépen lesz, ezért megy az /mnt alá, a csatolást itt nem írom le), és adjuk oda a júzerünknek. Én egy verseny miatt, ahol szimulálnunk kell az ftp.hu.debian.org-ot, de úgy, hogy igazi inertnet-elérés meg nincs, azt játszom, hogy az én szerverem az ftp.hu.debian.org - ezért a könyvtárnév.
mkdir -p /mnt/mirror/ftp.hu.debian.org
chown mirroruser:mirroruser /mnt/mirror/ftp.hu.debian.org

Telepítsünk rsync-et, mert erre nem figyel az ftpsync:
apt-get install rsync

Készítsünk három könyvtárat az ftpsync-nek:
mkdir /home/mirroruser/{bin,etc,log}
chown mirroruser:mirroruser /home/mirroruser/{bin,etc,log}

Tegyük a helyére azt a három fájlt, ami kell:
cp distrib/bin/ftpsync /home/mirroruser/bin/
cp distrib/etc/common /home/mirroruser/etc/
cp distrib/etc/ftpsync.conf.sample /home/mirroruser/etc/ftpsync.conf
Jogokkal nem kell ügyeskedni, jó így.

Szerkesszük az ftpsync.conf-ot. Említettem, hogy ftp.hu.debian.org-ot játszom egy verseny miatt, ezért az első sor bejegyzése. Neked nyilván nem kell ilyet hazudni. Még egyszer hangsúlyozom, hogy jelen példában csak az amd64 architektúrát, és csak a Jessie-t tükrözzük. Így néz ki a fájl kommentek nélkül:
MIRRORNAME=ftp.hu.debian.org
TO="/mnt/mirror/ftp.hu.debian.org/debian"
RSYNC_HOST=ftp.hu.debian.org
EXCLUDE="--exclude=jessie-kfreebsd* --exclude=wheezy* --exclude=oldstable* --exclude=sid* --exclude=testing* --exclude=unstable* --exclude=experimental* --exclude=Debian* --exclude=stable* --exclude=squeeze* --exclude=stretch*"
ARCH_EXCLUDE="alpha arm arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc ppc64el s390 s390x sh sparc source"

És bár az ARCH EXCLUDE-ban benne van, hogy nem kell kfreebsd, be kellett írnom az EXCLUDE-ba is... Nem tudom, miért.

Figyelj az első sorra. Ha valamilyen más néven lesz elérhető a tükör, pl virtualhost-ként, akkor írd át megfelelően, ne hagyd így.

Mindenesetre kész a fájl. A mirroruser nevében futtathatjuk a
~/bin/ftpsync
fájlt.

Rengeteg idő múlva egyszer csak ilyet láthatunk a logban (tail -f /home/mirroruser/log/rsync-ftpsync.log):
Upstream archive update in progress, skipping stage2
Retrying update in 1200
Hogy mikre oda nem figyelnek... Klassz! - gondoltam először, aztán kiderült, hogy olyan lassú a netkapcsolatom (a leglassabb, amit ma a UPC kínál), hogy soha nem lesz kész, legalábbis az első 7-8 próbálkozás mind így végződött. Sebaj, a tükör jó. Éljen. Gondoltam. De nem.
Aztán kiderült, hogy ha a német archívummal (ftp.de.debian.org) dolgozunk, akkor rendbe jön a dolog, és már ilyen is kerül a log végére:
Back from rsync with returncode 0
Latest recorded rsync transfer speed: 254 KB/s
Creating a full trace file
Mirrorsync done
Na azért így szebb, igaz?

A security.debian.org tükrözése

Igen, tudom, nem jó ötlet, fúj. De nekem most mégis kell. Ugyanis egy versenyen offline szimulálnom kell ezt is.
Majdnem olyan minden, mint az imént.

Készítsünk új felhasználót:
adduser mirrorusersecurity

Készítsünk könyvtárat és adjuk oda a júzerünknek:
mkdir -p /mnt/mirror/security.debian.org
chown -R mirrorusersecurity:mirrorusersecurity /mnt/mirror/security.debian.org

Készítsük el a három könyvtárat:
mkdir /home/mirrorusersecurity/{bin,etc,log}
chown mirrorusersecurity:mirrorusersecurity /home/mirrorusersecurity/{bin,etc,log}

Tegyük a helyére a három fájlunkat:
cp distrib/bin/ftpsync /home/mirrorusersecurity/bin/
cp distrib/etc/common /home/mirrorusersecurity/etc/
cp distrib/etc/ftpsync.conf.sample /home/mirrorusersecurity/etc/ftpsync.conf
Jogokkal most sem kell ügyeskedni.

Szerkesszük az ftpsync.conf-ot. Újra elmondom, hogy itt csak az amd64 architektúrát, és csak a Jessie-t tükrözzük. Figyelj arra is, hogy az első sorban én hazudok, mert így kell elérniük a tükrömet a felhasználóimnak. Így néz ki a fájl kommentek nélkül:
MIRRORNAME=security.debian.org
TO="/mnt/mirror/security.debian.org/debian-security"
RSYNC_HOST=security.debian.org
EXCLUDE="--exclude=jessie-kfreebsd* --exclude=wheezy* --exclude=oldstable* --exclude=sid* --exclude=testing* --exclude=unstable* --exclude=experimental* --exclude=Debian* --exclude=stable* --exclude=squeeze* --exclude=stretch*"
ARCH_EXCLUDE="alpha arm arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc ppc64el s390 s390x sh sparc source"

A félkövér kiemelések jelentik a változást az előzőekhez képest.

És akkor most a mirrorusersecurity nevében futtathatjuk a
~/bin/ftpsync
fájlt. És 3 másodperc múlva leáll jól.
GRRRRRRRRRRRRRRRRRRRRRR!

Ha kiadjuk, hogy:
tail -f log/ftpsync.log.0

akkor azt lájuk, hogy:
ERROR: Sync step 1 went wrong, got errorcode 5. Logfile: /home/mirrorusersecurity/log/ftpsync.log

Ha a logban látható rsync-parancsot kimásoljuk és futtatjuk, akkor ez lesz a vége:
rsync error: error starting client-server protocol (code 5) at main.c(1653) [Receiver=3.1.1]

Ohhh. Az rsync-parancs vége felé van ilyen, hogy (félkövérrel a lényeg):
--exclude=/pool/**/*.dsc security.debian.org::debian /mnt/mirror/security.debian.org/debian-security

Kezd meglenni. Minden debian-archívumban a /debian könyvtárban van a cucc, kivéve itt, ahol a /debian-security a könyvtár neve. És ez bele van drótozva a bin/ftpsync fájlba.
Keressük meg a
RSYNC_PATH=${RSYNC_PATH:-"debian"}
sort, és alakítsuk át:
RSYNC_PATH=${RSYNC_PATH:-"debian-security"}
És mostantól elvileg semmi nem áll utunkba, tükrözető a security.debian.org:)

A webszrver-rész holnap jön.

Nincsenek megjegyzések: