Для IP адресов России часто стали встречаться блокировки доступа к репозиториям популярных продуктов. Первое, что вспоминается - Hashicorp, Elastic, Grafana и т. д. Для решения этих проблем становятся актуальны локальные репозитории. Я уже рассказывал про отдельные программы для deb и rpm репозиториев. Сегодня хочу рассказать про универсальный open source проект для организации локальных репозиториев различных типов - Nexus repository.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
📌 Основные возможности Nexus repository:
- управление через браузер или api;
- ролевая модель доступа к репозиториям;
- интеграция с ldap;
- может работать как локальный репозиторий или в режиме прокси.
С помощью Nexus можно быстро поднять локальные репозитории огромного списка типов - rpm, deb, docker, helm и много других. Он поддерживает практически все современные репозитории. Запуск можно выполнить через готовый Docker образ:
# docker volume create --name nexus-data # docker run -d -p 8081:8081 --name nexus \ -v nexus-data:/nexus-data sonatype/nexus3
После этого смотрим пароль пользователя admin в файле /var/lib/docker/volumes/nexus-data/_data/admin.password. Теперь можно идти в веб интерфейс и создавать репозитории. Сделать это очень просто. Например, создаёте репозиторий apt, генерируете gpg ключ, через браузер заливаете в репозиторий готовый пакет. Потом идёте в систему, импортируете ключ и подключаете репозиторий. Путь к нему можно посмотреть через веб интерфейс. Примерно так выглядит процедура для любого репозитория.
На все действия есть подсказки в веб интерфейсе или в документации. Так что продукт максимально дружелюбен к пользователю. А для автоматизации можно использовать API.
Такой вопрос: а как правильно настраивать кэширование nupkg-пакетов? Использую Chocolatey на win-машине с прописанным nexus-репозиторием. Но при попытке установить пакет("choco install visioviewer2016 -v" - например) появляется в Nexus(nuget-group) его nuget-пакет объёмом 5.3Кбайт, т.е. по сути не полноценный пакет. А на самой win-машине появляется ошибка о невозможности скачать его с внешнего источника:
Attempt to get headers for https://download.microsoft.com/download/D/B/7/DB790874-4414-417F-ADF6-348B29572B9F/visioviewer_4339-1001_x64_en-us.exe failed.
The remote file either doesn't exist, is unauthorized, or is forbidden for url 'https://download.microsoft.com/download/D/B/7/DB790874-4414-417F-ADF6-348B29572B9F/visioviewer_4339-1001_x64_en-us.exe'. Exception calling "GetResponse" with "0" argument(s): "Unable to connect to the remote server"
Downloading visioviewer2016 64 bit
from 'https://download.microsoft.com/download/D/B/7/DB790874-4414-417F-ADF6-348B29572B9F/visioviewer_4339-1001_x64_en-us.exe'
ERROR: The remote file either doesn't exist, is unauthorized, or is forbidden for url 'https://download.microsoft.com/download/D/B/7/DB790874-4414-417F-ADF6-348B29572B9F/visioviewer_4339-1001_x64_en-us.exe'. Exception calling "GetResponse" with "0" argument(s): "Unable to connect to the remote server"
The install of visioviewer2016 was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\visioviewer2016\tools\chocolateyInstall.ps1'.
See log for details.
Если же дать win-машине доступ в интернет(а не только по ЛВС), то пакет скачивается и устанавливается на этой машине, но в репозитории Nexus так и не появляется.
Если это вопрос ко мне, то я не знаю, чем помочь. Никогда не использовал Nexus в этом ключе.