Sonatype Nexus – o platformă integrată prin care dezvoltatorii pot proxy, stoca și gestiona dependențele Java (Maven), imaginile Docker, Python, Ruby, NPM, Bower, pachetele RPM, gitlfs, Apt, Go, Nuget și pot distribui software-ul lor.
De ce este necesar Sonatype Nexus?
- Pentru stocarea artefactelor private;
- Pentru caching-ul artefactelor care sunt descărcate de pe internet;
Artefacte susținute în livrarea de bază a Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefacte susținute de comunitate:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Instalarea Sonatype Nexus folosind
Cerințe
- Citiți despre utilizarea ansible pe internet.
- Instalați ansible
pip install ansiblepe stația de lucru unde se execută playbook-ul. - Instalați pe stația de lucru unde se execută playbook-ul.
- Instalați pe stația de lucru unde se execută playbook-ul.
- Această rolă a fost testată pe CentOS 7, Ubuntu Xenial (16.04) și Bionic (18.04), Debian Jessie și Stretch
jmespathbiblioteca trebuie să fie instalată pe stația de lucru unde se execută playbook-ul. Pentru instalare, executațisudo pip install -r requirements.txt- Salvați fișierul playbook (exemplul de mai jos) în fișierul nexus.yml
- Rulați instalarea nexus
ansible-playbook -i host nexus.yml
Exemplu de ansible-playbook pentru instalarea nexus fără LDAP cu repozitorii Maven (java), Docker, Python, Ruby, NPM, Bower, RPM și 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: 'Acces și navigare la toate repozitoarele'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Deploiement pentru proiectul companiei'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # mapează la grupul LDAP
name: developers
description: Toți dezvoltatorii
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # folosit ca cheia de actualizare
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID-ul rolului aici
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. Schimbați nexus_config_yum în true pentru a crea un 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. Schimbați nexus_config_npm în true pentru a crea un 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. Schimbați nexus_config_docker în true pentru a crea un 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. Schimbați nexus_config_bower în true pentru a crea un 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. Schimbați nexus_config_pypi în true pentru a crea un 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. Schimbați nexus_config_rubygems în true pentru a crea un 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. Schimbați nexus_config_gitlfs în true pentru a crea un repository gitlfs
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu only
# - { role: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
# RedHat/CentOS only
- { 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'] }Capturi de ecran:


Variabilele rolurilor
Variabilele rolurilor
Variabile cu valori implicite (vezi default/main.yml):
Variabile generale
nexus_version: ''
nexus_timezone: 'UTC'Implicit, rolul va instala cea mai recentă versiune disponibilă a Nexus. Puteți fixa versiunea modificând variabila nexus_version. Consultați versiunile disponibile la .
Dacă schimbați versiunea la una mai nouă, rolul va încerca să actualizeze Nexus-ul instalat.
Dacă utilizați o versiune mai veche de Nexus decât cea mai recentă, trebuie să vă asigurați că nu folosiți funcții care nu sunt disponibile în versiunea instalată (de exemplu, găzduirea repositoarelor yum este disponibilă pentru Nexus mai mare decât 3.8.0, git lfs repo pentru Nexus mai mare decât 3.3.0 etc.)
timezone nexus — este numele fusului orar Java, care poate fi util în combinație cu expresiile cron de mai jos pentru sarcinile programate nexus.
Portul Nexus și calea de context
nexus_default_port: 8081
nexus_default_context_path: ' / 'Portul și calea de context a conexiunii procesului Java. nexus_default_context_path trebuie să conțină o bară oblică atunci când este setat, de exemplu: nexus_default_context_path: '/nexus/'.
Utilizatorul și grupul OS Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Utilizatorul și grupul care sunt folosiți pentru a deține fișierele Nexus și a rula serviciul vor fi creați de rol, dacă nu există.
nexus_os_user_home_dir: '/home/nexus'Permiteți modificarea căii de bază pentru utilizatorul nexus
Directoarele instanțelor Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Directoarele Nexus.
nexus_installation_dirconține fișiere executabile instalatenexus_data_dirconține toate configurațiile, repositoarele și artefactele descărcate. Cărțile blob personalizatenexus_data_dirpot fi configurate, consultați mai josnexus_blobstores.nexus_tmp_dirconține toate fișierele temporare. Calea implicită pentru redhat a fost mutată din/tmppentru a evita problemele potențiale cu procedurile automate de curățare. Consultați #168.
Configurarea utilizării memoriei Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Acestea sunt valorile implicite pentru Nexus. Vă rugăm să nu modificați aceste valori Dacă nu ați citit și nu înțelegeți ce fac.
Ca al doilea avertisment, iată un extras din documentul menționat mai sus:
Nu se recomandă 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, provocând o muncă inutilă a sistemului de operare.
Parola administratorului
nexus_admin_password: 'changeme'Parola contului «admin» pentru configurare. Aceasta funcționează doar la prima instalare în mod implicit. Vă rugăm să consultați [Schimbați parola administratorului după prima instalare](# change-admin-password-after-first-install) dacă doriți să o modificați mai târziu cu ajutorul rolului.
Se recomandă cu tărie să nu vă păstrați parola în text clar în playbook, ci să folosiți [criptarea ansible-vault] () (fie încorporată, fie într-un fișier separat încărcat, de exemplu, cu include_vars)
Acces anonim implicit
nexus_anonymous_access: falseAccesul anonim implicit este dezactivat. Mai multe informații despre .
Nume public al gazdelor
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsNumele complet al domeniului și schema (https sau http) prin care instanța Nexus va fi accesibilă pentru clienții săi.
Acces API pentru acest 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 }}"Aceste variabile controlează modul în care rolul se conectează la API-ul Nexus pentru a oferi.
Numai pentru utilizatori avansați. Cel mai probabil, nu doriți să modificați aceste setări implicite
Configurarea unui proxy invers
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ți .
Pentru aceasta, trebuie să instalați httpd. Notă: când pentru httpd_setup_enable este setat latrue, nexus se leagă de 127.0.0.1:8081, astfel nu fiind accesibil direct prin portul HTTP 8081 de pe un IP extern.
Numele gazdei utilizat implicit este nexus_public_hostname. Dacă aveți nevoie de nume diferite dintr-un anumit motiv, puteți seta httpd_server_name cu o altă valoare.
Cu httpd_copy_ssl_files: true (în mod implicit) certificatul menționat mai sus ar trebui să existe în directorul dvs. playbook și va fi copiat pe server și configurat în apache.
Dacă doriți să utilizați certificatele existente pe server, setaț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 neconfigurat, dacă nu doriți să configurați fișierul de lanț
httpd_default_admin_email: "admin@example.com"Setați adresa de email a administratorului implicit
Configurare LDAP
Conexiunile LDAP și domeniul de securitate implicit sunt dezactivate
nexus_ldap_realm: false
ldap_connections: [], fiecare element arată astfel:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # folosit ca o cheie pentru a actualiza config-ul ldap
ldap_protocol: 'ldaps' # ldap sau ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Dacă se folosesc sau nu certificate în magazinul de încredere nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # sau simplu
ldap_auth_username: 'username' # dacă auth = simplu
ldap_auth_password: 'password' # dacă auth = simplu
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (opțional)
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: falseExemplu de configurare LDAP pentru autentificare anonimă (legare anonimă), aceasta este de asemenea o configurare „minimă”:
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Simplest LDAP config'
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'Exemplu de configurare LDAP pentru autentificare simplă (utilizând un cont DSA):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP config with 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 }}" # mai bine păstrați parolele într-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: falseExemplu de configurare LDAP pentru autentificare simplă (utilizând un cont DSA) + grupuri asociate ca roluri:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Configurare LDAP cu 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 }}" # mai bine păstrați parolele într-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: falseExemplu de configurare LDAP pentru autentificare simplă (folosind un cont DSA) + grupuri, mapate dinamic ca roluri:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configurare LDAP cu 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 }}" # mai bine păstrați parolele într-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'Permisiuni
nexus_privileges:
- name: all-repos-read # folosit ca cheie pentru a actualiza o permisiune
# type: <unu dintre application, repository-admin, repository-content-selector, repository-view, script sau wildcard>
description: 'Acces de citire & navigare la toate repo-urile'
repository: '*'
actions: # pot fi add, browse, create, delete, edit, read sau * (toate)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameLista pentru configurare. Consultați documentația și interfața grafică pentru a verifica ce variabile trebuie setate în funcție de tipul de permisiune.
Aceste elemente se combină cu următoarele valori implicite:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRoluri (în cadrul Nexus se vorbește despre)
nexus_roles:
- id: Developpers # poate fi mapat la un id de grup LDAP, folosit de asemenea ca cheie pentru a actualiza un rol
name: developers
description: Toți dezvoltatorii
privileges:
- nx-search-read
- all-repos-read
roles: [] # referințe la alte nume de rolLista pentru configurare.
Utilizatori
nexus_local_users: []
# - username: jenkins # folosit ca cheie pentru a actualiza
# state: present # valoare implicită dacă este omis, folosiți 'absent' pentru a elimina utilizatorul
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # id-ul roluluiLista utilizatorilor/conturilor locale (non-LDAP) care trebuie create în nexus.
Lista utilizatorilor/conturilor locale (non-LDAP) care trebuie create în Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Mapping-ul utilizatorilor/rolurilor LDAP. Stare inexistent va elimina rolurile dintr-un utilizator existent, dacă acesta există deja.
Utilizatorii LDAP nu sunt șterși. O încercare de a stabili un rol pentru un utilizator inexistent va genera o eroare.
Selectorii de conținut
nexus_content_selectors:
- name: docker-login
description: Selector pentru privilegiul de autentificare Docker
search_expression: format=="docker" and path=~"/v2/"Pentru mai multe informații despre selectorul de conținut, consultați .
Pentru a utiliza selectorul de conținut, adăugați un nou privilegiu cu type: repository-content-selector și corespunzătorcontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Autentificare în registrul Docker'
repository: '*'
actions:
- read
- browseBlobstores și repozitorii
nexus_delete_default_repos: falseȘtergeți repozitoriile din configurația inițială de instalare Nexus. Acest pas se execută doar la instalarea pentru prima dată (când nexus_data_dir a fost detectat ca fiind gol).
Ștergerea repozitoriilor din configurația inițială implicită pentru Nexus. Acest pas se execută doar la prima instalare (când nexus_data_dir este gol).
nexus_delete_default_blobstore: falseȘtergeți blobstore-ul implicit din configurația inițială de instalare Nexus. Acest lucru poate fi realizat doar dacă nexus_delete_default_repos: true și toate repozitoriile configurate (vezi mai jos) au un blob_store: custom. Acest pas se execută doar la instalarea pentru prima dată (când nexus_data_dir a fost detectat ca fiind gol).
Ștergerea blobstore-ului (artefactelor binare) este dezactivată implicit în configurația inițială. Pentru a șterge blobstore-ul (artefactelor binare), dezactivați nexus_delete_default_repos: true. Acest pas se execută doar la prima instalare (când nexus_data_dir este gol).
nexus_blobstores: []
# exemplu de element 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 }}"de creat. Un path de blobstore și un blobstore de repozitoriu nu pot fi actualizate după crearea inițială (orice actualizare aici va fi ignorată la reprovisionare).
Configurarea blobstore-ului pe S3 este oferită ca o comoditate și nu face parte din testele automate pe care le rulăm pe travis. Vă rugăm să rețineți că stocarea pe S3 este recomandată doar pentru instanțele desfășurate pe AWS.
Creare . Calea către blobstore și repozitoriu nu pot fi actualizate după crearea inițială (orice actualizare aici va fi ignorată la reprovisionare).
Configurarea blobstore-ului BLOB pe S3 este oferită pentru comoditate. Vă rugăm să rețineți că stocarea pe S3 este recomandată doar pentru instanțele desfășurate pe 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
# example with a 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: 1440Mai sus este un exemplu de configurație Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # unul dintre "allow", "allow_once" sau "deny"Maven configurație. Configurarea cache-ului negativ este opțională și va folosi valorile de mai sus dacă este omisă.
Configurație Maven. Configurarea cache-ului negativ (-1) este opțională și va folosi valorile specificate anterior, dacă nu este specificată.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossConfigurație Maven.
Toate cele trei tipuri de repoziție se combină cu următoarele valori implicite:
_nexus_repos_maven_defaults:
blob_store: default # Notă: nu poate fi actualizat odată ce repoziția a fost creată
strict_content_validation: true
version_policy: release # release, snapshot sau mixed
layout_policy: strict # strict sau permissive
write_policy: allow_once # unul dintre "allow", "allow_once" sau "deny"
maximum_component_age: -1 # implicit Nexus gui. Numai pentru proxi
maximum_metadata_age: 1440 # implicit Nexus gui. Numai pentru proxi
negative_cache_enabled: true # implicit Nexus gui. Numai pentru proxi
negative_cache_ttl: 1440 # implicit Nexus gui. Numai pentru proxiTipuri de repoziții Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS și yum:
vedeți defaults/main.yml pentru aceste opțiuni:
Repozițiile Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS și yum sunt dezactivate în mod implicit:
Vedeți defaults/main.yml pentru aceste opțiuni:
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: falseVă rugăm să rețineți că ar putea fi necesar să activați anumite domenii de securitate dacă doriți să utilizați alte tipuri de repoziții în afară de maven. Acesta este implicit false
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # necesar pentru accesul anonim la dockerRealm-ul utilizatorului la distanță poate fi activat și prin
nexus_rut_auth_realm: trueși antetul poate fi configurat prin definirea
nexus_rut_auth_header: "CUSTOM_HEADER"Sarcini programate
nexus_scheduled_tasks: []
# # Exemplu de sarcină pentru compactarea blobstore-ului:
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # opțional
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # toate atributele sarcinii sunt stocate ca șiruri de caractere de nexus intern
# # Exemplu de sarcină pentru curățarea snapshot-urilor maven
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # opțional
# taskProperties:
# repositoryName: "*" # * pentru toate repozitoarele. Schimbați-l cu un nume de repozitor dacă doriți doar unul specific
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Exemplu de sarcină pentru curățarea manifest-urilor și imaginilor docker neutilizate
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # opțional
# taskProperties:
# repositoryName: "*" # * pentru toate repozitoarele. Schimbați-l cu un nume de repozitor dacă doriți doar unul specific
# # Exemplu de sarcină pentru curățarea încărcărilor incomplete docker
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # opțional
# taskProperties:
# age: "24" pentru configurare. typeId și specifice sarciniitaskProperties/booleanTaskProperties se poate ghici fie:
- din ierarhia tipurilor Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - verificând formularul HTML de creare a sarcinii în browserul dumneavoastră
- din vizualizarea cererilor AJAX în browser în timpul configurării manuale a sarcinii.
Proprietățile sarcinii trebuie să fie declarate în blocul yaml corect în funcție de tipul lor:
taskPropertiespentru toate proprietățile de tip șir (de exemplu, numele repozitoarelor, numele blobstore-urilor, perioade de timp…).booleanTaskPropertiespentru toate proprietățile logice (de exemplu, în principal casetele de selectare din interfața grafică a sarcinii de creare a nexus-ului).
Backup-uri
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Consultați definiția expresiilor cron în interfața de creare a sarcinilor 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 # Păstrați 4 rotații de backup în mod prestabilit (curent + ultimele 3)Backup-ul nu va fi configurat până nu îl activați nexus_backup_configure în true.
În acest caz, sarcina programată a scriptului va fi configurată pentru a rula în Nexus
la intervalul specificat în nexus_backup_cron (implicit 21:00 în fiecare zi).
Consultați [Șablonul groovy pentru această sarcină](templates / backup.groovy.j2) pentru mai multe informații.
Această sarcină programată nu depinde de altele nexus_scheduled_tasks, pe care le-ați
declara în playbook-ul dumneavoastră.
Dacă doriți să rotiți/ștergeți backup-urile, setați nexus_backup_rotate: true și configurați numărul de backup-uri pe care doriți să le păstrați folosind nexus_backup_keep_rotations (implicit 4).
Când folosiți rotația, dacă doriți să economisiți spațiu suplimentar pe disc în timpul procesului de backup,
Puteți seta nexus_backup_rotate_first: true. Aceasta va configura rotația preliminară/ștergerea înainte de backup. Implicit, rotația are loc după ce a fost creat backup-ul. Rețineți că, în acest caz, backup-urile vechi
vor fi șterse înainte ca backup-ul curent să fie realizat.
Procedura de recuperare
Rulați playbook-ul cu parametrul -e nexus_restore_point=
(de exemplu, 2017-12-17-21-00-00 pentru 17 decembrie 2017 la 21:00
Ștergerea nexus
Atenție: aceasta va șterge complet datele curente. Asigurați-vă că ați făcut un backup înainte, dacă este necesar
Folosiți variabila nexus_purge, dacă trebuie să reporniți de la zero și să reinstalați instanța nexus cu ștergerea tuturor datelor.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueSchimbați parola administratorului după prima instalare
nexus_default_admin_password: 'admin123'Aceasta nu ar trebui să fie modificată în playbook-ul dumneavoastră. Această variabilă este populată cu parola standard de administrator Nexus la prima instalare și asigură că putem schimba parola administratorului la nexus_admin_password.
Dacă doriți să schimbați parola administratorului după prima instalare, puteți să o modificați temporar la parola veche din linia de comandă. După modificare nexus_admin_password în playbook-ul dumneavoastră puteți rula:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordCanal Telegram pentru Nexus Sonatype:
Numai utilizatorii înregistrați pot participa la sondaj. , vă rugăm.
Ce stocuri de artefacte utilizați?
Sonatype Nexus gratuit
Sonatype Nexus plătit
Artifactory gratuit
Artifactory plătit
Harbor
Pulp
Au votat 9 utilizatori. 3 utilizatori s-au abținut.
Sursa: habr.com
