ProHoster > Blog > Amministrazione > Installazione è cunfigurà Nexus Sonatype utilizendu l'infrastruttura cum'è avvicinamentu di codice
Installazione è cunfigurà Nexus Sonatype utilizendu l'infrastruttura cum'è avvicinamentu di codice
Sonatype Nexus hè una piattaforma integrata per via di quale i sviluppatori ponu proxy, almacenà è gestisce e dipendenze di Java (Maven), Docker, Python, Ruby, NPM, Bower images, pacchetti RPM, gitlfs, Apt, Go, Nuget, è distribuisce a so sicurezza di software.
Perchè avete bisognu di Sonatype Nexus?
Per almacenà artefatti privati;
Per caching artefatti chì sò scaricati da Internet;
Artifatti supportati in u pacchettu di basa Sonatype Nexus:
Installa ansible pip install ansible nantu à a stazione di travagliu induve u playbook corre.
Installa geerlingguy.java nantu à a stazione di travagliu induve u playbook corre.
Installa geerlingguy.apache nantu à a stazione di travagliu induve u playbook corre.
Stu rolu hè statu pruvatu in CentOS 7, Ubuntu Xenial (16.04) è Bionic (18.04), Debian Jessie è Stretch.
jmespath A biblioteca deve esse installata nantu à a stazione di travagliu induve u playbook hè in esecuzione. Per installà: sudo pip install -r requirements.txt
Salvà u schedariu di playbook (esempiu sottu) à u schedariu nexus.yml
Eseguite l'installazione di nexus ansible-playbook -i host nexus.yml
Esempiu di ansible-playbook per installà nexus senza LDAP cù Maven (java), Docker, Python, Ruby, NPM, Bower, RPM è repository gitlfs.
Per automaticamente, u rolu vi stallà l'ultima versione dispunibule di Nexus. Pudete riparà a versione cambiendu a variabile nexus_version. Vede e versioni dispunibili à https://www.sonatype.com/download-oss-sonatype.
Se cambiate à una versione più nova, u rolu pruverà à aghjurnà a vostra installazione Nexus.
Sè vo aduprate una versione più vechja di Nexus cà l'ultime, duvete assicurà chì ùn site micca usu di funzioni chì ùn sò micca dispunibili in a versione installata (per esempiu, l'ospiti di repositori yum sò dispunibili per nexus più grande di 3.8.0, git lfs repo). per nexus più grande di 3.3.0 ecc.)
nexus timezone hè u nome di u fusu orariu Java, chì pò esse utile in cumminazione cù e seguenti espressioni cron per i travaglii nexus_scheduled.
U portu è u percorsu di u cuntestu di u prucessu di cunnessione Java. nexus_default_context_path deve cuntene una barra in avanti quandu hè stabilitu, per esempiu: nexus_default_context_path: '/nexus/'.
Nexus OS User è Gruppu
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
L'utilizatore è u gruppu utilizatu per pussede i fugliali Nexus è eseguisce u serviziu serà creatu da u rolu s'ellu manca.
nexus_os_user_home_dir: '/home/nexus'
Permette di cambià u cartulare di casa predeterminatu per l'utilizatore nexus
nexus_installation_dir cuntene i fugliali eseguibili installati
nexus_data_dir cuntene tutte e cunfigurazioni, repository è artefatti scaricati. Percorsi di blobstore persunalizati nexus_data_dir pò esse persunalizatu, vede quì sottu nexus_blobstores.
nexus_tmp_dir cuntene tutti i schedarii tempuranee. U percorsu predeterminatu per redhat hè statu spustatu da /tmp per superà i prublemi potenziali cù i prucessi di pulizia automatica. Vede # 168.
Cum'è un secondu avvertimentu, quì hè un estrattu di u documentu sopra:
Ùn hè cunsigliatu per aumentà a memoria di u heap JVM oltre i valori cunsigliati in un tentativu di migliurà u rendiment. Questu pò esse veramente l'effettu cuntrariu, risultatu in un travagliu innecessariu per u sistema operatore.
Password amministratore
nexus_admin_password: 'changeme'
A password di u contu "admin" per a cunfigurazione. Questu funziona solu nantu à a prima installazione predeterminata. Per piacè vede [Cambia a password di l'amministratore dopu a prima installazione] (# change-admin-password-after-first-install) se vulete cambià dopu utilizendu un rolu.
Hè ricumandemu fermamente micca di almacenà a vostra password in testu chjaru in u playbook, ma di utilizà [encryption ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (o inline o in un schedariu separatu caricatu cù per esempiu include_vars)
Accessu anonimu per difettu
nexus_anonymous_access: false
L'accessu anonimu hè disattivatu per difettu. Leghjite più nantu accessu anonimu.
Queste variàbili cuntrolanu cumu u rolu si cunnetta à l'API Nexus per a pruvista. Solu per utilizatori avanzati. Probabilmente ùn vulete micca cambià sti paràmetri predeterminati
Installa Proxy inversu SSL.
Per fà questu, avete bisognu di stallà httpd. Nota: quandu per httpd_setup_enable valore stabilitutrue, Nexus contatti 127.0.0.1:8081, cusì ùn essendu direttamente accessibile via HTTP portu 8081 da l'indirizzu IP esternu.
U nome d'ospitu predeterminatu utilizatu hè nexus_public_hostname. Sè avete bisognu di nomi diffirenti per qualchì mutivu, pudete stabilisce httpd_server_name cù un significatu diversu.
С httpd_copy_ssl_files: true (per difettu) i certificati sopra deve esse in u vostru repertoriu di playbook è seranu copiati à u servitore è cunfigurati in apache.
Se vulete usà certificati esistenti nantu à u servitore, installate httpd_copy_ssl_files: false è furnisce e 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 hè facultativu è deve esse lasciatu unset se ùn vulete micca persunalizà u schedariu di a 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
a lista privileggi per i paràmetri. Fighjate à a documentazione è a GUI per verificà quale variàbili deve esse stabilitu secondu u tipu di privilegiu.
Questi elementi sò cumminati cù i seguenti valori predeterminati:
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 d'utilizatori / cunti lucali (non-LDAP) per creà in nexus.
Lista di utilizatori / cunti lucali (non-LDAP) per creà in Nexus.
Mappatura Ldap di utilizatori / roli. Statu absent sguasserà roli da un utilizatore esistente se ne esiste digià.
L'utilizatori di Ldap ùn sò micca sguassati. Pruvate di stabilisce un rolu per un utilizatore inesistente darà un errore.
Selettori di cuntenutu
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Per più infurmazione nantu à u selettore di cuntenutu, vede Documentazione.
Per utilizà u selettore di cuntenutu, aghjunghje un novu privilegiu cù type: repository-content-selector è pertinentecontentSelector
Eliminate i repositori da a cunfigurazione iniziale predeterminata di u nexus installà. Stu passu hè eseguitu solu nantu à a prima installazione (quandu nexus_data_dir hè statu rilevatu viotu).
Eliminazione di i repositori da a cunfigurazione predeterminata per Nexus. Stu passu hè realizatu solu durante a prima stallazione (quandu nexus_data_dir viotu).
nexus_delete_default_blobstore: false
Eliminate u blobstore predeterminatu da a cunfigurazione predeterminata iniziale di l'installazione di nexus. Questu pò esse fattu solu se nexus_delete_default_repos: true è tutti i repositori cunfigurati (vede sottu) anu un esplicitu blob_store: custom. Stu passu hè eseguitu solu nantu à a prima installazione (quandu nexus_data_dir hè statu rilevatu viotu).
L'eliminazione di l'almacenamiento blob (artefatti binari) hè disattivata per difettu da a cunfigurazione iniziale. Per sguassà l'almacenamiento blob (artefatti binari), spegne nexus_delete_default_repos: true. Stu passu hè realizatu solu durante a prima stallazione (quandu nexus_data_dir viotu).
Blobstores per creà. Un percorsu blobstore è un repository blobstore ùn pò micca esse aghjurnatu dopu a creazione iniziale (qualsiasi aghjurnamentu quì serà ignoratu in u riprovisioning).
A cunfigurazione di blobstore in S3 hè furnita cum'è comodità è ùn hè micca parte di e teste automatizate chì eseguimu in travis. Per piacè nutate chì u almacenamentu in S3 hè cunsigliatu solu per istanze implementate in AWS.
Creazione Blobstores. U percorsu di almacenamiento è u repositoriu di almacenamentu ùn ponu esse aghjurnati dopu a creazione iniziale (qualsiasi aghjurnamentu quì serà ignoratu quandu hè stallatu novu).
L'installazione di l'almacenamiento di blob in S3 hè furnita cum'è comodità. Per piacè nutate chì l'archiviazione S3 hè cunsigliatu solu per istanze implementate in AWS.
Sopra hè un esempiu di cunfigurazione servitore proxy Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven repositori ospitati cunfigurazione. A cunfigurazione di a cache negativa hè opzionale è serà predeterminata à i valori sopra se omessi.
Cunfigurazione repositori ospitati Maven. A cunfigurazione di cache negativa (-1) hè facultativa è serà predeterminata à i valori sopra se ùn hè micca specificatu.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Tutti i trè tippi di repository sò cumminati cù i seguenti valori predeterminati:
_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
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS è tipi di repository yum:
vidi defaults/main.yml per queste opzioni:
I repositori Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS è yum sò disattivati per difettu:
Vede defaults/main.yml per queste opzioni:
Per piacè nutate chì pudete avè bisognu di attivà certi spazii di sicurezza se vulete usà altri tipi di repositori altru da maven. Questu hè falsu per difettu
A copia di salvezza ùn serà micca cunfigurata finu à chì cambiate nexus_backup_configure в true.
In questu casu, u compitu di script pianificatu serà cunfiguratu per eseguisce in Nexus
à l'intervalle spécifié dans nexus_backup_cron (default 21:00 ogni ghjornu).
Vede [template groovy per questa attività] (templates/backup.groovy.j2) per i dettagli.
Stu compitu pianificatu hè indipendente di l'altri nexus_scheduled_taskschì tù
annunzià in u vostru playbook.
Sè vo vulete rotà / sguassà backups, stallà nexus_backup_rotate: true è cunfigurà u numeru di backups chì vulete salvà usendu nexus_backup_keep_rotations (predefinitu 4).
Quandu aduprate a rotazione, se vulete salvà spaziu di discu supplementu durante u prucessu di salvezza,
Pudete installà nexus_backup_rotate_first: true. Questu hà da cunfigurà pre-rotazione / eliminazione prima di salvezza. Per automaticamente, a rotazione si faci dopu chì una copia di salvezza hè creata. Per piacè nutate chì in questu casu i vechji backups
serà sguassatu prima chì a copia di salvezza attuale hè fatta.
Prucedura di ricuperazione
Eseguite playbook cù parametru -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(per esempiu, 2017-12-17-21-00-00 per u 17 dicembre 2017 à 21:00
Eliminazione di u nexus
Attenzione: Questu hà da sguassà cumplettamente i vostri dati attuali. Assicuratevi di fà una copia di salvezza prima se ne necessariu
Aduprà una variabile nexus_purges'ellu ci vole à ripigliate da zero è reinstallà l'istanza nexus cù tutti i dati eliminati.
Cambia a password di l'amministratore dopu a prima installazione
nexus_default_admin_password: 'admin123'
Questu ùn deve esse cambiatu in u vostru playbook. Questa variabile hè populata cù a password di amministratore Nexus predeterminata quandu hè stallata prima è assicura chì pudemu cambià a password di amministratore in nexus_admin_password.
Se vulete cambià a password di l'amministratore dopu a prima installazione, pudete cambià temporaneamente à a vecchia password da a linea di cummanda. Dopu à cambià nexus_admin_password in u vostru playbook pudete eseguisce: