Référentiel rpm simple utilisant Inotify et webdav
Dans cet article, nous examinerons un référentiel d'artefacts rpm à l'aide d'un simple script inotify + createrepo. Les artefacts sont téléchargés via webdav en utilisant apache httpd. Pourquoi apache httpd sera écrit vers la fin du message.
Ainsi, la solution doit répondre aux exigences suivantes pour organiser uniquement le stockage RPM :
Libre
Disponibilité du package dans le référentiel quelques secondes après le téléchargement dans le référentiel d'artefacts.
Pâte à papier Cela me semble être une solution trop sophistiquée.
Artefacts dans SonaType Nexus stocké dans blob. En cas de coupure de courant soudaine, vous ne pourrez pas restaurer le blob si vous n'avez pas de sauvegarde. Nous avons eu cette erreur : 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 n'a jamais été récupéré.
Par défaut, inotify-createrepo surveille un répertoire /var/www/repos/rpm-repo/.
Vous pouvez changer ce répertoire dans le fichier /etc/inotify-createrepo.conf.
l'utilisation de
Lors de l'ajout d'un fichier à un répertoire /var/www/repos/rpm-repo/ inotifywait créera un fichier /tmp/need_create. La fonction run_createrepo s'exécute dans une boucle infinie et surveille le fichier /tmp/need_create. Si le fichier existe, exécutez createrepo --update.
Pour rendre la haute disponibilité d'une solution existante, je pense que vous pouvez utiliser 2 serveurs, Keepalived pour HA et Lsyncd pour la synchronisation des artefacts. Lsyncd - un démon qui surveille les changements dans le répertoire local, les agrège, et après un certain temps, rsync commence à les synchroniser. Les détails et les paramètres sont décrits dans le post "Synchronisation rapide d'un milliard de fichiers".
WebDav
Il existe plusieurs façons de télécharger des fichiers : SSH, NFS, WebDav. WebDav semble être une option moderne et simple.
Pour WebDav, nous utiliserons Apache httpd. Pourquoi Apache httpd en 2020 et pas nginx ?
Je souhaite utiliser des outils automatisés pour créer des modules Nginx + (par exemple, Webdav).
Je pense que vous ferez vous-même le reste de la configuration d'Apache httpd.
Nginx devant Apache httpd
Contrairement à Apache, Nginx utilise un modèle de traitement des demandes basé sur les événements, ce qui signifie qu'un seul processus de serveur HTTP est requis pour un nombre quelconque de clients. Vous pouvez utiliser nginx et réduire la charge du serveur.
configuration nginx-front.conf. Je pense que vous ferez vous-même le reste de la configuration de nginx.