2009-11-16 17 views
13

He creado con éxito un pequeño entorno de ingeniería de software (SEE) para aplicaciones Java que, entre otras herramientas, está basado en maven y nexus. Mi problema real es, no es una sorpresa, que el nexo generalmente requiera acceso a Internet para obtener los artefactos solicitados de los repositorios centrales. Pero el SEE tiene que estar estrictamente fuera de línea y no hay forma de cambiarlo (... razones de seguridad).Uso de Sonatype nexus en la red local

Mi primera solución rápida fue duplicar la instalación de nexus/maven en la máquina, que estaba conectada a internet, ejecutar algunos pom estándar para poblar el nexo duplicado y migrar la caché mediante CD-ROM al sistema de destino. Muy feo. Realmente no estoy esperando adaptar ese proceso para obtener actualizaciones de artefactos o artefactos nuevos. De hecho, ahora solo solemos importar las bibliotecas que necesitamos y crear nuevos artefactos (con nexus) en lugar de utilizar los oficiales de central y otros.

¿Alguien ha enfrentado el mismo desafío y ha encontrado un enfoque más inteligente y eficiente?

Editar

Gracias por todas las respuestas, creo que tengo que ser más precisa sobre el problema real y la solución que estoy pensando en este momento: Creo que tengo para crear, rellenar y sincronice un repositorio "central" privado, basado en repositorios centrales y otros en Internet, o exactamente: dos repositorios idénticos. Uno conectado a internet el otro en la red local. Luego puedo mantener el repositorio conectado a Internet 'actualizado' y copiar los cambios a través de DVD en el repositorio local, que es visible para Nexus.

¿Funcionaría? ¿Hay documentación disponible sobre cómo configurar algo como 'central' en un servidor privado, hay un mecanismo para sincronizar artefactos seleccionados?

(no quería publicar mis pensamientos al principio porque tenía la esperanza de obtener ideas totalmente diferentes)

Edición 2 - "mejores prácticas" - añadió bajo petición

Nuestro "mejores prácticas "para el uso de Maven en un entorno que está totalmente desconectado de internet:

  • instalamos nexo en un servidor central, de manera que las estaciones de trabajo de desarrollo de software tenían un servidor para hablar (y que era nuestro propio representante artefacto ository)
  • Exportamos los archivos POM a una estación de trabajo con acceso a internet, borramos el repositorio local en esa máquina e hicimos un dependency:go-offline (plugin). Este poblado el repositorio local con todos los artedfacts requeridos
  • importamos este repositorio local para el entorno seguro y ha añadido todos los plugins de nexo (acaba de copiar los ficheros - la estructura es idéntica)

hacer esto una vez a la semana con todos los archivos POM (pueden ser automatizados) y usted tiene un repositorio local bastante estable y utilizable.

+0

Por estrictamente fuera de línea, ¿quiere decir desconectado de Internet o sin red en absoluto? –

+0

Gracias por esa observación: el entorno tiene una red pequeña: un servidor con nexus, algunos clientes con IDE de eclipse. Pero la red no está conectada a internet (ni a ninguna otra red). –

+1

Andreas- Han pasado más de un año. ¿Tiene alguna lección aprendida para informar? Estoy frente al mismo problema que tú. –

Respuesta

4

¿funcionaría? ¿Hay documentación disponible sobre cómo configurar algo como 'central' en un servidor privado, hay un mecanismo para sincronizar artefactos seleccionados?

Bueno, podrías convertirte en un mirror central pero, ¿para qué sirve ~ 10 GB de artefactos? No los necesitará todos y la recomendación habitual es usar un administrador de repositorios.

En realidad mi pensamiento inicial fue:

  1. Utilice un Nexus conectado a Internet fuera de la SEE
  2. rsync el contenido de este Nexus en un DVD.
  3. copiar el contenido a la Nexus de la SEE a través de un DVD.
  4. Repetir periódicamente.

Encontré esta solución fea pero, ahora que tenemos más detalles sobre su situación, podría ser aceptable.

+0

Gracias por su respuesta. Especialmente para el enlace maven, creo que eso ayuda mucho. El segundo nexo es una buena idea, pero tendría que encontrar una forma de insertar artefactos en el nexo: el nexo suele almacenar en caché artefactos a pedido, como impulsado por una construcción maven, y no hay 'demanda' en el exterior. Creo que retocaré la solución de "repositorio público": duplicaré los artefactos necesarios y crearé un clon de ese servidor en la red interna ... –

+0

No cubrí esa parte, pero esto requeriría ejecutar maven en un pom con todas las dependencias requeridas (por ejemplo, usando 'mvn dependency: go-offline', no es necesario compilar nada). Supongo que usar los pom (s) de la SEE no es una opción ... –

4

He trabajado alguna vez en un entorno de red en el que una parte de una red no tendría acceso a Internet ni a ninguna otra red.Cada vez que necesitamos para actualizar el software dentro de esta red, que hicimos lo siguiente: software actualizado

  1. carga a un host (piedra de paso) "seguro"
  2. desconexión escalón de piedra de
  3. piedra neta paso de conexión para asegurar net software actualizado
  4. empuje al repositorio
  5. desconexión escalón de piedra de seguro neta

Nos totalmente automatizado este proce ss mediante la configuración automática de un conmutador para conectar y desconectar las redes de manera apropiada (por lo que siempre había una conexión física pero no una conexión IP utilizable). Tal vez usted podría hacer algo similar - sólo depende de la flexibilidad de la definición de "desconectado";)

+0

Tuviste la suerte de que permitieras que 'step stone' se conectara a ambas redes, al menos una tras otra. Desafortunadamente, mi entorno es más estricto ... ¡Pero parece un buen enfoque! –

+0

Bueno, no fue particularmente agradable, de hecho fue una gran bestia con docenas de firewalls y diferentes políticas de seguridad. Sin mencionar todos los grupos de seguridad y certificación que se requería para poner esto en uso de producción :) – sfussenegger

+0

Me resulta familiar ;-) –

3

que se enfrentaron a un problema similar en mi entorno.

Ordinariamente nuestro servidor de alojamiento Nexus no sería capaz de acceder a Internet. Sin embargo, me reuní con el equipo de operaciones y les expliqué que permitir a Nexus descargar artefactos automáticamente de Internet es una gran ganancia de productividad para nosotros.

Una vez que comprendieron nuestras necesidades, operaciones permitidas al servidor para acceder a una lista blanca muy estricto de IPs de Internet, tales como el repositorio central de Maven. Así que todavía tenemos que pasar por operaciones para agregar repositorios nuevos o realizar correcciones de listas blancas cuando cambian las direcciones IP externas del repositorio. Pero, en general, sentimos que era el mejor compromiso entre seguridad y productividad, y funciona para nosotros.

Vea si sus partes interesadas utilizarán la conexión de su red a Internet de una manera altamente restringida solo en la lista blanca, una vez que les reitere cómo hacerlo lo hará más productivo y, finalmente, le ahorrará tiempo a todos.

+0

Me gusta esa idea: tal vez pueda convencer a mis muchachos de seguridad de una solución que combine la lista blanca y la conexión temporal ... aunque todavía tengo dudas ... –

+0

Seguro: combinar una conexión temporal con listas IP estrictas suena bastante poderosa. Si lo scripts, según la respuesta de sfussenegger, deberías terminar con algo seguro y útil. –

3

Las funciones de adquisición en Nexus Pro fueron diseñados precisamente para manejar este caso de uso.

What is Procurement?

Procurement Suite User guide

+0

No estoy seguro, ¿no cambia el problema a otro servidor? En mi situación, tendré que aplicar las mismas restricciones de seguridad al servidor del "repositorio adquirido", por ejemplo: no hay conexión a internet. Entonces, ¿cómo puedo completar y actualizar el repositorio adquirido? –

+0

Está destinado a funcionar en un escenario en el que Nexus pueda contactar con los repos remotos, pero las cosas que se utilizan son controladas en gran medida. Al agregar esta capa adicional de "firewall", las organizaciones que anteriormente tenían que desconectarse por completo ahora solo pueden acceder a través de Nexus. –

Cuestiones relacionadas