ProHoster > BLOG > administrare > Instalarea și configurarea Nexus Sonatype folosind infrastructura ca abordare de cod
Instalarea și configurarea Nexus Sonatype folosind infrastructura ca abordare de cod
Sonatype Nexus este o platformă integrată prin care dezvoltatorii pot să proxy, să stocheze și să gestioneze dependențele Java (Maven), Docker, Python, Ruby, NPM, imagini Bower, pachete RPM, gitlfs, Apt, Go, Nuget și să-și distribuie securitatea software.
De ce aveți nevoie de Sonatype Nexus?
Pentru depozitarea artefactelor private;
Pentru stocarea în cache a artefactelor care sunt descărcate de pe Internet;
Artefacte acceptate în pachetul de bază Sonatype Nexus:
Variabile cu valori implicite (vezi default/main.yml):
Variabile generale
nexus_version: ''
nexus_timezone: 'UTC'
În mod implicit, rolul va instala cea mai recentă versiune disponibilă de Nexus. Puteți remedia versiunea schimbând variabila nexus_version. Vezi versiunile disponibile la https://www.sonatype.com/download-oss-sonatype.
Dacă treceți la o versiune mai nouă, rolul va încerca să vă actualizeze instalarea Nexus.
Dacă utilizați o versiune mai veche de Nexus decât cea mai recentă, ar trebui să vă asigurați că nu utilizați funcții care nu sunt disponibile în versiunea instalată (de exemplu, găzduirea depozitelor yum este disponibilă pentru nexus mai mare de 3.8.0, git lfs repo pentru nexus mai mare de 3.3.0 etc.)
nexus timezone este numele fusului orar Java, care poate fi util în combinație cu următoarele expresii cron pentru sarcinile nexus_scheduled.
Portul și calea contextului procesului de conectare Java. nexus_default_context_path trebuie să conțină o bară oblică înainte când este setat, de exemplu: nexus_default_context_path: '/nexus/'.
Utilizator și grup Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Utilizatorul și grupul folosit pentru a deține fișiere Nexus și a rula serviciul vor fi create de rol dacă lipsește unul.
nexus_os_user_home_dir: '/home/nexus'
Permite modificarea directorului de pornire implicit pentru utilizatorul nexus
nexus_installation_dir conține fișiere executabile instalate
nexus_data_dir conține toate configurațiile, depozitele și artefactele descărcate. Căi personalizate pentru depozitul de blobs nexus_data_dir poate fi personalizat, vezi mai jos nexus_blobstores.
nexus_tmp_dir conține toate fișierele temporare. Calea implicită pentru redhat a fost mutată din /tmp pentru a depăși potențialele probleme cu procedurile automate de curățare. Vezi #168.
Ca un al doilea avertisment, iată un extras din documentul de mai sus:
Nu este recomandat să creșteți memoria heap JVM dincolo de valorile recomandate în încercarea de a îmbunătăți performanța. Acest lucru poate avea de fapt efectul opus, rezultând în muncă inutilă pentru sistemul de operare.
Parola de administrator
nexus_admin_password: 'changeme'
Parola contului „admin” pentru configurare. Acest lucru funcționează numai la prima instalare implicită. Consultați [Schimbarea parolei de administrator după prima instalare](# change-admin-password-after-first-install) dacă doriți să o schimbați ulterior folosind un rol.
Se recomandă insistent să nu stocați parola în text clar în manualul de joc, ci să utilizați [ansible-vault encryption] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (fie inline sau într-un fișier separat încărcat cu, de exemplu, include_vars)
Acces anonim în mod implicit
nexus_anonymous_access: false
Accesul anonim este dezactivat implicit. Citiți mai multe despre acces anonim.
Aceste variabile controlează modul în care rolul se conectează la API-ul Nexus pentru aprovizionare. Numai pentru utilizatori avansați. Probabil că nu doriți să modificați aceste setări implicite
Set Proxy invers SSL.
Pentru a face acest lucru, trebuie să instalați httpd. Notă: când pentru httpd_setup_enable valoarea stabilitătrue, contacte nexus 127.0.0.1:8081, astfel nu fiind direct accesibil prin portul HTTP 8081 de la adresa IP externă.
Numele de gazdă implicit folosit este nexus_public_hostname. Dacă aveți nevoie de nume diferite dintr-un anumit motiv, puteți seta httpd_server_name cu alt sens.
С httpd_copy_ssl_files: true (implicit) certificatele de mai sus ar trebui să existe în directorul tău playbook și vor fi copiate pe server și configurate în apache.
Dacă doriți să utilizați certificate existente pe server, instalați httpd_copy_ssl_files: false și furnizați următoarele variabile:
# 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 este opțional și ar trebui lăsat nesetat dacă nu doriți să personalizați fișierul în lanț
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
listă privilegii pentru setari. Consultați documentația și GUI pentru a verifica ce variabile trebuie setate în funcție de tipul de privilegiu.
Aceste elemente sunt combinate cu următoarele valori implicite:
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 utilizatori/conturi locale (non-LDAP) de creat în nexus.
Lista de utilizatori/conturi locali (non-LDAP) de creat în Nexus.
Maparea Ldap a utilizatorilor/rolurilor. Stat absent va elimina roluri de la un utilizator existent, dacă unul există deja.
Utilizatorii Ldap nu sunt șterși. Încercarea de a seta un rol pentru un utilizator inexistent va avea ca rezultat o eroare.
Selectori de conținut
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Pentru mai multe informații despre selectorul de conținut, consultați Documentație.
Pentru a utiliza selectorul de conținut, adăugați un nou privilegiu cu type: repository-content-selector și relevantecontentSelector
Ștergeți arhivele din configurația implicită inițială a instalării nexus. Acest pas este executat numai la prima instalare (când nexus_data_dir a fost detectat gol).
Eliminarea depozitelor din configurația implicită implicită pentru Nexus. Acest pas este efectuat numai în timpul primei instalări (când nexus_data_dir gol).
nexus_delete_default_blobstore: false
Ștergeți blobstore-ul implicit din configurația implicită inițială de instalare nexus. Acest lucru se poate face numai dacă nexus_delete_default_repos: true și toate depozitele configurate (vezi mai jos) au un explicit blob_store: custom. Acest pas este executat numai la prima instalare (când nexus_data_dir a fost detectat gol).
Eliminarea stocării blob (artefacte binare) este dezactivată implicit din configurația inițială. Pentru a elimina stocarea blob (artefacte binare), dezactivați nexus_delete_default_repos: true. Acest pas este efectuat numai în timpul primei instalări (când nexus_data_dir gol).
Blobstores a crea. O cale de blobstore și un depozit de blobstore nu pot fi actualizate după crearea inițială (orice actualizare aici va fi ignorată la reprovizionare).
Configurarea blobstore pe S3 este oferită ca o comoditate și nu face parte din testele automate pe care le rulăm pe travis. Rețineți că stocarea pe S3 este recomandată numai pentru instanțe implementate pe AWS.
Creare Blobstores. Calea de stocare și depozitul de stocare nu pot fi actualizate după crearea inițială (orice actualizare de aici va fi ignorată atunci când este instalată din nou).
Configurarea stocării blob pe S3 este oferită ca o comoditate. Rețineți că stocarea S3 este recomandată numai pentru instanțe implementate pe AWS.
Mai sus este un exemplu de configurație server proxy Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven depozite găzduite configurație. Configurația cache negativă este opțională și va fi implicit la valorile de mai sus dacă este omisă.
configurație depozite găzduite Maven. Configurația cache negativă (-1) este opțională și va fi implicit la valorile de mai sus dacă nu este specificată.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Toate cele trei tipuri de depozite sunt combinate cu următoarele valori implicite:
_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
Tipuri de depozite Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS și yum:
vedea defaults/main.yml pentru aceste optiuni:
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS și yum sunt dezactivate implicit:
vedea defaults/main.yml pentru aceste optiuni:
Rețineți că poate fi necesar să activați anumite domenii de securitate dacă doriți să utilizați alte tipuri de depozite, altele decât Maven. Acest lucru este fals în mod implicit
Remote User Realm poate fi, de asemenea, activat folosind
nexus_rut_auth_realm: true
iar titlul poate fi personalizat prin definire
nexus_rut_auth_header: "CUSTOM_HEADER"
Sarcini programate
nexus_scheduled_tasks: []
# # Example task to compact blobstore :
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: [email protected] # optional
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # all task attributes are stored as strings by nexus internally
# # Example task to purge maven snapshots
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: [email protected] # optional
# taskProperties:
# repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Example task to purge unused docker manifest and images
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: [email protected] # optional
# taskProperties:
# repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one
# # Example task to purge incomplete docker uploads
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: [email protected] # optional
# taskProperties:
# age: "24"
Sarcini programate pentru setari. typeId și specifică sarciniitaskProperties/booleanTaskProperties poți ghici fie:
din ierarhia de tip Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
verificarea formularului HTML de creare a sarcinilor din browser
de la vizualizarea solicitărilor AJAX în browser atunci când configurați manual o sarcină.
Proprietățile sarcinii trebuie declarate în blocul yaml corect, în funcție de tipul lor:
taskProperties pentru toate proprietățile șirului de caractere (adică nume de depozit, nume de depozit, perioade de timp...).
booleanTaskProperties pentru toate proprietățile logice (adică, în principal, casete de selectare din interfața grafică a sarcinii de creare a conexiunii).
Backup-ul nu va fi configurat până când nu comutați nexus_backup_configure в true.
În acest caz, sarcina de script programată va fi configurată să ruleze pe Nexus
la intervalul specificat în nexus_backup_cron (implicit 21:00 în fiecare zi).
Consultați [șablon groovy pentru această sarcină](templates/backup.groovy.j2) pentru detalii.
Această sarcină programată este independentă de celelalte nexus_scheduled_taskscare tu
anunță în manualul tău de joc.
Dacă doriți să rotiți/ștergeți copiile de rezervă, instalați nexus_backup_rotate: true și configurați numărul de copii de siguranță pe care doriți să le salvați folosind nexus_backup_keep_rotations (implicit 4).
Când utilizați rotația, dacă doriți să economisiți spațiu suplimentar pe disc în timpul procesului de backup,
Puteți instala nexus_backup_rotate_first: true. Aceasta va configura prerotația/ștergerea înainte de backup. În mod implicit, rotația are loc după ce este creată o copie de rezervă. Vă rugăm să rețineți că în acest caz vechile copii de rezervă
va fi ștearsă înainte ca backupul curent să fie făcut.
Procedura de recuperare
Rulați playbook cu parametru -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(de exemplu, 2017-12-17-21-00-00 pentru 17 decembrie 2017 la ora 21:00
Îndepărtarea legăturii
Avertisment: Acest lucru va șterge complet datele dvs. actuale. Asigurați-vă că faceți o copie de rezervă mai devreme, dacă este necesar
Utilizați o variabilă nexus_purgedacă trebuie să reporniți de la zero și să reinstalați instanța nexus cu toate datele eliminate.
Schimbați parola de administrator după prima instalare
nexus_default_admin_password: 'admin123'
Acest lucru nu trebuie schimbat în manualul dvs. de joc. Această variabilă este completată cu parola implicită de administrator Nexus la prima instalare și ne asigură că putem schimba parola de administrator în nexus_admin_password.
Dacă doriți să schimbați parola de administrator după prima instalare, o puteți schimba temporar la vechea parolă din linia de comandă. După schimbare nexus_admin_password în manualul tău de joc poți rula: