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:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gemme)
- NPM
- Bowers
- Yum (rpm)
- gitlfs
- crudu
- Apt (deb)
- Go
- Nuget
Artifatti supportati da a cumunità:
- cumpusituri
- Atti
- CPAN
- ELPA
- Helm
- P2
- R
Stallà Sonatype Nexus cù
esigenze
- Leghjite nantu à l'usu di ansible in Internet.
- Installa ansible
pip install ansiblenantu à a stazione di travagliu induve u playbook corre. - Installa nantu à a stazione di travagliu induve u playbook corre.
- Installa nantu à a stazione di travagliu induve u playbook corre.
- Stu rolu hè statu pruvatu annantu à CentOS 7, Ubuntu Xenial (16.04) è Bionic (18.04), Debian Jessie è Stretch
jmespathA 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.
---
- 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: 'Read & Browse access to all repos'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Deployments to company-project'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # maps to the LDAP group
name: developers
description: All developers
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # used as key to update
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # role ID here
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. Change nexus_config_yum to true for create yum repository
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. Change nexus_config_npm to true for create npm repository
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. Change nexus_config_docker to true for create docker repository
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. Change nexus_config_bower to true for create bower repository
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. Change nexus_config_pypi to true for create pypi repository
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. Change nexus_config_rubygems to true for create rubygems repository
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. Change nexus_config_gitlfs to true for create gitlfs repository
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'] }Screenshots:


Roli variabili
Variabili di rolu
Variabili cù valori predeterminati (vede default/main.yml):
Variabili generale
nexus_version: ''
nexus_timezone: 'UTC'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 à .
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 Nexus è u percorsu di u cuntestu
nexus_default_port: 8081
nexus_default_context_path: '/'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
Directory d'istanze Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Cataloghi Nexus.
nexus_installation_dircuntene i fugliali eseguibili installatinexus_data_dircuntene tutte e cunfigurazioni, repository è artefatti scaricati. Percorsi di blobstore persunalizatinexus_data_dirpò esse persunalizatu, vede quì sottunexus_blobstores.nexus_tmp_dircuntene tutti i schedarii tempuranee. U percorsu predeterminatu per redhat hè statu spustatu da/tmpper superà i prublemi potenziali cù i prucessi di pulizia automatica. Vede # 168.
Configurazione di Nexus JVM Memory Usage
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Quessi sò i paràmetri predeterminati per Nexus. Per piacè ùn cambià sti valori Se ùn avete micca lettu è ùn capiscenu micca ciò chì facenu.
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] () (o inline o in un schedariu separatu caricatu cù per esempiu include_vars)
Accessu anonimu per difettu
nexus_anonymous_access: falseL'accessu anonimu hè disattivatu per difettu. Leghjite più nantu .
Nome d'ospite publicu
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsU nome di duminiu cumplettamente qualificatu è schema (https o http) sottu chì l'istanza Nexus serà dispunibule per i so clienti.
Accessu API per stu rolu
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 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
Configurazione di un proxy inversu
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 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
httpd_default_admin_email: "admin@example.com"Stabilisci l'indirizzu email amministratore predeterminatu
Configurazione LDAP
I cunnessione LDAP è u regnu di sicurità sò disattivati per automaticamente
nexus_ldap_realm: false
ldap_connections: [], ogni elementu s'assumiglia cusì:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # used as a key to update the ldap config
ldap_protocol: 'ldaps' # ldap or ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Wether or not to use certs in the nexus trust store
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # or simple
ldap_auth_username: 'username' # if auth = simple
ldap_auth_password: 'password' # if auth = simple
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (optional)
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: falseEsempiu di cunfigurazione LDAP per l'autentificazione anonima (binding anonimu), questu hè ancu una cunfigurazione "minima":
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'Esempiu di cunfigurazione LDAP per l'autentificazione simplice (usendu un contu 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 }}" # better keep passwords in an ansible vault
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: falseEsempiu di cunfigurazione LDAP per l'autentificazione simplice (usendu un contu DSA) + gruppi mappati cum'è roli:
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 }}" # better keep passwords in an ansible vault
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: falseEsempiu di cunfigurazione LDAP per autentificazione simplice (usendu un contu DSA) + gruppi mappati dinamicamente cum'è roli:
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 }}" # better keep passwords in an ansible vault
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 # 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: namea lista 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_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRoles (dentru Nexus questu significa)
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 namesa lista per i paràmetri.
Utilizatori
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: support@company.com
# password: "s3cr3t"
# roles:
# - developers # role IDLista d'utilizatori / cunti lucali (non-LDAP) per creà in nexus.
Lista di utilizatori / cunti lucali (non-LDAP) per creà in Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"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 .
Per utilizà u selettore di cuntenutu, aghjunghje un novu privilegiu cù type: repository-content-selector è pertinentecontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Login to Docker registry'
repository: '*'
actions:
- read
- browseBlobstores è repositori
nexus_delete_default_repos: falseEliminate 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: falseEliminate 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).
nexus_blobstores: []
# example blobstore item :
# - 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 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 . 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.
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: 1440Sopra hè un esempiu di cunfigurazione Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"Maven cunfigurazione. A cunfigurazione di a cache negativa hè opzionale è serà predeterminata à i valori sopra se omessi.
Cunfigurazione 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
- jbossCunfigurazione Maven.
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 onlyDocker, 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:
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: falsePer 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
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # required for docker anonymous accessRemote User Realm pò ancu esse attivatu usendu
nexus_rut_auth_realm: trueè u titulu pò esse persunalizatu da definisce
nexus_rut_auth_header: "CUSTOM_HEADER"I travaglii pianificati
nexus_scheduled_tasks: []
# # Example task to compact blobstore :
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # 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: alerts@example.org # 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: alerts@example.org # 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: alerts@example.org # optional
# taskProperties:
# age: "24" per i paràmetri. typeId è un compitu specificutaskProperties/booleanTaskProperties pudete indovinà sia:
- da a ghjerarchia di tipu Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - cuntrollà a forma di creazione di compiti HTML in u vostru navigatore
- da a visualizazione di e dumande AJAX in u navigatore quandu configurate manualmente un compitu.
A pruprietà di u travagliu deve esse dichjaratu in u bloccu yaml currettu secondu u so tipu:
taskPropertiesper tutte e proprietà di stringa (vale à dì nomi di repository, nomi di repository, periodi di tempu...).booleanTaskPropertiesper tutte e proprietà logiche (vale à dì, principarmenti checkboxes in a GUI di u travagliu di creazione di nexus).
Backups
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # See cron expressions definition in nexus create task gui
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 # Keep 4 backup rotation by default (current + last 3)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.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueCambia 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:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordCanale Telegram nantu à Nexus Sonatype:
Solu l'utilizatori registrati ponu participà à l'indagine. , per piacè.
Chì repertorii di artefatti utilizate?
Sonatype Nexus hè liberu
Sonatype Nexus hà pagatu
Artifactory hè liberu
Artifactory pagatu
Harbor
Pulp
9 utilizatori anu vutatu. 3 utilizatori si sò astenuti.
Source: www.habr.com
