Sonatype Nexus – una piattaforma integrata che consente agli sviluppatori di proxy, archiviare e gestire le dipendenze Java (Maven), le immagini Docker, Python, Ruby, NPM, Bower, i pacchetti RPM, gitlfs, Apt, Go, Nuget, oltre a distribuire il proprio software.
A cosa serve Sonatype Nexus?
- Per l'archiviazione di artifact privati;
- Per la cache di artifact scaricati da internet;
Artifact supportati nella distribuzione base di Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artifact supportati dalla comunità:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Installazione di Sonatype Nexus utilizzando
Requisiti
- Leggi online sull'uso di ansible.
- Installa ansible
pip install ansiblesulla workstation dove viene eseguito il playbook. - Installa sulla workstation dove viene eseguito il playbook.
- Installa sulla workstation dove viene eseguito il playbook.
- Questo ruolo è stato testato su CentOS 7, Ubuntu Xenial (16.04) e Bionic (18.04), Debian Jessie e Stretch
jmespathla libreria deve essere installata sulla workstation dove viene eseguito il playbook. Per installarla eseguiresudo pip install -r requirements.txt- Salva il file del playbook (esempio qui sotto) come nexus.yml
- Esegui l'installazione di nexus
ansible-playbook -i host nexus.yml
Esempio di ansible-playbook per l'installazione di nexus senza LDAP con repository Maven (java), Docker, Python, Ruby, NPM, Bower, RPM e 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: 'Accesso in lettura e navigazione a tutti i reposi'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Distribuzioni per il progetto aziendale'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # mappa al gruppo LDAP
name: developers
description: Tutti i sviluppatori
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # usato come chiave per l'aggiornamento
first_name: Jenkins
last_name: CI
email: support@azienda.com
password: "s3cr3t"
roles:
- Developpers # ID ruolo qui
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. Cambiare nexus_config_yum in true per creare repository 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. Cambiare nexus_config_npm in true per creare repository 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. Cambiare nexus_config_docker in true per creare repository 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. Cambiare nexus_config_bower in true per creare repository 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. Cambiare nexus_config_pypi in true per creare repository 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. Cambiare nexus_config_rubygems in true per creare repository 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. Cambiare nexus_config_gitlfs in true per creare repository 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'] }Screenshot:


Variabili di ruolo
Role Variables
Variabili con valori di default (vedi default/main.yml):
Variabili generali
nexus_version: ''
nexus_timezone: 'UTC'Per impostazione predefinita, il ruolo installerà l'ultima versione disponibile di Nexus. Puoi fissare la versione modificando la variabile nexus_version. Consulta le versioni disponibili su .
Se cambi la versione a una più recente, il ruolo cercherà di aggiornare il tuo Nexus installato.
Se utilizzi una versione di Nexus più vecchia dell'ultima, devi assicurarti di non utilizzare funzioni che non sono disponibili nella versione installata (ad esempio, l'hosting di repository yum è disponibile per Nexus superiore a 3.8.0, git lfs repo per Nexus superiore a 3.3.0, ecc.)
fuso orario nexus è il nome del fuso orario Java, utile in combinazione con le espressioni cron indicate qui sotto per nexus_scheduled tasks.
Porta Nexus e percorso di contesto
nexus_default_port: 8081
nexus_default_context_path: '/'Porta e percorso di contesto del processo di connessione Java. nexus_default_context_path deve contenere una barra inclinata quando impostato, ad esempio: nexus_default_context_path: '/nexus/'.
Utente e gruppo OS Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'L'utente e il gruppo utilizzati per possedere i file di Nexus e avviare il servizio saranno creati dal ruolo, se non presenti.
nexus_os_user_home_dir: '/home/nexus'Consenti la modifica della directory home predefinita per l'utente nexus
Directory delle istanze di Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Directory di Nexus.
nexus_installation_dircontiene i file eseguibili installatinexus_data_dircontiene tutte le configurazioni, i repository e gli artefatti caricati. I percorsi blobstore personalizzatinexus_data_dirpossono essere configurati, vedere di seguitonexus_blobstores.nexus_tmp_dircontiene tutti i file temporanei. Il percorso predefinito per redhat è stato spostato da/tmpper superare potenziali problemi con le procedure di pulizia automatizzate. Vedi #168.
Configurazione dell'uso della memoria JVM di Nexus
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Queste sono le impostazioni predefinite per Nexus. Si prega di non modificare questi valori Se non hai letto e non comprendi cosa facciano.
Come secondo avviso, ecco un estratto dal documento sopra citato:
Non si raccomanda di aumentare la memoria heap della JVM oltre i valori consigliati nel tentativo di migliorare le prestazioni. Questo può infatti avere l'effetto opposto, causando un lavoro non necessario da parte del sistema operativo.
Password dell'amministratore
nexus_admin_password: 'changeme'Password dell'account 'admin' per la configurazione. Questo funziona solo alla prima installazione predefinita. Si prega di consultare [Modificare la password dell'amministratore dopo la prima installazione](# change-admin-password-after-first-install) se si desidera cambiarla in seguito con il ruolo.
Si sconsiglia vivamente di memorizzare la propria password in testo aperto nel playbook e di utilizzare [la crittografia ansible-vault] () (sia incorporata che in un file separato caricato, ad esempio, utilizzando include_vars)
Accesso anonimo per impostazione predefinita
nexus_anonymous_access: falseL'accesso anonimo per impostazione predefinita è disattivato. Maggiori informazioni su .
Nome host pubblico
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsNome di dominio completo e schema (https o http) tramite cui il server Nexus sarà accessibile ai suoi clienti.
Accesso API per questo ruolo
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 }}"Queste variabili controllano come il ruolo si connette all'API Nexus per fornire.
Solo per utenti esperti. È probabile che non si desideri modificare queste impostazioni predefinite.
Configurazione del reverse proxy
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: trueInstalla .
Per questo è necessario installare httpd. Nota: quando per httpd_setup_enable è impostato sutrue, nexus si collega a 127.0.0.1:8081, quindi non essere accessibile direttamente tramite la porta HTTP 8081 da un IP esterno.
Il nome host predefinito è nexus_public_hostname. Se hai bisogno di nomi diversi per qualche motivo, puoi impostare httpd_server_name con un valore diverso.
C httpd_copy_ssl_files: true (di default) i certificati menzionati devono esistere nella tua directory del playbook e saranno copiati sul server e configurati in apache.
Se desideri utilizzare certificati esistenti sul server, configura httpd_copy_ssl_files: false e fornisci le seguenti variabili:
# 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 è facoltativo e deve rimanere non configurato se non desideri impostare il file della catena
httpd_default_admin_email: "admin@example.com"Imposta l'indirizzo email dell'amministratore predefinito
Configurazione LDAP
Le connessioni LDAP e il dominio di sicurezza predefinito sono disattivati
nexus_ldap_realm: false
ldap_connections: [], ogni elemento appare nel seguente modo:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # usato come chiave per aggiornare la configurazione ldap
ldap_protocol: 'ldaps' # ldap o ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Se utilizzare o meno i certificati nello store di fiducia di nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # o semplice
ldap_auth_username: 'username' # se auth = semplice
ldap_auth_password: 'password' # se auth = semplice
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (opzionale)
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: falseEsempio di configurazione LDAP per l'autenticazione anonima (binding anonima), questa è anche la configurazione "minima":
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Configurazione LDAP più semplice'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_search_base: 'dc=mycompany,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'Esempio di configurazione LDAP per l'autenticazione semplice (utilizzando un account DSA):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configurazione LDAP con DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'semplice'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # è meglio mantenere le password in un vault 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_user_subtree: falseEsempio di configurazione LDAP per semplice autenticazione (utilizzando un account DSA) + gruppi mappati come ruoli:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Configurazione LDAP con DSA'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false
ldap_auth: 'semplice'
ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
ldap_auth_password: "{{ vault_ldap_dsa_password }}" # è meglio mantenere le password in un vault 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: falseEsempio di configurazione LDAP per autenticazione semplice (utilizzando l'account DSA) + gruppi abbinati dinamicamente come ruoli:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configurazione 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 }}" # è meglio tenere le password in un vault 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'Privilegi
nexus_privileges:
- name: all-repos-read # utilizzato come chiave per aggiornare un privilegio
# type: <uno tra application, repository-admin, repository-content-selector, repository-view, script o wildcard>
description: 'Accesso in lettura e navigazione a tutti i repos'
repository: '*'
actions: # possono essere add, browse, create, delete, edit, read o * (tutti)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameElenco per la configurazione. Consulta la documentazione e l'interfaccia grafica per verificare quali variabili devono essere impostate a seconda del tipo di privilegio.
Questi elementi sono collegati ai seguenti valori predefiniti:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRuoli (si intende all'interno di Nexus)
nexus_roles:
- id: Developpers # può mappare a un id di gruppo LDAP, usato anche come chiave per aggiornare un ruolo
name: developers
description: Tutti gli sviluppatori
privileges:
- nx-search-read
- all-repos-read
roles: [] # riferimenti ad altri nomi di ruoloElenco per la configurazione.
Utenti
nexus_local_users: []
# - username: jenkins # usato come chiave per l'aggiornamento
# state: present # valore predefinito se omesso, usa 'absent' per rimuovere l'utente
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # ID ruoloElenco di utenti/account locali (non LDAP) da creare in Nexus.
Lista di utenti/account locali (non LDAP) da creare in Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Mappatura utenti/ruoli LDAP. Stato absent rimuoverà i ruoli dall'utente esistente, se già presente.
Gli utenti LDAP non vengono rimossi. Proverà a impostare un ruolo per un utente inesistente generando un errore.
Selettori di contenuto
nexus_content_selectors:
- name: docker-login
description: Selettore per il privilegio di accesso a docker
search_expression: format=="docker" and path=~"/v2/"Per ulteriori informazioni sul selettore di contenuto, vedi. .
Per utilizzare il selettore dei contenuti, aggiungi un nuovo privilegio con type: repository-content-selector e il corrispondentecontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Accesso al registro Docker'
repository: '*'
actions:
- read
- browseBlobstore e repository
nexus_delete_default_repos: falseElimina i repository dalla configurazione predefinita iniziale di Nexus. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir è stato rilevato vuoto).
Cancellazione dei repository dalla configurazione iniziale predefinita di Nexus. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir è vuoto).
nexus_delete_default_blobstore: falseElimina il blobstore predefinito dalla configurazione predefinita iniziale di Nexus. Questo può essere fatto solo se nexus_delete_default_repos: true e tutti i repository configurati (vedi sotto) hanno un esplicito blob_store: custom. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir è stato rilevato vuoto).
La rimozione del blobstore (artefatti binari) è disabilitata per impostazione predefinita dalla configurazione iniziale. Per rimuovere il blobstore (artefatti binari) disabilita nexus_delete_default_repos: true. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir è vuoto).
nexus_blobstores: []
# esempio di elemento 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 }}"per creare. Un percorso blobstore e un repository blobstore non possono essere aggiornati dopo la creazione iniziale (qualsiasi aggiornamento qui sarà ignorato durante la riconfigurazione).
La configurazione del blobstore su S3 è fornita come comodità e non fa parte dei test automatizzati che eseguiamo su travis. Si prega di notare che il salvataggio su S3 è consigliato solo per le istanze distribuite su AWS.
Creazione . Il percorso per lo storage e il repository non possono essere aggiornati dopo la creazione iniziale (ogni aggiornamento qui verrà ignorato durante la reinstallazione).
La configurazione del blobstore su S3 è fornita per comodità. Si prega di notare che il salvataggio su S3 è consigliato solo per le istanze distribuite su 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
# esempio con login/password :
# - 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: 1440Esempio di configurazione sopra Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # uno tra "allow", "allow_once" o "deny"Maven configurazione. La configurazione della cache negativa è facoltativa e utilizzerà i valori sopra indicati se non specificata.
Configurazione Maven. La configurazione della cache negativa (-1) è facoltativa e utilizzerà per default i valori indicati sopra, se non specificata.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossConfigurazione Maven.
Tutti e tre i tipi di repository si combinano con i seguenti valori di default:
_nexus_repos_maven_defaults:
blob_store: default # Nota: non può essere aggiornato una volta che il repository è stato creato
strict_content_validation: true
version_policy: release # release, snapshot o mixed
layout_policy: strict # rigoroso o permissivo
write_policy: allow_once # uno tra "allow", "allow_once" o "deny"
maximum_component_age: -1 # valore di default della GUI di Nexus. Solo per proxy
maximum_metadata_age: 1440 # valore di default della GUI di Nexus. Solo per proxy
negative_cache_enabled: true # valore di default della GUI di Nexus. Solo per proxy
negative_cache_ttl: 1440 # valore di default della GUI di Nexus. Solo per proxyTipi di repository Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum:
vedi defaults/main.yml per queste opzioni:
I repository Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum sono disabilitati per default:
Vedi defaults/main.yml per queste opzioni:
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: falseSi prega di notare che potrebbe essere necessario abilitare alcune aree di sicurezza se si desidera utilizzare altri tipi di repository oltre a Maven. Questo è impostato su false per impostazione predefinita.
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # richiesto per l'accesso anonimo a DockerIl Remote User Realm può essere abilitato anche tramite
nexus_rut_auth_realm: truee l'intestazione può essere configurata specificando
nexus_rut_auth_header: "CUSTOM_HEADER"Attività pianificate
nexus_scheduled_tasks: []
# # Esempio di attività per compattare il blobstore:
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # tutti gli attributi dell'attività sono memorizzati come stringhe da nexus internamente
# # Esempio di attività per eliminare gli snapshot di Maven
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# repositoryName: "*" # * per tutti i repo. Cambia in un nome di repository se desideri solo uno specifico
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Esempio di attività per eliminare i manifest e le immagini docker non utilizzati
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# repositoryName: "*" # * per tutti i repo. Cambia in un nome di repository se desideri solo uno specifico
# # Esempio di attività per eliminare gli upload docker incompleti
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# age: "24" per la configurazione. typeId e specifiche per l'attivitàtaskProperties/booleanTaskProperties può essere dedotto sia da:
- dalla gerarchia dei tipi Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - controllando il modulo HTML per la creazione dell'attività nel tuo browser
- dalla visualizzazione delle richieste AJAX nel browser durante la configurazione manuale del task.
Le proprietà del task devono essere dichiarate nel corretto blocco yaml a seconda del loro tipo:
taskPropertiesper tutte le proprietà stringa (cioè nomi dei repository, nomi degli archivi, periodi di tempo …).booleanTaskPropertiesper tutte le proprietà booleane (cioè principalmente checkbox nell'interfaccia grafica del task di creazione del nexus).
Backup
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Vedi definizione delle espressioni cron nell'interfaccia del task di creazione del 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 # Mantieni 4 rotazioni di backup per impostazione predefinita (corrente + ultime 3)La copia di backup non sarà configurata fino a quando non attiverai nexus_backup_configure in true.
In questo caso, il task programmato sarà configurato per essere eseguito in Nexus
con l'intervallo specificato in nexus_backup_cron (di default alle 21:00 ogni giorno).
Consulta [il modello groovy per questo task](templates / backup.groovy.j2) per maggiori informazioni.
Questo task programmato non dipende da altri nexus_scheduled_tasks, che hai
dichiarato nel tuo playbook.
Se desideri ruotare/eliminare i backup, imposta nexus_backup_rotate: true e imposta il numero di backup che desideri mantenere con nexus_backup_keep_rotations (di default 4).
Se utilizzi la rotazione e desideri risparmiare spazio su disco durante il processo di backup,
puoi impostare nexus_backup_rotate_first: true. Questo configurerà la rotazione/pre-rimozione prima del backup. Di default, la rotazione avviene dopo la creazione del backup. Tieni presente che in questo caso i backup più vecchi
verranno eliminati prima che venga effettuato il backup corrente.
Procedura di ripristino
Esegui il playbook con il parametro -e nexus_restore_point=
(ad esempio, 2017-12-17-21-00-00 per il 17 dicembre 2017 alle 21:00
Eliminazione di nexus
Attenzione: questo eliminerà completamente i dati attuali. Assicurati di eseguire un backup precedente, se necessario
Utilizza la variabile nexus_purge, se hai bisogno di ripartire da zero e reinstallare l'istanza di nexus eliminando tutti i dati.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueModifica la password dell'amministratore dopo la prima installazione
nexus_default_admin_password: 'admin123'Questo non dovrebbe essere modificato nel tuo playbook. Questa variabile è compilata con la password standard dell'amministratore di Nexus durante la prima installazione e garantisce che possiamo modificare la password dell'amministratore su nexus_admin_password.
Se desideri cambiare la password dell'amministratore dopo la prima installazione, puoi temporaneamente modificarla con la vecchia password dal terminale. Dopo aver cambiato nexus_admin_password nella tua console di gioco puoi eseguire:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordCanale Telegram dedicato a Nexus Sonatype:
Solo gli utenti registrati possono partecipare al sondaggio. , per favore.
Quali repository di artefatti stai utilizzando?
Sonatype Nexus gratuito
Sonatype Nexus a pagamento
Artifactory gratuito
Artifactory a pagamento
Harbor
Pulp
Nove utenti hanno votato. Tre utenti si sono astenuti.
Fonte: habr.com
