ProHoster > blog > amministrazione > Installazione e configurazione di Nexus Sonatype utilizzando l'approccio Infrastructure as Code
Installazione e configurazione di Nexus Sonatype utilizzando l'approccio Infrastructure as Code
Sonatype Nexus è una piattaforma integrata attraverso la quale gli sviluppatori possono proxy, archiviare e gestire dipendenze Java (Maven), Docker, Python, Ruby, NPM, immagini Bower, pacchetti RPM, gitlfs, Apt, Go, Nuget e distribuire la sicurezza del proprio software.
Perché hai bisogno di Sonatype Nexus?
Per archiviare artefatti privati;
Per memorizzare nella cache gli artefatti scaricati da Internet;
Artefatti supportati nel pacchetto base Sonatype Nexus:
Variabili con valori predefiniti (vedi default/main.yml):
Variabili generali
nexus_version: ''
nexus_timezone: 'UTC'
Per impostazione predefinita, il ruolo installerà l'ultima versione disponibile di Nexus. È possibile correggere la versione modificando la variabile nexus_version. Vedi le versioni disponibili su https://www.sonatype.com/download-oss-sonatype.
Se passi a una versione più recente, il ruolo tenterà di aggiornare l'installazione del Nexus.
Se stai utilizzando una versione di Nexus precedente alla più recente, dovresti assicurarti di non utilizzare funzionalità che non sono disponibili nella versione installata (ad esempio, l'hosting di repository yum è disponibile per nexus successivo alla 3.8.0, git lfs repo per nexus superiori a 3.3.0 ecc.)
nexus timezone è il nome del fuso orario Java, che può essere utile in combinazione con le seguenti espressioni cron per le attività nexus_scheduled.
La porta e il percorso di contesto del processo di connessione Java. nexus_default_context_path deve contenere una barra quando è impostato, ad esempio: nexus_default_context_path: '/nexus/'.
Utente e gruppo del sistema operativo Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
L'utente e il gruppo utilizzati per possedere i file Nexus ed eseguire il servizio verranno creati dal ruolo, se ne manca uno.
nexus_os_user_home_dir: '/home/nexus'
Consenti la modifica della directory home predefinita per l'utente Nexus
nexus_data_dir contiene tutta la configurazione, i repository e gli artefatti scaricati. Percorsi dell'archivio BLOB personalizzati nexus_data_dir può essere personalizzato, vedi sotto nexus_blobstores.
nexus_tmp_dir contiene tutti i file temporanei. Il percorso predefinito per redhat è stato spostato da /tmp per superare potenziali problemi con le procedure di pulizia automatica. Vedi #168.
Configurazione dell'utilizzo della memoria JVM Nexus
Come secondo avvertimento, ecco un estratto dal documento di cui sopra:
Non è consigliabile aumentare la memoria heap della JVM oltre i valori consigliati nel tentativo di migliorare le prestazioni. Ciò potrebbe effettivamente avere l'effetto opposto, risultando in un lavoro non necessario per il sistema operativo.
Password amministratore
nexus_admin_password: 'changeme'
La password dell'account "admin" per la configurazione. Funziona solo sulla prima installazione predefinita. Consulta [Cambia password amministratore dopo la prima installazione](# change-admin-password-after-first-install) se desideri modificarla in seguito utilizzando un ruolo.
Si consiglia vivamente di non memorizzare la password in chiaro nel playbook, ma di utilizzare [crittografia ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (in linea o in un file separato caricato con ad esempio include_vars)
Accesso anonimo per impostazione predefinita
nexus_anonymous_access: false
L'accesso anonimo è disabilitato per impostazione predefinita. Leggi di più su accesso anonimo.
Queste variabili controllano il modo in cui il ruolo si connette all'API Nexus per il provisioning. Solo per utenti esperti. Probabilmente non vorrai modificare queste impostazioni predefinite
Set Proxy inverso SSL.
Per fare ciò è necessario installare httpd. Nota: quando per httpd_setup_enable valore impostatotrue, il nesso contatta 127.0.0.1:8081, quindi no essendo direttamente accessibile tramite la porta HTTP 8081 dall'indirizzo IP esterno.
Il nome host predefinito utilizzato è nexus_public_hostname. Se per qualche motivo hai bisogno di nomi diversi, puoi impostare httpd_server_name con un significato diverso.
С httpd_copy_ssl_files: true (per impostazione predefinita) i certificati di cui sopra dovrebbero esistere nella directory del playbook e verranno copiati sul server e configurati in Apache.
Se desideri utilizzare i certificati esistenti sul server, installa httpd_copy_ssl_files: false e fornire 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 essere lasciato non impostato se non si desidera personalizzare il file di catena
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
Elenco privilegi per le impostazioni. Consulta la documentazione e la GUI per verificare quali variabili devono essere impostate in base al tipo di privilegio.
Questi elementi sono combinati con i seguenti valori predefiniti:
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
Elenco di utenti/account locali (non LDAP) da creare in Nexus.
Elenco di utenti/account locali (non LDAP) da creare in Nexus.
Mappatura Ldap di utenti/ruoli. Stato absent rimuoverà i ruoli da un utente esistente se ne esiste già uno.
Gli utenti Ldap non vengono eliminati. Il tentativo di impostare un ruolo per un utente inesistente genererà un errore.
Selettori di contenuti
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Per ulteriori informazioni sul selettore di contenuto, vedere Documentazione.
Per utilizzare il selettore di contenuti, aggiungi un nuovo privilegio con type: repository-content-selector e pertinentecontentSelector
Elimina i repository dalla configurazione predefinita iniziale di Nexus Install. Questo passaggio viene eseguito solo alla prima installazione (quando nexus_data_dir è stato rilevato vuoto).
Rimozione dei repository dalla configurazione predefinita predefinita per Nexus. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir vuoto).
nexus_delete_default_blobstore: false
Eliminare l'archivio BLOB predefinito dalla configurazione predefinita iniziale di Nexus Install. Questo può essere fatto solo se nexus_delete_default_repos: true e tutti i repository configurati (vedi sotto) hanno un file esplicitamente blob_store: custom. Questo passaggio viene eseguito solo alla prima installazione (quando nexus_data_dir è stato rilevato vuoto).
La rimozione dell'archiviazione BLOB (artefatti binari) è disabilitata per impostazione predefinita dalla configurazione iniziale. Per rimuovere l'archiviazione BLOB (artefatti binari), disattivare nexus_delete_default_repos: true. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir vuoto).
Blobstore creare. Un percorso dell'archivio BLOB e un archivio BLOB del repository non possono essere aggiornati dopo la creazione iniziale (qualsiasi aggiornamento qui verrà ignorato durante il nuovo provisioning).
La configurazione di blobstore su S3 viene fornita per comodità e non fa parte dei test automatizzati che eseguiamo su travis. Tieni presente che l'archiviazione su S3 è consigliata solo per le istanze distribuite su AWS.
Creazione Blobstore. Il percorso di archiviazione e il repository di archiviazione non possono essere aggiornati dopo la creazione iniziale (qualsiasi aggiornamento qui verrà ignorato quando installato nuovamente).
La configurazione dell'archiviazione BLOB su S3 viene fornita per comodità. Tieni presente che lo storage S3 è consigliato solo per le istanze distribuite su AWS.
Sopra è riportato un esempio di configurazione server proxy Esperto di.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven repository ospitati configurazione. La configurazione della cache negativa è facoltativa e, se omessa, utilizzerà per impostazione predefinita i valori sopra indicati.
Configurazione repository ospitati Esperto di. La configurazione della cache negativa (-1) è facoltativa e, se non specificata, utilizzerà per impostazione predefinita i valori sopra indicati.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Tutti e tre i tipi di repository sono combinati con i seguenti valori predefiniti:
_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
Tipi di repository Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum:
vedere defaults/main.yml per queste opzioni:
I repository Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum sono disabilitati per impostazione predefinita:
vedere defaults/main.yml per queste opzioni:
Tieni presente che potrebbe essere necessario abilitare determinati ambiti di sicurezza se desideri utilizzare altri tipi di repository diversi da Maven. Questo è falso per impostazione predefinita
Il backup non verrà configurato fino al passaggio nexus_backup_configure в true.
In questo caso, l'attività di script pianificata verrà configurata per essere eseguita su Nexus
all'intervallo specificato in nexus_backup_cron (predefinito 21:00 tutti i giorni).
Vedi [modello groovy per questa attività](templates/backup.groovy.j2) per i dettagli.
Questa attività pianificata è indipendente dalle altre nexus_scheduled_tasksche tu
annuncialo nel tuo playbook.
Se desideri ruotare/eliminare i backup, installa nexus_backup_rotate: true e configura il numero di backup che desideri salvare utilizzando nexus_backup_keep_rotations (predefinito 4).
Quando si utilizza la rotazione, se si desidera risparmiare ulteriore spazio su disco durante il processo di backup,
Puoi installare nexus_backup_rotate_first: true. Ciò configurerà la pre-rotazione/eliminazione prima del backup. Per impostazione predefinita, la rotazione avviene dopo la creazione di un backup. Tieni presente che in questo caso vengono utilizzati i vecchi backup
verranno eliminati prima che venga effettuato il backup corrente.
Procedura di ripristino
Esegui il playbook con i parametri -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(ad esempio, 2017-12-17-21-00-00 per il 17 dicembre 2017 alle 21:00
Rimozione del nesso
Attenzione: questa operazione cancellerà completamente i tuoi dati attuali. Assicurati di eseguire un backup prima, se necessario
Utilizza una variabile nexus_purgese è necessario riavviare da zero e reinstallare l'istanza Nexus con tutti i dati rimossi.
Cambia la password dell'amministratore dopo la prima installazione
nexus_default_admin_password: 'admin123'
Questo non dovrebbe essere modificato nel tuo playbook. Questa variabile viene popolata con la password amministratore Nexus predefinita alla prima installazione e garantisce che possiamo modificare la password amministratore in nexus_admin_password.
Se desideri modificare la password dell'amministratore dopo la prima installazione, puoi modificarla temporaneamente con la vecchia password dalla riga di comando. Dopo il cambiamento nexus_admin_password nel tuo playbook puoi eseguire: