Едноставно складиште за вртежи во минута користејќи Inotify и webdav
Во овој пост, ќе го разгледаме складиштето за артефакти за вртежи во минута користејќи едноставна скрипта inotify + createrepo. Артефактите се поставуваат преку webdav користејќи apache httpd. Зошто apache httpd ќе биде напишано кон крајот на постот.
Значи, решението мора да ги исполнува следниве барања за организирање само складирање RPM:
Бесплатно
Достапност на пакетот во складиштето неколку секунди по поставувањето во складиштето за артефакти.
Евтини Мене ми изгледа како претерано инженерско решение.
Артефакти во SonaType Nexus складирани во blob. Во случај на ненадеен прекин на електричната енергија, нема да можете да ја вратите дупката ако немате резервна копија. Ја имавме оваа грешка: 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. Блоб никогаш не беше обновен.
Стандардно, inotify-createrepo следи директориум /var/www/repos/rpm-repo/.
Можете да го промените овој директориум во датотеката /etc/inotify-createrepo.conf.
Користете
Кога додавате која било датотека во директориум /var/www/repos/rpm-repo/ inotifywait ќе создаде датотека /tmp/need_create. Функцијата run_createrepo работи во бесконечен циклус и ја следи датотеката /tmp/need_create. Ако датотеката постои, тогаш стартувајте createrepo --update.
За да направите висока достапност од постоечко решение, мислам дека можете да користите 2 сервери, Keepalived за HA и Lsyncd за синхронизација на артефакти. Lsyncd - демон кој ги следи промените во локалниот директориум, ги собира и по одредено време, rsync почнува да ги синхронизира. Деталите и поставките се опишани во објавата "Брза синхронизација на милијарда датотеки".
вебдав
Постојат неколку начини за поставување датотеки: SSH, NFS, WebDav. WebDav се чини дека е модерна и едноставна опција.
За WebDav, ќе користиме Apache httpd. Зошто Apache httpd во 2020 година, а не nginx?
Би сакал да користам автоматизирани алатки за градење Nginx + модули (на пример, Webdav).
Мислам дека остатокот од конфигурацијата на Apache httpd ќе го направите сами.
Nginx пред Apache httpd
За разлика од Apache, Nginx користи модел за обработка на барања базиран на настани, што значи дека е потребен само еден процес на HTTP сервер за кој било број клиенти. Можете да користите nginx и да го намалите оптоварувањето на серверот.
nginx-front.conf конфигурација. Мислам дека остатокот од конфигурацијата на nginx ќе го направите сами.