ProHoster > Blog > Administración > Instalación e configuración de Nexus Sonatype utilizando a infraestrutura como enfoque de código
Instalación e configuración de Nexus Sonatype utilizando a infraestrutura como enfoque de código
Sonatype Nexus é unha plataforma integrada a través da cal os desenvolvedores poden proxy, almacenar e xestionar dependencias de Java (Maven), Docker, Python, Ruby, NPM, imaxes Bower, paquetes RPM, gitlfs, Apt, Go, Nuget e distribuír a súa seguridade de software.
Por que necesitas Sonatype Nexus?
Para almacenar artefactos privados;
Para almacenar en caché artefactos que se descargan de Internet;
Artefactos admitidos no paquete básico Sonatype Nexus:
Instalar ansible pip install ansible na estación de traballo onde se executa o playbook.
Conxunto geerlingguy.java na estación de traballo onde se executa o playbook.
Conxunto geerlingguy.apache na estación de traballo onde se executa o playbook.
Este papel foi probado en CentOS 7, Ubuntu Xenial (16.04) e Bionic (18.04), Debian Jessie e Stretch
jmespath A biblioteca debe estar instalada na estación de traballo onde se está a executar o playbook. Para instalar: sudo pip install -r requirements.txt
Garda o ficheiro do playbook (exemplo a continuación) no ficheiro nexus.yml
Executa a instalación do nexus ansible-playbook -i host nexus.yml
Exemplo de ansible-playbook para instalar nexus sen LDAP con repositorios Maven (java), Docker, Python, Ruby, NPM, Bower, RPM e gitlfs.
Variables con valores predeterminados (ver default/main.yml):
Variables xerais
nexus_version: ''
nexus_timezone: 'UTC'
De forma predeterminada, a función instalará a última versión dispoñible de Nexus. Podes corrixir a versión cambiando a variable nexus_version. Consulta as versións dispoñibles en https://www.sonatype.com/download-oss-sonatype.
Se cambias a unha versión máis recente, a función tentará actualizar a túa instalación de Nexus.
Se estás a usar unha versión de Nexus máis antiga que a máis recente, debes asegurarte de que non estás a usar funcións que non están dispoñibles na versión instalada (por exemplo, o hospedaxe de repositorios yum está dispoñible para nexus superior a 3.8.0, git lfs repo). para nexos superiores a 3.3.0, etc.)
nexus timezone é o nome da zona horaria de Java, que pode ser útil en combinación coas seguintes expresións cron para tarefas nexus_scheduled.
O porto e a ruta do contexto do proceso de conexión de Java. nexus_default_context_path debe conter unha barra inclinada cando está configurado, por exemplo: nexus_default_context_path: '/nexus/'.
Usuario e grupo de Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
O usuario e o grupo utilizados para posuír ficheiros Nexus e executar o servizo serán creados polo rol se falta algún.
nexus_os_user_home_dir: '/home/nexus'
Permite cambiar o directorio de inicio predeterminado para o usuario de nexus
nexus_data_dir contén toda a configuración, repositorios e artefactos descargados. Camiños de almacén de blobs personalizados nexus_data_dir pódese personalizar, vexa a continuación nexus_blobstores.
nexus_tmp_dir contén todos os ficheiros temporais. O camiño predeterminado para redhat foi movido desde /tmp para superar os posibles problemas cos procedementos de limpeza automática. Ver número 168.
Como segunda advertencia, aquí tes un extracto do documento anterior:
Non se recomenda aumentar a memoria de pila JVM máis aló dos valores recomendados para tentar mellorar o rendemento. Isto pode realmente ter o efecto contrario, resultando en traballo innecesario para o sistema operativo.
Contrasinal de administrador
nexus_admin_password: 'changeme'
O contrasinal da conta "administrador" para a configuración. Isto só funciona na primeira instalación predeterminada. Consulta [Cambiar o contrasinal do administrador despois da primeira instalación](# change-admin-password-after-first-install) se queres cambialo máis tarde usando un rol.
Recoméndase encarecidamente non gardar o seu contrasinal en texto claro no libro de xogadas, senón usar [encriptación ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (xa sexa en liña ou nun ficheiro separado cargado con, por exemplo, include_vars)
Acceso anónimo por defecto
nexus_anonymous_access: false
O acceso anónimo está desactivado por defecto. Ler máis sobre acceso anónimo.
Estas variables controlan como se conecta o rol á API de Nexus para o aprovisionamento. Só para usuarios avanzados. Probablemente non queiras cambiar esta configuración predeterminada
Conxunto Proxy inverso SSL.
Para iso cómpre instalar httpd. Nota: cando para httpd_setup_enable valor establecidotrue, contactos de nexus 127.0.0.1:8081, polo tanto non sendo accesible directamente a través do porto HTTP 8081 desde o enderezo IP externo.
O nome de host predeterminado utilizado é nexus_public_hostname. Se necesitas nomes diferentes por algún motivo, podes configurar httpd_server_name cun significado diferente.
С httpd_copy_ssl_files: true (por defecto) os certificados anteriores deberían existir no directorio do seu playbook e copiaranse no servidor e configuraranse en apache.
Se quere utilizar certificados existentes no servidor, instáleo httpd_copy_ssl_files: false e proporciona as seguintes variables:
# These specifies to the vhost where to find on the remote server file
# system the certificate files.
httpd_ssl_cert_file_location: "/etc/pki/tls/certs/wildcard.vm.crt"
httpd_ssl_cert_key_location: "/etc/pki/tls/private/wildcard.vm.key"
# httpd_ssl_cert_chain_file_location: "{{ httpd_ssl_cert_file_location }}"
httpd_ssl_cert_chain_file_location é opcional e debe deixarse sen definir se non quere personalizar o ficheiro en cadea
nexus_privileges:
- name: all-repos-read # used as key to update a privilege
# type: <one of application, repository-admin, repository-content-selector, repository-view, script or wildcard>
description: 'Read & Browse access to all repos'
repository: '*'
actions: # can be add, browse, create, delete, edit, read or * (all)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: name
lista privilexios para a configuración. Consulta a documentación e a GUI para comprobar que variables hai que configurar dependendo do tipo de privilexio.
Estes elementos combínanse cos seguintes valores predeterminados:
nexus_roles:
- id: Developpers # can map to a LDAP group id, also used as a key to update a role
name: developers
description: All developers
privileges:
- nx-search-read
- all-repos-read
roles: [] # references to other role names
nexus_local_users: []
# - username: jenkins # used as key to update
# state: present # default value if ommited, use 'absent' to remove user
# first_name: Jenkins
# last_name: CI
# email: [email protected]
# password: "s3cr3t"
# roles:
# - developers # role ID
Lista de contas/usuarios locais (non LDAP) para crear en nexus.
Lista de usuarios/contas locais (non LDAP) para crear en Nexus.
Mapeo Ldap de usuarios/roles. Estado absent eliminará roles dun usuario existente se xa existe.
Os usuarios de Ldap non se eliminan. Se tentas establecer un rol para un usuario inexistente, producirase un erro.
Selectores de contido
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Para obter máis información sobre o selector de contido, consulte Documentación.
Para usar o selector de contido, engade un novo privilexio con type: repository-content-selector e relevantescontentSelector
Elimina os repositorios da configuración predeterminada inicial de instalación de nexus. Este paso só se executa na primeira instalación (cando nexus_data_dir detectouse baleiro).
Eliminando repositorios da configuración predeterminada para Nexus. Este paso só se realiza durante a primeira instalación (cando nexus_data_dir baleiro).
nexus_delete_default_blobstore: false
Elimina o almacén de blobs predeterminado da configuración predeterminada inicial de instalación de nexus. Isto pódese facer só se nexus_delete_default_repos: true e todos os repositorios configurados (ver máis abaixo) teñen un explícito blob_store: custom. Este paso só se executa na primeira instalación (cando nexus_data_dir detectouse baleiro).
A eliminación de almacenamento de blobs (artefactos binarios) está desactivada de forma predeterminada desde a configuración inicial. Para eliminar o almacenamento de blobs (artefactos binarios), desactívao nexus_delete_default_repos: true. Este paso só se realiza durante a primeira instalación (cando nexus_data_dir baleiro).
Blobstores crear. Unha ruta de almacén de blobs e un almacén de blobs de repositorio non se poden actualizar despois da creación inicial (calquera actualización aquí ignorarase ao volver a aprovisionar).
A configuración de blobstore en S3 ofrécese como comodidade e non forma parte das probas automatizadas que realizamos en travis. Ten en conta que só se recomenda almacenar en S3 para as instancias despregadas en AWS.
Creación Blobstores. A ruta de almacenamento e o repositorio de almacenamento non se poden actualizar despois da creación inicial (calquera actualización aquí ignorarase cando se instale de novo).
A configuración de almacenamento de blobs en S3 ofrécese como comodidade. Ten en conta que o almacenamento S3 só se recomenda para instancias implantadas en AWS.
Arriba hai un exemplo de configuración servidor proxy Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven repositorios aloxados configuración. A configuración da caché negativa é opcional e se omite os valores predeterminados.
Configuración repositorios aloxados Maven. A configuración da caché negativa (-1) é opcional e terá como predeterminado os valores anteriores se non se especifica.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Os tres tipos de repositorio combínanse cos seguintes valores predeterminados:
_nexus_repos_maven_defaults:
blob_store: default # Note : cannot be updated once the repo has been created
strict_content_validation: true
version_policy: release # release, snapshot or mixed
layout_policy: strict # strict or permissive
write_policy: allow_once # one of "allow", "allow_once" or "deny"
maximum_component_age: -1 # Nexus gui default. For proxies only
maximum_metadata_age: 1440 # Nexus gui default. For proxies only
negative_cache_enabled: true # Nexus gui default. For proxies only
negative_cache_ttl: 1440 # Nexus gui default. For proxies only
Tipos de repositorio Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum:
Ver defaults/main.yml para estas opcións:
Os repositorios Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum están desactivados por defecto:
Ver defaults/main.yml para estas opcións:
Teña en conta que pode ter que activar certos ámbitos de seguridade se quere utilizar outros tipos de repositorios distintos de Maven. Isto é falso por defecto
A copia de seguranza non se configurará ata que cambies nexus_backup_configure в true.
Neste caso, a tarefa de script programada configurarase para executarse en Nexus
no intervalo especificado en nexus_backup_cron (por defecto 21:00 todos os días).
Consulte [modelo groovy para esta tarefa](templates/backup.groovy.j2) para obter máis información.
Esta tarefa programada é independente doutras nexus_scheduled_tasksque ti
anuncia no teu libro de xogos.
Se queres rotar/eliminar copias de seguridade, instálaa nexus_backup_rotate: true e configure o número de copias de seguridade que desexa gardar usando nexus_backup_keep_rotations (predeterminado 4).
Ao usar a rotación, se quere aforrar espazo adicional no disco durante o proceso de copia de seguridade,
Podes instalar nexus_backup_rotate_first: true. Isto configurará a pre-rotación/eliminación antes da copia de seguridade. Por defecto, a rotación prodúcese despois de crear unha copia de seguridade. Teña en conta que neste caso as copias de seguridade antigas
eliminarase antes de que se faga a copia de seguridade actual.
Procedemento de recuperación
Executar playbook con parámetro -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(por exemplo, 2017-12-17-21-00-00 para o 17 de decembro de 2017 ás 21:00 horas
Eliminando nexo
Aviso: Isto eliminará completamente os teus datos actuais. Asegúrate de facer unha copia de seguridade antes se é necesario
Usa unha variable nexus_purgese precisa reiniciar desde cero e reinstalar a instancia do nexus con todos os datos eliminados.
Cambia o contrasinal do administrador despois da primeira instalación
nexus_default_admin_password: 'admin123'
Isto non debe cambiarse no teu libro de xogos. Esta variable enchégase co contrasinal de administrador de Nexus predeterminado cando se instalou por primeira vez e garante que podemos cambiar o contrasinal de administrador a nexus_admin_password.
Se queres cambiar o contrasinal do administrador despois da primeira instalación, podes cambialo temporalmente polo antigo desde a liña de comandos. Despois do cambio nexus_admin_password no teu libro de xogadas podes executar: