Rpm biltegi sinplea Inotify eta webdav erabiliz

Argitalpen honetan, rpm artefaktuen biltegi bat aztertuko dugu inotify + createrepo script soil bat erabiliz. Artefaktuak webdav bidez kargatzen dira apache httpd erabiliz. Zergatik apache httpd idatziko da mezuaren amaieran.

Beraz, irtenbideak RPM biltegiratzea soilik antolatzeko baldintza hauek bete behar ditu:

  • doan

  • Paketearen erabilgarritasuna biltegian artefaktuen biltegira kargatu eta segundo gutxira.

  • Instalatzeko eta mantentzeko erraza

  • Eskuragarritasun handia egiteko gaitasuna

    Zergatik ez SonaType Nexus edo Pulp:

  • Biltegian SonaType Nexus edo Pulp mota askotako artefaktuak horretara eramaten du SonaType Nexus edo Pulp porrot puntu bakar bat bihurtu.

  • Eskuragarritasun handia barruan SonaType Nexus ordaintzen da.

  • Pulp Gehiegizko ingeniaritza irtenbide bat iruditzen zait.

  • Artefaktuak barruan SonaType Nexus blob batean gordeta. Bat-bateko elektrizitatearen etenaldi bat gertatuz gero, ezingo duzu berrezartu blob babeskopiarik ez baduzu. Errore hau izan dugu: 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 ez zen inoiz berreskuratu.

Iturburu kodea

β†’ Iturburu kodea kokatzen da Hemen

Gidoi nagusiak honelako itxura du:

#!/bin/bash

source /etc/inotify-createrepo.conf
LOGFILE=/var/log/inotify-createrepo.log

function monitoring() {
    inotifywait -e close_write,delete -msrq --exclude ".repodata|.olddata|repodata" "${REPO}" | while read events 
    do
      echo $events >> $LOGFILE
      touch /tmp/need_create
    done
}

function run_createrepo() {
  while true; do
    if [ -f /tmp/need_create ];
    then
      rm -f /tmp/need_create
      echo "start createrepo $(date --rfc-3339=seconds)"
      /usr/bin/createrepo --update "${REPO}"
      echo "finish createrepo $(date --rfc-3339=seconds)"
    fi
    sleep 1
  done
}

echo "Start filesystem monitoring: Directory is $REPO, monitor logfile is $LOGFILE"
monitoring >> $LOGFILE &
run_createrepo >> $LOGFILE &

Instalazio-

inotify-createrepo-k CentOS 7 edo berriagoak direnean bakarrik funtzionatzen du. Ezin izan da CentOS 6-n funtzionatzea.

yum -y install yum-plugin-copr
yum copr enable antonpatsev/inotify-createrepo
yum -y install inotify-createrepo
systemctl start inotify-createrepo

Konfigurazioa

Lehenespenez inotify-createrepo-k direktorio bat kontrolatzen du /var/www/repos/rpm-repo/.

Direktorio hau fitxategian alda dezakezu /etc/inotify-createrepo.conf.

Erabili

Edozein fitxategi direktorio batean gehitzean /var/www/repos/rpm-repo/ inotifywait-ek fitxategi bat sortuko du /tmp/need_create. run_createrepo funtzioak begizta infinitu batean exekutatzen du eta fitxategia kontrolatzen du /tmp/need_create. Fitxategia existitzen bada, exekutatu createrepo --update.

Fitxategian sarrera bat agertuko da:

/var/www/repos/rpm-repo/ CREATE nginx-1.16.1-1.el7.ngx.x86_64.rpm
start createrepo 2020-03-02 09:46:21+03:00
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 0 pkgs
Spawning worker 2 with 0 pkgs
Spawning worker 3 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
finish createrepo 2020-03-02 09:46:22+03:00

Eskuragarritasun handia egiteko gaitasuna

Lehendik dagoen irtenbide batetik erabilgarritasun handia izateko, uste dut 2 zerbitzari erabil ditzakezula, Keepalived HArako eta Lsyncd artefaktuak sinkronizatzeko. Lsyncd - Tokiko direktorioko aldaketak kontrolatzen dituen daemon bat, agregatu eta denbora jakin baten ondoren, rsync sinkronizatzen hasten da. Xehetasunak eta ezarpenak argitalpenean deskribatzen dira "Mila milioi fitxategiren sinkronizazio azkarra".

WebDav

Fitxategiak igotzeko hainbat modu daude: SSH, NFS, WebDav. WebDav aukera moderno eta sinplea dela dirudi.

WebDav-erako, Apache httpd erabiliko dugu. Zergatik Apache httpd 2020an eta ez nginx?

Nginx + moduluak eraikitzeko tresna automatizatuak erabili nahiko nituzke (adibidez, Webdav).

Nginx + moduluak eraikitzeko proiektu bat dago - nginx-eraikitzailea. Fitxategiak kargatzeko nginx + wevdav erabiltzen baduzu, modulu bat behar duzu nginx-dav-ext-modulua. Nginx-ekin eraikitzen eta erabiltzen saiatzean nginx-dav-ext-modulua laguntzarekin nginx-eraikitzailea errore bat jasoko dugu http_dav_module-k nginx-dav-ext-module-ren ordez erabiltzen du. Akats bera udan itxi zen nginx: [emerg] zuzentarau ezezaguna dav_methods.

Tira eskaera bat egin nuen Gehitu check git_url txertatutako, birfactored --with-{}_module ΠΈ if module == "http_dav_module" erantsi --with. Baina ez zuten onartu.

konfigurazioa webdav.conf

DavLockDB /var/www/html/DavLock
<VirtualHost localhost:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog /var/log/httpd/error.log
    CustomLog /var/log/httpd/access.log combined

    Alias /rpm /var/www/repos/rpm-repo
    <Directory /var/www/repos/rpm-repo>
        DAV On
        Options Indexes FollowSymlinks SymLinksifOwnerMatch IncludesNOEXEC
        IndexOptions NameWidth=* DescriptionWidth=*
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

Uste dut Apache httpd konfigurazioaren gainerakoa zuk egingo duzula.

Nginx Apache-ren aurrean httpd

Apache-k ez bezala, Nginx-ek gertaeren araberako eskaerak prozesatzeko eredu bat erabiltzen du, hau da, HTTP zerbitzari-prozesu bakarra behar dela bezero kopuru batentzat. Nginx erabil dezakezu eta zerbitzariaren karga murriztu.

nginx-front.conf konfig. Uste dut nginx-en gainerako konfigurazioa zuk egingo duzula.

upstream nginx_front {
    server localhost:80;
}

server {
    listen 443 ssl;
    server_name ваш-Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ…-хост;
    access_log /var/log/nginx/nginx-front-access.log main;
    error_log /var/log/nginx/nginx-front.conf-error.log warn;

    location / {
        proxy_pass http://nginx_front;
    }
}

Fitxategiak WebDav bidez deskargatzea

Rpm deskargatzea oso erraza da.

curl -T ./nginx-1.16.1-1.el7.ngx.x86_64.rpm https://ваш-Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ-хост/rpm/

Iturria: www.habr.com

Gehitu iruzkin berria