Kirjoittaja Aihe: Repo-palvelun/palvelimen pystyttäminen  (Luettu 6651 kertaa)

0 jäsentä ja 2 Vierasta katselee tätä aihetta.

Poissa Crusaider

  • Jäsen
  • Viestejä: 37
Repo-palvelun/palvelimen pystyttäminen
« : 21.01.2015 - klo:16:57 »
Moikka!

Tulipa ongelmia kun aloin pystyttää paikallista repository-palvelua pystyyn, ja kaikki tarvittavat paketit on asennettu mutta saan createrepo:sta virheilmon:

Spawning worker 0 with 155242 pkgs
Cannot access/write repodata files: [Errno 7] Argument list too long

komento on ihan normisti:

createrepo /repo/repopalvelin/

Vai eikö muka createrepo kykene enään käsittelemään ko. tiedostolistausmäärää??

Poissa Crusaider

  • Jäsen
  • Viestejä: 37
Vs: Repo-palvelun/palvelimen pystyttäminen
« Vastaus #1 : 23.01.2015 - klo:20:25 »
Vastaampa itse itselleni...

Eli kovin moni ei ole varmaan halunnut tehdä paikallista repo-palvelinta lähiverkkoon?

No taidampa naputella suomenkieliset ohjeet vaikka englanninkielisiäkin löytyy, tosin liiallisilla ominaisuuksilla tai toimimattomilla komennoilla kun helpommallakin pääsee.

Poissa Crusaider

  • Jäsen
  • Viestejä: 37
Vs: Repo-palvelun/palvelimen pystyttäminen ja ohjeet
« Vastaus #2 : 24.01.2015 - klo:18:39 »
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.

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2796
  • Sukupuoli: Mies
Vs: Repo-palvelun/palvelimen pystyttäminen
« Vastaus #3 : 24.01.2015 - klo:23:47 »
Hyvä ohje. Voisitko vielä laittaa sen erikseen tuonne ohjeet puolelle, koska sinne on keskitetysti koitettu kerätä kaikki ohjeet.
http://opensuse.fi/Ohjeet

Poissa Crusaider

  • Jäsen
  • Viestejä: 37
Vs: Repo-palvelun/palvelimen pystyttäminen
« Vastaus #4 : 25.01.2015 - klo:01:22 »
Menisköhän Asennus ja Käyttö-osion alle?

Alusta taitaa olla wiki-pohjanen?

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2796
  • Sukupuoli: Mies
Vs: Repo-palvelun/palvelimen pystyttäminen
« Vastaus #5 : 25.01.2015 - klo:13:07 »
Menisköhän Asennus ja Käyttö-osion alle?
Joo siihen sopii parhaiten.

Alusta taitaa olla wiki-pohjanen?
Joo wiki-pohjainen.

Poissa Crusaider

  • Jäsen
  • Viestejä: 37
Vs: Repo-palvelun/palvelimen pystyttäminen
« Vastaus #6 : 04.02.2015 - klo:18:27 »
Moikka!

Lisään vielä ohjeisiin mirroreitten käyttämisestä tulevat muutokset että toimisi sitten todella varmasti, eikä oltaisi niin vikaherkässä tilanteessa download.opensuse.org yhteysrajoitusten vuoksi.

Samalla saa omasta repopalvelimesta vikasietoisen päivitysten osalta.