Использование сонатного типа в локальной сети
Я успешно создал небольшую среду разработки программного обеспечения (SEE) для приложений Java, которая - среди других инструментов - на основе maven и nexus. Моя реальная проблема - не настоящий сюрприз - обычно для связи требуемых артефактов из центральных хранилищ обычно требуется доступ к Интернету. Но ЮВЕ должно быть строго офф-лайн, и нет способа изменить его (.. соображения безопасности).
Моим первым быстрым решением было зеркальное отображение установки nexus/maven на машине, которая была подключена к Интернету, запустить стандартную pom, чтобы заполнить зеркальную связь и перенести кеш через CD-ROM в целевую систему. Довольно уродливые. Я не очень надеюсь адаптировать этот процесс для получения обновлений для артефактов или новых. Фактически, теперь мы обычно просто импортируем библиотеки, которые нам нужны, и создаем новые артефакты (с помощью нексуса), вместо этого используем официальные из центрального и других.
Кто-нибудь сталкивался с тем же вызовом и нашел более умный и эффективный подход?
Edit
Спасибо за все ответы, я думаю, что я должен быть более точным по актуальной проблеме и решению, о котором я сейчас думаю: я думаю, что мне нужно создавать, заполнять и синхронизировать частный "центральный" репозиторий, основанный на центральных и других репозиториях в Интернете, или точно: два идентичных хранилища. Один подключен к Интернету другой в локальной сети. Затем я могу сохранить обновленный интернет-репозиторий и скопировать изменения с помощью DVD в локальный репозиторий - что видно для Nexus.
Будет ли это работать? Существует ли документация о том, как настроить что-то вроде "центрального" на частном сервере, существует ли механизм для синхронизации выбранных артефактов?
(не хотел публиковать мои мысли в начале, потому что я надеялся получить совершенно разные идеи)
Изменить 2 - "Лучшая практика" - добавлена по запросу
Наша "лучшая практика" для использования maven в среде, полностью отключенной от Интернета:
- Мы установили связь на центральном сервере, чтобы рабочие станции разработки программного обеспечения имели сервер, с которым можно было разговаривать (и это был наш собственный репозиторий артефактов).
- Мы экспортировали файлы POM на рабочую станцию с доступом в Интернет, очистили локальный репозиторий на этом компьютере и сделали
dependency:go-offline
(plugin). Это засело локальный репозиторий со всеми необходимыми артефактами
- Мы импортировали этот локальный репозиторий в безопасную среду и добавили все плагины в nexus (просто скопировали файлы - структура идентична)
Сделайте это раз в неделю со всеми файлами POM (можно автоматизировать), и у вас есть довольно стабильный и полезный локальный репозиторий.
Ответы
Ответ 1
Будет ли это работать? Существует ли документация о том, как настроить что-то вроде "центрального" на частном сервере, существует ли механизм для синхронизации выбранных артефактов?
Хорошо, вы могли бы стать зеркалом центрального, но, что точка захвата ~ 10 ГБ артефактов? Вам не понадобятся все они, и обычно рекомендуется использовать диспетчер хранилища.
Собственно, мои первоначальные мысли были:
- Используйте Nexus, подключенный к Интернету вне SEE
-
rsync
содержимое этого Nexus на DVD.
- Скопируйте контент в Nexus из SEE с помощью DVD.
- Периодически повторяйте.
Я нашел это решение уродливым, но теперь, когда у нас есть более подробная информация о вашей ситуации, это может быть приемлемым.
Ответ 2
Я когда-то работал в сетевой среде, где часть сети не имела доступа к Интернету или другой сети. Всякий раз, когда нам нужно было обновлять программное обеспечение в этой сети, мы сделали следующее:
- загрузить обновленное программное обеспечение на "безопасный" хост (шаг камня)
- Отключить шаг камень из сети
- подключить шаговый шаг для защиты сети.
- добавить обновленное программное обеспечение в репозиторий
- Отключить шаг из защищенной сети.
Мы полностью автоматизировали этот процесс, автоматически настраивая коммутатор для надлежащего подключения и отключения сетей (так что было физическое соединение в любое время, но без использования IP-соединения). Возможно, вы могли бы сделать что-то подобное - это просто зависит от гибкости определения "отключено";)
Ответ 3
В моей среде я столкнулся с аналогичной проблемой.
Обычно наш сервер, на котором размещен Nexus, не сможет получить доступ к Интернету. Тем не менее, я встретился с командой операций и объяснил им, что позволяет Nexus автоматически загружать артефакты из Интернета - это огромный выигрыш в производительности для нас.
После того, как они поняли наши потребности, операционные системы разрешили серверу получать доступ к очень строгому списку белых IP-адресов, таких как центральный репозиторий Maven. Таким образом, нам по-прежнему приходится проходить через ops, чтобы добавлять новые репозитории или выполнять настройки белого списка, когда изменяются IP-адреса внешнего репозитория. Но в целом мы чувствовали, что это лучший компромисс между безопасностью и производительностью, и он работает для нас.
Посмотрите, пойдут ли ваши заинтересованные стороны для подключения вашей сети к Интернету в строго ограниченном белом списке, как только вы повторите, как это сделает вас более продуктивными и в конечном итоге сэкономит время.
Ответ 4
Функции закупок в Nexus Pro были разработаны специально для обработки этого варианта использования.
Что такое закупки?
Руководство по заказу Suite