I dette indlæg vil vi se på et rpm-artefaktlager ved hjælp af et simpelt inotify + createrepo-script. Artefakter uploades via webdav ved hjælp af apache httpd. Hvorfor apache httpd vil blive skrevet i slutningen af indlægget.
Så løsningen skal opfylde følgende krav for kun at organisere RPM-lagring:
gratis
Pakkens tilgængelighed i lageret få sekunder efter upload til artefaktlageret.
Pulp Det virker som en overkonstrueret løsning for mig.
Artefakter i SonaType Nexus opbevaret i klat. I tilfælde af et pludseligt strømafbrydelse vil du ikke kunne genoprette klatten, hvis du ikke har en backup. Vi havde denne fejl: ERROR [ForkJoinPool.commonPool-worker-2] *SYSTEM [com.orientechnologies.orient.core.storage](http://com.orientechnologies.orient.core.storage/).fs.OFileClassic - $ANSI{green {db=security}} Error during data read for file 'privilege_5.pcl' 1-th attempt [java.io](http://java.io/).IOException: Bad address. Blob blev aldrig genfundet.
Som standard overvåger inotify-createrepo en mappe /var/www/repos/rpm-repo/.
Du kan ændre denne mappe i filen /etc/inotify-createrepo.conf.
Brug
Når du tilføjer en fil til en mappe /var/www/repos/rpm-repo/ inotifywait vil oprette en fil /tmp/need_create. Run_createrepo-funktionen kører i en uendelig løkke og overvåger filen /tmp/need_create. Hvis filen findes, så kør createrepo --update.
For at gøre høj tilgængelighed ud af en eksisterende løsning, tror jeg, du kan bruge 2 servere, Keepalived til HA og Lsyncd til artefaktsynkronisering. Lsyncd - en dæmon, der overvåger ændringer i den lokale mappe, samler dem, og efter en vis tid begynder rsync at synkronisere dem. Detaljer og indstillinger er beskrevet i indlægget "Hurtig synkronisering af en milliard filer".
WebDav
Der er flere måder at uploade filer på: SSH, NFS, WebDav. WebDav ser ud til at være en moderne og enkel mulighed.
Til WebDav vil vi bruge Apache httpd. Hvorfor Apache httpd i 2020 og ikke nginx?
Jeg vil gerne bruge automatiserede værktøjer til at bygge Nginx + moduler (for eksempel Webdav).
Jeg tror, du vil gøre resten af Apache httpd-konfigurationen selv.
Nginx foran Apache httpd
I modsætning til Apache bruger Nginx en hændelsesbaseret anmodningsbehandlingsmodel, hvilket betyder, at der kun kræves én HTTP-serverproces for et vilkårligt antal klienter. Du kan bruge nginx og reducere serverbelastningen.
nginx-front.conf config. Jeg tror, du vil gøre resten af nginx-konfigurationen selv.