Paikallisen repo-palvelimen asennus ja pystyttäminen
Yleistä
Joskus tulee tilanne jolloin on useampia kotikoneita tai palvelimia sisäverkossa ja ei ole järkevää että kaikki koneet hakevat samaa pakettia kokoajan tai samanaikaisesti opensusen repo-palvelusta. Samalla säästää omaa nettikaistaa kummasti kun ei tarvitse kaikkien koneiden hakea samoja tiedostoja useampaan kertaan.
Ohjeet on tehty sillä mielellä että repo-palvelimen tiedostot päivittyvät jokaisen viikon lauantaina klo 03:00 automaattisesti, sekä tarvittavat tiedostolukitukset ovat olemassa että niitä ei tarvitse manuaalisesti päivittää. Mikäli manuaalisesti tarvitsee jotain tehdä tarvittavat komennot löytyvät repo-käyttäjän cronista.
Tällä tavalla voidaan myös hoitaa uusien koneiden asennus myös verkkoasennuksen paikallisen verkon ylitse suoraan ilman että tarvitsee koko asennus-DVD:tä tehdä tai polttaa, verkkoasennus-CD vaatii vain 520Mt tilaa, eli pienellä USB-muistillakin voi verkkoasennuksen hoitaa myös.
Vaatimukset laitteistolle
Varaa oma kiintolevy tai vähintään 500Gt:n osio paikalliselle repo-palvelulle. Normaali nettiyhteys, mielummin ilman mitään liikennöintirajoituksia (kunhan HTTP (80) ja RSYNC (873) sallittu). Kiinteä sisäverkon IP-osoite (IPv4).
Vaatimukset käyttäjätunnuksille
Repoa varten olisi hyvä lisätä oma erillinen repo-käyttäjätunnus, samalla tehdä erillinen repository-käyttäjäryhmä mihin repo-käyttäjätunnus kuuluu.
OhjelmistoVaatimukset
- Apache
- NTP-client
- Rsync
- Cron
- Cronie
- Createrepo
- Lisäominaisuuksien ja tietoturvan hienosäätööä varten tarvitaan Apacheen moduulit:
- apache2-mod_security2
- a2enmod (apachestats, ei pakollinen)
- mod_limitipconn (ei pakollinen)
- mod_ip_count (ei pakollinen)
Repositoryn levytilan asennus
Tee kyseiselle levytilalle tai osiolle repositorypalvelu-hakemisto, minne tullaan sijoittamaan koko paikallinen repository-palvelu. Samalla kyseiseen hakemistoon lisätään asennus-DVD:n sisälläpitämät tiedostot ja ns. backup-repo (eli edellinen repositoryversio), mahdollisten ohjelmistovirheiden takia. Sekä getrepo-hakemisto mihin haetaan tuoreimmat päivitykset. Tällä järjestelyllä saadaan pidettyä edellinen, nykyinen ja tuleva repository pidettyä tallessa.
Eli kyseinen levytilan hakemistonrakenne on seuraavanlainen:
/repositorypalvelu (repositoryn juuri-hakemisto)
/backuprepo/ (repositoryn edellinen versio palautusta varten)
/backupproced/(varakopio aikaisemmasta repositorysta)
/getrepo/ (haussa oleva repository-hakemisto)
/install/ (asennus-DVD:n sisältö kopioituna)
/repository/ (varsinainen repositoryn-hakemisto)
Pakettien asennus
Helpoiten saat asennettua kun valitset Yastista Apache-, Rsync-, NTP-client- ja Createrepo-asennuspaketit, sekä tarvittavat moduulit. Yast hoitaa loput valmiiksi ja lisää tarvittavat riippuvuudet.
Zypperissä pakettiasennus
- zypper in apache2
- zypper in apache2-prefork
- zypper in apache2-mod_security2
- zypper in yast2-http-server (mukavampi apache2 säätää yastista kuin käydä
kaikki konfikuraatiotiedostot läpi ja sen jälkeen käynnistellä)
- zypper in ntp
- zypper in yast2-ntp-client
- zypper in rsync
- zypper in withlock
- zypper in createrepo
- zypper in cron
- zypper in cronie
Asennusten hienosäätö
Yastin kautta kannattaa säätää seuraavat:
- Apache2
- NTP-client
Apachelle tehdään repo-virtuaalipalvelin kyseiselle levytilalle tai osiolle. Virtuaalipalvelimen repository-hakemistoon tehdään robots.txt-tiedosto.
Robots.txt-tiedosto pitää sisällään vain 2 riviä, jotka ovat:
User-agent: *
Disallow: *
NTP-client säädetään käyttämään Mittauskeskuksen aikapalvelimia mitkä on suorassa yhteydessä atomikelloihin, mahdollisimman tarkan ajan saamiseksi sekä että koneen aika pysyy oikeassa ajassa. Mittauskeskuksen aikapalvelimet löytyvät osoitteista:
- time1.mikes.fi
- time2.mikes.fi
- operaattorin mahdollisesti tarjoama aikapalvelin
Käyttäjä- ja ryhmä-tunnukset
Tee Yastissa repository-käyttäjäryhmä, tee ja lisää siihen repo-käyttäjätunnus. Poista käyttäjätunnukselta sisäänkirjautuminen viimeistelyvaiheessa, tai kun olet varma että kaikki on lopullisesti kunnossa.
Repositoryn haku
Repositoryn tiedostojen haku onnistuu helpoiten komentoriviltä rsync-komennolla:
rsync -rlpt rsync.opensuse.org::opensuse-hotstuff-160gb /repopository/getrepo/ --delete-after -hi --stats
Ajoitetut tehtävät
Luodulla repo-käyttäjätunnuksella on muutama cronissa ajoitettu tehtävä, mistä tärkein on hakea opensusen päivitykset getrepo-hakemistoon. Croniin ajoitettu tehtävä tarvitsee vielä tiedostolukituksen että samaa tehtävää ei tehtäisi päällekkäin, johtuen tiedostomääristä ja tietoliikennenopeudesta, Kyseinen tiedostolukitus saadaan aikaseksi käyttämällä croninissa olevan käskyn yhteydessä withlock-ohjelmaa.
Cronissa ajastettu tehtävät
00 01 * * 6 cp -r /repositorypalvelu/backuprepo/. /repositorypalvelu/backuproced
00 02 * * 6 cp -r /repositorypalvelu/repository/. /repositorypalvelu/backuprepo
00 03 * * 6 mirror /usr/bin/withlock /home/repo/LOCK-opensuse-hotstuff rsync -rlpt rsync.opensuse.org::opensuse-hotstuff-160gb /repositorypalvelu/getrepo/ --delete-after --delete-excluded --max-delete=4000 --timeout=1800 -hi
00 08 * * 1 cp -r /repositorypalvelu/getrepo/. /repositorypalvelu/repository
00 08 * * 1 createrepo -v -d -p --basedir=/repo/repo/repository/ /repo/repo/repository/repodata
30 08 * * 1 mv /repo/repo/repository/repodata/repodata/*.* /repo/repo/repository/repodata/
31 08 * * 1 zypper -lu>/$HOME/kaikki_paivitykset.txt
32 08 * * 1 zypper -lp>/$HOME/tarvittavat_paivitykset.txt
00 12 * * 5 zypper -n up
Cronissa suoritetaan päätyöt lauantaisin ja maanantaisin sekä varsinainen päivitys on automaattisesti perjantaisin klo 12:00, jos homma menee ns. "reisille" niin vielä voi palauttaa päivittyneet versiot edellisiin.