Repository rpm semplice utilizzando Inotify e webdav
In questo post, esamineremo un repository di artefatti rpm utilizzando un semplice script inotify + createrepo. Gli artefatti vengono caricati tramite webdav utilizzando apache httpd. Perché apache httpd verrà scritto verso la fine del post.
Pertanto, la soluzione deve soddisfare i seguenti requisiti per organizzare solo l'archiviazione RPM:
Gratuito
Disponibilità del pacchetto nel repository pochi secondi dopo il caricamento nel repository degli artefatti.
Polpa Mi sembra una soluzione troppo ingegnerizzata.
Manufatti dentro SonaType Nexus memorizzato nel blob. In caso di interruzione improvvisa dell'alimentazione, non sarà possibile ripristinare il BLOB se non si dispone di un backup. Abbiamo avuto questo errore: 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 non è mai stato recuperato.
Per impostazione predefinita, inotify-createrepo monitora una directory /var/www/repos/rpm-repo/.
È possibile modificare questa directory nel file /etc/inotify-createrepo.conf.
l'uso di
Quando si aggiunge un file a una directory /var/www/repos/rpm-repo/ inotifywait creerà un file /tmp/need_create. La funzione run_createrepo viene eseguita in un ciclo infinito e monitora il file /tmp/need_create. Se il file esiste, eseguilo createrepo --update.
Per ottenere un'elevata disponibilità da una soluzione esistente, penso che tu possa utilizzare 2 server, Keepalived per HA e Lsyncd per la sincronizzazione degli artefatti. Lsync - un demone che monitora le modifiche nella directory locale, le aggrega e, dopo un certo tempo, rsync inizia a sincronizzarle. Dettagli e impostazioni sono descritti nel post "Sincronizzazione rapida di un miliardo di file".
WebDav
Esistono diversi modi per caricare i file: SSH, NFS, WebDav. WebDav sembra essere un'opzione moderna e semplice.
Per WebDav, useremo Apache httpd. Perché Apache httpd nel 2020 e non nginx?
Vorrei utilizzare strumenti automatizzati per la creazione di moduli Nginx + (ad esempio Webdav).
Penso che farai tu stesso il resto della configurazione httpd di Apache.
Nginx davanti ad Apache httpd
A differenza di Apache, Nginx utilizza un modello di elaborazione delle richieste basato su eventi, il che significa che è richiesto un solo processo del server HTTP per un numero qualsiasi di client. Puoi usare nginx e ridurre il carico del server.
nginx-front.conf config. Penso che farai tu stesso il resto della configurazione di nginx.