Sonatype Nexus es una plataforma integrada que permite a los desarrolladores proxy, almacenar y gestionar dependencias de Java (Maven), imágenes de Docker, Python, Ruby, NPM, Bower, paquetes RPM, gitlfs, Apt, Go, Nuget, así como distribuir su software.
¿Para qué sirve Sonatype Nexus?
- Para almacenar artefactos privados;
- Para almacenar en caché artefactos descargados de internet;
Artefactos soportados en la distribución base de Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefactos soportados por la comunidad:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Instalación de Sonatype Nexus utilizando
Requisitos
- Lee sobre el uso de ansible en internet.
- Instala ansible
pip install ansibleen la estación de trabajo donde se ejecuta el playbook. - Instala en la estación de trabajo donde se ejecuta el playbook.
- Instala en la estación de trabajo donde se ejecuta el playbook.
- Este rol ha sido probado en CentOS 7, Ubuntu Xenial (16.04) y Bionic (18.04), Debian Jessie y Stretch
jmespathla biblioteca debe estar instalada en la estación de trabajo donde se ejecuta el playbook. Para instalar, ejecutasudo pip install -r requirements.txt- Guarda el archivo del playbook (ejemplo a continuación) como nexus.yml
- Ejecuta la instalación de nexus
ansible-playbook -i host nexus.yml
Ejemplo de ansible-playbook para la instalación de nexus sin LDAP con repositorios de Maven (java), Docker, Python, Ruby, NPM, Bower, RPM y gitlfs.
---
- name: Nexus
hosts: nexus
become: yes
vars:
nexus_timezone: 'Asia/Omsk'
nexus_admin_password: "admin123"
nexus_public_hostname: 'apatsev-nexus-playbook'
httpd_setup_enable: false
nexus_privileges:
- name: all-repos-read
description: 'Acceso para leer y navegar a todos los repositorios'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Despliegues al proyecto de la empresa'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # se mapea al grupo LDAP
name: developers
description: Todos los desarrolladores
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # utilizado como clave para actualizar
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID del rol aquí
nexus_blobstores:
- name: company-artifacts
path: /var/nexus/blobs/company-artifacts
nexus_scheduled_tasks:
- name: compact-blobstore
cron: '0 0 22 * * ?'
typeId: blobstore.compact
taskProperties:
blobstoreName: 'company-artifacts'
nexus_repos_maven_proxy:
- name: central
remote_url: 'https://repo1.maven.org/maven2/'
layout_policy: permissive
- name: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
- name: vaadin-addons
remote_url: 'https://maven.vaadin.com/vaadin-addons/'
- name: jaspersoft
remote_url: 'https://jaspersoft.artifactoryonline.com/jaspersoft/jaspersoft-repo/'
version_policy: mixed
nexus_repos_maven_hosted:
- name: company-project
version_policy: mixed
write_policy: allow
blob_store: company-artifacts
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
- vaadin-addons
- jaspersoft
# Yum. Cambia nexus_config_yum a true para crear el repositorio yum
nexus_config_yum: true
nexus_repos_yum_hosted:
- name: private_yum_centos_7
repodata_depth: 1
nexus_repos_yum_proxy:
- name: epel_centos_7_x86_64
remote_url: http://download.fedoraproject.org/pub/epel/7/x86_64
maximum_component_age: -1
maximum_metadata_age: -1
negative_cache_ttl: 60
- name: centos-7-os-x86_64
remote_url: http://mirror.centos.org/centos/7/os/x86_64/
maximum_component_age: -1
maximum_metadata_age: -1
negative_cache_ttl: 60
nexus_repos_yum_group:
- name: yum_all
member_repos:
- private_yum_centos_7
- epel_centos_7_x86_64
# NPM. Cambia nexus_config_npm a true para crear el repositorio npm
nexus_config_npm: true
nexus_repos_npm_hosted: []
nexus_repos_npm_group:
- name: npm-public
member_repos:
- npm-registry
nexus_repos_npm_proxy:
- name: npm-registry
remote_url: https://registry.npmjs.org/
negative_cache_enabled: false
# Docker. Cambia nexus_config_docker a true para crear el repositorio docker
nexus_config_docker: true
nexus_repos_docker_hosted:
- name: docker-hosted
http_port: "{{ nexus_docker_hosted_port }}"
v1_enabled: True
nexus_repos_docker_proxy:
- name: docker-proxy
http_port: "{{ nexus_docker_proxy_port }}"
v1_enabled: True
index_type: "HUB"
remote_url: "https://registry-1.docker.io"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_docker_group:
- name: docker-group
http_port: "{{ nexus_docker_group_port }}"
v1_enabled: True
member_repos:
- docker-hosted
- docker-proxy
# Bower. Cambia nexus_config_bower a true para crear el repositorio bower
nexus_config_bower: true
nexus_repos_bower_hosted:
- name: bower-hosted
nexus_repos_bower_proxy:
- name: bower-proxy
index_type: "proxy"
remote_url: "https://registry.bower.io"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_bower_group:
- name: bower-group
member_repos:
- bower-hosted
- bower-proxy
# Pypi. Cambia nexus_config_pypi a true para crear el repositorio pypi
nexus_config_pypi: true
nexus_repos_pypi_hosted:
- name: pypi-hosted
nexus_repos_pypi_proxy:
- name: pypi-proxy
index_type: "proxy"
remote_url: "https://pypi.org/"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_pypi_group:
- name: pypi-group
member_repos:
- pypi-hosted
- pypi-proxy
# rubygems. Cambia nexus_config_rubygems a true para crear el repositorio rubygems
nexus_config_rubygems: true
nexus_repos_rubygems_hosted:
- name: rubygems-hosted
nexus_repos_rubygems_proxy:
- name: rubygems-proxy
index_type: "proxy"
remote_url: "https://rubygems.org"
use_nexus_certificates_to_access_index: false
maximum_component_age: 1440
maximum_metadata_age: 1440
negative_cache_enabled: true
negative_cache_ttl: 1440
nexus_repos_rubygems_group:
- name: rubygems-group
member_repos:
- rubygems-hosted
- rubygems-proxy
# gitlfs. Cambia nexus_config_gitlfs a true para crear el repositorio gitlfs
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Solo Debian/Ubuntu
# - { role: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
# Solo RedHat/CentOS
- { role: geerlingguy.apache, apache_create_vhosts: no, apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
- { role: ansible-thoteam.nexus3-oss, tags: ['ansible-thoteam.nexus3-oss'] }Capturas de pantalla:


Variables de rol
Variables de rol
Variables con valores predeterminados (ver default/main.yml):
Variables generales
nexus_version: ''
nexus_timezone: 'UTC'De forma predeterminada, el rol instalará la última versión disponible de Nexus. Puede fijar una versión modificando la variable nexus_version. Consulte las versiones disponibles en .
Si cambia la versión a una más nueva, el rol intentará actualizar su Nexus instalado.
Si está utilizando una versión de Nexus más antigua que la última, debe asegurarse de no utilizar funciones que no están disponibles en la versión instalada (por ejemplo, la gestión de repositorios yum está disponible para Nexus mayores que 3.8.0, git lfs repo para Nexus mayores que 3.3.0, etc.)
nexus timezone — es el nombre de la zona horaria de Java, que puede ser útil junto con las expresiones cron que se indican a continuación para tareas programadas de nexus.
Puerto Nexus y ruta de contexto
nexus_default_port: 8081
nexus_default_context_path: '"/'"Puerto y la ruta de contexto del proceso de conexión de Java. nexus_default_context_path debe contener una barra diagonal cuando se establece, por ejemplo: nexus_default_context_path: '"/nexus/"'.
Usuario y grupo del sistema operativo Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'El usuario y grupo utilizados para poseer los archivos de Nexus y ejecutar el servicio serán creados por el rol si no existen.
nexus_os_user_home_dir: '"/home/nexus"'Permitir cambiar el directorio de inicio predeterminado para el usuario nexus
Directorios de instancias de Nexus
nexus_installation_dir: '"/opt"'
nexus_data_dir: '"/var/nexus"'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('"/var/nexus-tmp"', '"/tmp/nexus"') }}"Directorios de Nexus.
nexus_installation_dircontiene los archivos ejecutables instaladosnexus_data_dircontiene toda la configuración, los repositorios y los artefactos cargados. Las rutas personalizadas de blobstoresnexus_data_dirpueden estar configuradas, consulte a continuaciónnexus_blobstores.nexus_tmp_dircontiene todos los archivos temporales. La ruta predeterminada para redhat se trasladó desde/tmppara evitar problemas potenciales con los procedimientos automáticos de limpieza. Consulte #168.
Configuración de uso de memoria de Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Estos son los valores predeterminados para Nexus. Por favor, no cambie estos valores. Si no ha leído y no entiende lo que hacen.
Como segunda advertencia, aquí hay un extracto del documento mencionado anteriormente:
No se recomienda aumentar la memoria del heap de la JVM más allá de los valores recomendados en un intento de mejorar el rendimiento. Esto puede tener el efecto contrario, causando un trabajo innecesario del sistema operativo.
Contraseña del administrador
nexus_admin_password: 'changeme'Contraseña de la cuenta 'admin' para la configuración. Esto solo funciona en una primera instalación por defecto. Por favor, consulte [Cambiar la contraseña del administrador después de la primera instalación](# change-admin-password-after-first-install) si desea cambiarla más tarde con un rol.
Se desaconseja encarecidamente almacenar su contraseña en texto plano en el playbook, y utilizar [cifrado ansible-vault]() (ya sea integrado o en un archivo separado, cargado, por ejemplo, mediante include_vars)
Acceso anónimo por defecto
nexus_anonymous_access: falseEl acceso anónimo por defecto está deshabilitado. Más sobre .
Nombre público del host
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsEl nombre de dominio completo y el esquema (https o http) a través del cual la instancia de Nexus será accesible para sus clientes.
Acceso a la API para este rol
nexus_api_hostname: localhost
nexus_api_scheme: http
nexus_api_validate_certs: "{{ nexus_api_scheme == 'https' }}"
nexus_api_context_path: "{{ nexus_default_context_path }}"
nexus_api_port: "{{ nexus_default_port }}"Estas variables controlan cómo el rol se conecta a la API de Nexus para proporcionar.
Solo para usuarios avanzados. Es probable que no desee cambiar estas configuraciones predeterminadas.
Configuración del proxy inverso
httpd_setup_enable: false
httpd_server_name: "{{ nexus_public_hostname }}"
httpd_default_admin_email: "admin@example.com"
httpd_ssl_certificate_file: 'files/nexus.vm.crt'
httpd_ssl_certificate_key_file: 'files/nexus.vm.key'
# httpd_ssl_certificate_chain_file: "{{ httpd_ssl_certificate_file }}"
httpd_copy_ssl_files: trueInstala .
Para esto, se debe instalar httpd. Nota: cuando para httpd_setup_enable se establece entrue, nexus se conecta a 127.0.0.1:8081, así no siendo accesible directamente a través del puerto HTTP 8081 desde una dirección IP externa.
El nombre de host utilizado por defecto es nexus_public_hostname. Si necesita nombres diferentes por alguna razón, puede establecer httpd_server_name con un valor diferente.
Con httpd_copy_ssl_files: true (por defecto) los certificados mencionados anteriormente deben existir en su directorio de playbook y serán copiados al servidor y configurados en Apache.
Si desea utilizar certificados existentes en el servidor, establezca httpd_copy_ssl_files: false y proporcione las siguientes 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 }}"ubicación_del_certificado_ssl_httpd_en_cadena es opcional y debe dejarse sin configurar si no desea configurar el archivo de cadena
httpd_default_admin_email: "admin@example.com"Establecer la dirección de correo electrónico del administrador por defecto
Configuración de LDAP
Las conexiones LDAP y el ámbito de seguridad están desactivados por defecto
nexus_ldap_realm: false
ldap_connections: [], cada elemento se ve de la siguiente manera:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP de Mi Empresa' # se usa como clave para actualizar la configuración ldap
ldap_protocol: 'ldaps' # ldap o ldaps
ldap_hostname: 'ldap.miempresa.com'
ldap_port: 636
ldap_use_trust_store: false # Si se deben usar certificados en el almacén de confianza de nexus
ldap_search_base: 'dc=miempresa,dc=net'
ldap_auth: 'none' # o simple
ldap_auth_username: 'username' # si auth = simple
ldap_auth_password: 'password' # si auth = simple
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (opcional)
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_subtree: false
ldap_map_groups_as_roles: false
ldap_group_base_dn: 'ou=groups'
ldap_group_object_class: 'posixGroup'
ldap_group_id_attribute: 'cn'
ldap_group_member_attribute: 'memberUid'
ldap_group_member_format: '${username}'
ldap_group_subtree: falseEjemplo de configuración de LDAP para autenticación anónima (enlace anónimo), también es una configuración «mínima»:
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Configuración LDAP más simple'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.miempresa.com'
ldap_search_base: 'dc=miempresa,dc=net'
ldap_port: 636
ldap_use_trust_store: false
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_object_class: 'inetOrgPerson'Ejemplo de configuración de LDAP para autenticación simple (usando una cuenta DSA):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configuración LDAP con DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.miempresa.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simple'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=miempresa,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # es mejor mantener las contraseñas en un almacén ansible
ldap_search_base: 'dc=miempresa,dc=net'
ldap_user_base_dn: 'ou=users'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_subtree: falseEjemplo de configuración de LDAP para autenticación simple (usando una cuenta DSA) + grupos, mapeados como roles:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Configuración LDAP con DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simple'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # Es mejor guardar las contraseñas en un vault de Ansible
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=users'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_map_groups_as_roles: true
ldap_group_base_dn: 'ou=groups'
ldap_group_object_class: 'groupOfNames'
ldap_group_id_attribute: 'cn'
ldap_group_member_attribute: 'member'
ldap_group_member_format: 'uid=${username},ou=users,dc=mycompany,dc=net'
ldap_group_subtree: falseEjemplo de configuración LDAP para autenticación simple (usando una cuenta DSA) + grupos asignados dinámicamente como roles:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configuración LDAP con DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'simple'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # Es mejor guardar las contraseñas en un vault de Ansible
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=users'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_map_groups_as_roles: true
ldap_map_groups_as_roles_type: 'dynamic'
ldap_user_memberof_attribute: 'memberOf'Privilegios
nexus_privileges:
- name: all-repos-read # utilizado como clave para actualizar un privilegio
# type:
description: 'Acceso de Lectura y Navegación a todos los repos'
repository: '*'
actions: # puede ser add, browse, create, delete, edit, read o * (todos)
- read
- browse
# patrón: patrón
# dominio: dominio
# script_name: nombreLista para configurarlo. Consulte la documentación y la interfaz gráfica para verificar qué variables deben establecerse según el tipo de privilegio.
Estos elementos se combinan con los siguientes valores por defecto:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRoles (dentro de Nexus se refiere a)
nexus_roles:
- id: Developpers # puede mapear a un id de grupo LDAP, también se usa como clave para actualizar un rol
name: developers
description: Todos los desarrolladores
privileges:
- nx-search-read
- all-repos-read
roles: [] # referencias a otros nombres de rolLista para configurarlo.
Usuarios
nexus_local_users: []
# - username: jenkins # utilizado como clave para actualizar
# state: present # valor por defecto si se omite, use 'absent' para eliminar usuario
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # rol IDLista de usuarios/cuentas locales (no LDAP) para crear en nexus.
Lista de usuarios/cuentas locales (no LDAP) para crear en Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Mapeo de usuarios/roles LDAP. Estado ausente eliminar roles de un usuario existente, si ya existe.
Los usuarios LDAP no se eliminan. Intentar establecer un rol para un usuario que no existe dará lugar a un error.
Selectores de contenido
nexus_content_selectors:
- name: docker-login
description: Selector para privilegios de inicio de sesión de Docker
search_expression: format=="docker" and path=~"/v2/"Para más información sobre el selector de contenido, consulte .
Para utilizar el selector de contenido, añada un nuevo privilegio con type: repository-content-selector y el correspondientecontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Inicio de sesión en el registro de Docker'
repository: '*'
actions:
- read
- browseBlobstores y repositorios
nexus_delete_default_repos: falseEliminar los repositorios de la configuración predeterminada inicial de Nexus. Este paso solo se ejecuta en la primera instalación (cuando nexus_data_dir se ha detectado vacío).
Eliminación de repositorios de la configuración predeterminada de Nexus. Este paso solo se realiza en la primera instalación (cuando nexus_data_dir está vacío).
nexus_delete_default_blobstore: falseEliminar el blobstore predeterminado de la configuración predeterminada inicial de Nexus. Esto solo se puede hacer si nexus_delete_default_repos: true y todos los repositorios configurados (ver más abajo) tienen un blob_store: custom. Este paso solo se ejecuta en la primera instalación (cuando nexus_data_dir se ha detectado vacío).
La eliminación del almacenamiento de blobs (artefactos binarios) está desactivada por defecto en la configuración inicial. Para eliminar el almacenamiento de blobs (artefactos binarios) desactive nexus_delete_default_repos: true. Este paso solo se realiza en la primera instalación (cuando nexus_data_dir está vacío).
nexus_blobstores: []
# artículo de ejemplo de blobstore :
# - name: separate-storage
# type: file
# path: /mnt/custom/path
# - name: s3-blobstore
# type: S3
# config:
# bucket: s3-blobstore
# accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
# secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"para crear. Un path de blobstore y un blobstore de repositorio no se pueden actualizar después de la creación inicial (cualquier actualización aquí será ignorada en la re-provisión).
La configuración del blobstore en S3 se proporciona como conveniencia y no forma parte de las pruebas automatizadas que realizamos en travis. Tenga en cuenta que el almacenamiento en S3 solo se recomienda para instancias desplegadas en AWS.
Creando . El camino hacia el almacenamiento y el blobstore del repositorio no pueden ser actualizados después de la creación inicial (cualquier actualización aquí será ignorada en la reinstalación).
La configuración del almacenamiento de objetos BLOB en S3 se proporciona para conveniencia. Tenga en cuenta que el almacenamiento en S3 solo se recomienda para instancias desplegadas en AWS.
nexus_repos_maven_proxy:
- name: central
remote_url: 'https://repo1.maven.org/maven2/'
layout_policy: permissive
# maximum_component_age: -1
# maximum_metadata_age: 1440
# negative_cache_enabled: true
# negative_cache_ttl: 1440
- name: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
# maximum_component_age: -1
# maximum_metadata_age: 1440
# negative_cache_enabled: true
# negative_cache_ttl: 1440
# ejemplo con un nombre de usuario/contraseña :
# - name: secret-remote-repo
# remote_url: 'https://company.com/repo/secure/private/go/away'
# remote_username: 'username'
# remote_password: 'secret'
# # maximum_component_age: -1
# # maximum_metadata_age: 1440
# # negative_cache_enabled: true
# # negative_cache_ttl: 1440Ejemplo de configuración anterior Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # uno de "allow", "allow_once" o "deny"Maven configuración. La configuración de caché negativa es opcional y se establecerá de forma predeterminada en los valores anteriores si se omite.
Configuración Maven. La configuración del caché negativo (-1) es opcional y utilizará los valores mencionados anteriormente de forma predeterminada si no se proporciona.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossConfiguración Maven.
Los tres tipos de repositorios se combinan con los siguientes valores predeterminados:
_nexus_repos_maven_defaults:
blob_store: default # Nota: no se puede actualizar una vez que se ha creado el repositorio
strict_content_validation: true
version_policy: release # release, snapshot o mixed
layout_policy: strict # strict o permissive
write_policy: allow_once # uno de "allow", "allow_once" o "deny"
maximum_component_age: -1 # valor predeterminado de la interfaz de usuario de Nexus. Solo para proxies
maximum_metadata_age: 1440 # valor predeterminado de la interfaz de usuario de Nexus. Solo para proxies
negative_cache_enabled: true # valor predeterminado de la interfaz de usuario de Nexus. Solo para proxies
negative_cache_ttl: 1440 # valor predeterminado de la interfaz de usuario de Nexus. Solo para proxiestipos de repositorios de Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS y yum:
ver defaults/main.yml para estas opciones:
Los repositorios de Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS y yum están desactivados por defecto:
Vea defaults/main.yml para estas opciones:
nexus_config_pypi: false
nexus_config_docker: false
nexus_config_raw: false
nexus_config_rubygems: false
nexus_config_bower: false
nexus_config_npm: false
nexus_config_gitlfs: false
nexus_config_yum: falseTenga en cuenta que es posible que deba habilitar ciertas áreas de seguridad si desea usar otros tipos de repositorios además de Maven. Esto es false por defecto
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # requerido para acceso anónimo a dockerEl Realm de usuario remoto también se puede habilitar mediante
nexus_rut_auth_realm: truey el encabezado se puede configurar especificando
nexus_rut_auth_header: "CUSTOM_HEADER"Tareas programadas
nexus_scheduled_tasks: []
# # Ejemplo de tarea para compactar el blobstore:
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # todos los atributos de tarea se almacenan como cadenas dentro de nexus
# # Ejemplo de tarea para purgar los snapshots de maven
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# repositoryName: "*" # * para todos los repos. Cambie a un nombre de repositorio si solo desea uno específico
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Ejemplo de tarea para purgar manifiestos y imágenes de docker no utilizados
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# repositoryName: "*" # * para todos los repos. Cambie a un nombre de repositorio si solo desea uno específico
# # Ejemplo de tarea para purgar subidas de docker incompletas
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # opcional
# taskProperties:
# age: "24" para configurarlo. typeId y específicos para la tareataskProperties/booleanTaskProperties puede adivinarse o:
- de la jerarquía de tipos de Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - verificando el formulario HTML de creación de tareas en su navegador
- a través de la visualización de solicitudes AJAX en el navegador al configurar manualmente la tarea.
Las propiedades de la tarea deben declararse en el bloque yaml correcto según su tipo:
taskPropertiespara todas las propiedades de cadena (es decir, nombres de repositorio, nombres de blobstore, períodos de tiempo …).booleanTaskPropertiespara todas las propiedades booleanas (es decir, principalmente casillas de verificación en la interfaz gráfica de la tarea de creación de nexus).
Copias de seguridad
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Consulte la definición de expresiones cron en la interfaz de creación de tareas de nexus
nexus_backup_dir: '\/var\/nexus-backup'
nexus_restore_log: '{{ nexus_backup_dir }}\/nexus-restore.log'
nexus_backup_rotate: false
nexus_backup_rotate_first: false
nexus_backup_keep_rotations: 4 # Mantener 4 rotaciones de respaldo por defecto (actual + últimas 3)La copia de seguridad no se configurará hasta que active nexus_backup_configure en true.
En este caso, la tarea programada se configurará para ejecutarse en Nexus
con el intervalo especificado en nexus_backup_cron (por defecto 21:00 todos los días).
Vea [Plantilla groovy para esta tarea](templates / backup.groovy.j2) para más detalles.
Esta tarea programada no depende de otros nexus_scheduled_tasks, que usted
debe declarar en su playbook.
Si desea rotar/eliminar copias de seguridad, establezca nexus_backup_rotate: true y configure la cantidad de copias de seguridad que le gustaría conservar con nexus_backup_keep_rotations (por defecto 4).
Al usar la rotación, si desea ahorrar espacio en disco adicional durante el proceso de copia de seguridad,
puede establecer nexus_backup_rotate_first: true. Esto configurará la rotación/eliminación previa antes de la copia de seguridad. Por defecto, la rotación ocurre después de crear la copia de seguridad. Tenga en cuenta que, en este caso, las copias de seguridad antiguas
se eliminarán antes de que se realice la copia de seguridad actual.
Procedimiento de recuperación
Ejecute el playbook con el parámetro -e nexus_restore_point=
(por ejemplo, 2017-12-17-21-00-00 para el 17 de diciembre de 2017 a las 21:00)
Eliminación de nexus
Advertencia: esto eliminará completamente los datos actuales. Asegúrese de hacer una copia de seguridad previamente, si es necesario.
Utilice la variable nexus_purge, si necesita reiniciar desde cero y reinstalar la instancia de nexus eliminando todos los datos.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueCambiar la contraseña del administrador después de la primera instalación
nexus_default_admin_password: 'admin123'Esto no debe ser cambiado en su playbook. Esta variable se llena con la contraseña estándar del administrador de Nexus en la primera instalación y garantiza que podemos cambiar la contraseña del administrador a nexus_admin_password.
Si desea cambiar la contraseña del administrador después de la primera instalación, puede cambiarla temporalmente a la contraseña anterior desde la línea de comandos. Después de cambiar nexus_admin_password en su libro de juego puede ejecutar:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordCanal de Telegram sobre Nexus Sonatype:
Solo los usuarios registrados pueden participar en la encuesta. , por favor.
¿Qué repositorios de artefactos está utilizando?
Sonatype Nexus gratuito
Sonatype Nexus de pago
Artifactory gratuito
Artifactory de pago
Harbor
Pulp
Votaron 9 usuarios. 3 usuarios se abstuvieron.
Fuente: habr.com
