Sonatype Nexus – una piattaforma integrata che consente ai programmatori di fare proxy, archiviare e gestire dipendenze Java (Maven), immagini Docker, Python, Ruby, NPM, Bower, pacchetti RPM, gitlfs, Apt, Go, Nuget, e di distribuire il proprio software.
A cosa serve Sonatype Nexus?
- Per l'archiviazione di artefatti privati;
- Per memorizzare nella cache artefatti scaricati da Internet;
Artefatti supportati nella fornitura base di Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefatti supportati dalla comunità:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Installazione di Sonatype Nexus utilizzando
Requisiti
- Leggi informazioni sull'uso di ansible su Internet.
- Installa ansible
pip install ansiblesul workstation dove viene eseguito il playbook. - Installare sul workstation dove viene eseguito il playbook.
- Installare sul workstation dove viene eseguito il playbook.
- Questo ruolo è stato testato su CentOS 7, Ubuntu Xenial (16.04) e Bionic (18.04), Debian Jessie e Stretch
jmespathla libreria deve essere installata sulla workstation dove viene eseguito il playbook. Per installarla, eseguisudo pip install -r requirements.txt- Salva il file del playbook (esempio sotto) nel file nexus.yml
- Avvia l'installazione di nexus
ansible-playbook -i host nexus.yml
Esempio di ansible-playbook per installare nexus senza LDAP con repository Maven (java), Docker, Python, Ruby, NPM, Bower, RPM e 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: 'Accesso in lettura e navigazione a tutti i repository'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Distribuzioni al progetto aziendale'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # mappa al gruppo LDAP
name: developers
description: Tutti gli sviluppatori
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # usato come chiave per l'aggiornamento
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID ruolo qui
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. Cambia nexus_config_yum a true per creare il 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. Cambia nexus_config_npm a true per creare il 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. Cambia nexus_config_docker a true per creare il 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. Cambia nexus_config_bower a true per creare il 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. Cambia nexus_config_pypi a true per creare il 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. Cambia nexus_config_rubygems a true per creare il 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. Cambia nexus_config_gitlfs a true per creare il repository gitlfs
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Solo Debian/Ubuntu
# - { role: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
# Solo RedHat/CentOS
- { 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'] }Screenshot:


Variabili di ruolo
Variabili di ruolo
Variabili con valori predefiniti (vedi default/main.yml):
Variabili generali
nexus_version: ''
nexus_timezone: 'UTC'Di default, il ruolo installerà l'ultima versione disponibile di Nexus. Puoi fissare la versione modificando la variabile nexus_version. Vedi le versioni disponibili su .
Se cambi la versione a una più recente, il ruolo cercherà di aggiornare il tuo Nexus installato.
Se utilizzi una versione di Nexus più vecchia dell'ultima, devi assicurarti di non usare funzionalità non disponibili nella release installata (ad esempio, la pubblicazione di repository yum è disponibile per nexus superiore alla 3.8.0, git lfs repo per nexus superiore alla 3.3.0, ecc.)
Fuso orario nexus è il nome del fuso orario Java, che può essere utile in combinazione con le espressioni cron riportate di seguito per le attività pianificate di nexus.
Porta Nexus e percorso del contesto
nexus_default_port: 8081
nexus_default_context_path: ' / 'Porta e percorso del contesto per il processo di connessione Java. nexus_default_context_path deve contenere una barra obliqua quando viene impostato, ad esempio: nexus_default_context_path: ' /nexus/ '.
Utente e gruppo OS di Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'L'utente e il gruppo utilizzati per la proprietà dei file di Nexus e l'esecuzione del servizio verranno creati dal ruolo se non esistono.
nexus_os_user_home_dir: ' /home/nexus 'Consenti di modificare la directory home predefinita per l'utente nexus
Directory delle installazioni Nexus
nexus_installation_dir: ' /opt '
nexus_data_dir: ' /var/nexus '
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary(' /var/nexus-tmp', ' /tmp/nexus') }}"Directory di Nexus.
nexus_installation_dircontiene i file eseguibili installatinexus_data_dircontiene tutte le configurazioni, i repository e gli artefatti caricati. I percorsi personalizzati dei blobstorenexus_data_dirpossono essere configurati, vedi sottonexus_blobstores.nexus_tmp_dircontiene tutti i file temporanei. Il percorso predefinito per redhat è stato spostato da/tmpper superare potenziali problemi con le procedure automatiche di pulizia. Vedi #168.
Configurazione dell'uso della memoria della JVM di Nexus
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Queste sono le impostazioni predefinite per Nexus. Si prega di non modificare questi valori Se non hai letto e non comprendi cosa facciano.
Come secondo avviso, ecco un estratto dal documento sopra citato:
Non si raccomanda di aumentare la memoria JVM heap oltre i valori raccomandati nel tentativo di migliorare le prestazioni. Questo potrebbe avere in realtà l'effetto opposto, portando a un lavoro non necessario del sistema operativo.
Password dell'amministratore
nexus_admin_password: 'changeme'Questa è la password dell'account «admin» per la configurazione. Questo funziona solo per la prima installazione predefinita. Si prega di consultare [Cambiare la password dell'amministratore dopo la prima installazione](# change-admin-password-after-first-install) se si desidera modificarla successivamente con un ruolo.
È fortemente sconsigliato conservare la propria password in chiaro nel playbook e utilizzare [la crittografia ansible-vault] () (sia incorporata che in un file separato caricato, ad esempio, utilizzando include_vars)
Accesso anonimo per impostazione predefinita
nexus_anonymous_access: falseL'accesso anonimo per impostazione predefinita è disabilitato. Maggiori informazioni su .
Nome host pubblico
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsNome di dominio completo e schema (https o http), attraverso cui l'istanza di Nexus sarà accessibile ai suoi clienti.
Accesso API per questo ruolo
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 variabili controllano come il ruolo si connette all'API di Nexus per fornire.
Solo per utenti esperti. Probabilmente non si desidera modificare queste impostazioni predefinite.
Configurazione del proxy inverso
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: trueInstallare .
Per questo è necessario installare httpd. Nota: quando per httpd_setup_enable è impostato sutrue, Nexus si collega a 127.0.0.1:8081, quindi non essendo direttamente accessibile tramite la porta HTTP 8081 con un indirizzo IP esterno.
Il nome host predefinito utilizzato è nexus_public_hostname. Se hai bisogno di nomi diversi per qualche motivo, puoi impostare httpd_server_name con un altro valore.
C httpd_copy_ssl_files: true (per impostazione predefinita) i certificati sopra citati devono esistere nella tua directory playbook e saranno copiati sul server e configurati in apache.
Se desideri utilizzare certificati esistenti sul server, imposta httpd_copy_ssl_files: false e fornisci 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 configurare il file della catena
httpd_default_admin_email: "admin@example.com"Imposta l'indirizzo e-mail dell'amministratore predefinito
Configurazione LDAP
Le connessioni LDAP e l'area di sicurezza predefinita sono disattivate
nexus_ldap_realm: false
ldap_connections: [], ogni elemento appare nel seguente modo:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # usato come chiave per aggiornare la configurazione ldap
ldap_protocol: 'ldaps' # ldap o ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Se utilizzare o meno i certificati nel trust store di nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # o semplice
ldap_auth_username: 'username' # se auth = semplice
ldap_auth_password: 'password' # se auth = semplice
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (opzionale)
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: falseEsempio di configurazione LDAP per l'autenticazione anonima (bound anonimo), questa è anche una configurazione "minima":
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Configurazione LDAP più semplice'
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'Esempio di configurazione LDAP per l'autenticazione semplice (utilizzando un account DSA):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configurazione LDAP con 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 }}" # è meglio mantenere le password in 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: falseEsempio di configurazione LDAP per l'autenticazione semplice (utilizzando un account DSA) + gruppi mappati come ruoli:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Configurazione LDAP con 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 }}" # è meglio tenere le password in 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: falseEsempio di configurazione LDAP per autenticazione semplice (utilizzando un account DSA) + gruppi mappati dinamicamente come ruoli:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Configurazione LDAP con 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 }}" # è meglio tenere le password in 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'Privilegi
nexus_privileges:
- name: all-repos-read # utilizzato come chiave per aggiornare un privilegio
# type:
description: 'Accesso per leggere e navigare tutti i repo'
repository: '*'
actions: # possono essere add, browse, create, delete, edit, read o * (tutti)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameElenco per la configurazione. Controlla la documentazione e l'interfaccia grafica per verificare quali variabili devono essere impostate a seconda del tipo di privilegio.
Questi elementi sono combinati con i seguenti valori predefiniti:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRuoli (si intende all'interno di Nexus)
nexus_roles:
- id: Developpers # può mappare a un id di gruppo LDAP, utilizzato anche come chiave per aggiornare un ruolo
name: developers
description: Tutti gli sviluppatori
privileges:
- nx-search-read
- all-repos-read
roles: [] # riferimenti ad altri nomi di ruoloElenco per la configurazione.
Utenti
nexus_local_users: []
# - username: jenkins # utilizzato come chiave per aggiornare
# state: present # valore predefinito se omesso, usa 'assente' per rimuovere l'utente
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # ID ruoloElenco di utenti/conti locali (non LDAP) da creare in nexus.
Elenco degli utenti/account locali (non LDAP) da creare in Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Mappatura degli utenti/ruoli LDAP. Stato absent rimuove i ruoli da un utente esistente se già presente.
Gli utenti LDAP non vengono rimossi. Tentare di impostare un ruolo per un utente inesistente genererà un errore.
Selettori di contenuto
nexus_content_selectors:
- name: docker-login
description: Selettore per il privilegio di accesso a Docker
search_expression: format=="docker" and path=~"/v2/"Per ulteriori informazioni sul selettore di contenuto vedere. .
Per utilizzare il selettore di contenuto, aggiungi un nuovo privilegio con type: repository-content-selector e il corrispondentecontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Accesso al registro Docker'
repository: '*'
actions:
- read
- browseBlobstore e repository
nexus_delete_default_repos: falseElimina i repository dalla configurazione predefinita iniziale dell'installazione di nexus. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir è stato rilevato come vuoto).
Rimozione dei repository dalla configurazione predefinita originaria per Nexus. Questo passaggio viene eseguito solo alla prima installazione (quando nexus_data_dir è vuoto).
nexus_delete_default_blobstore: falseElimina il blobstore predefinito dalla configurazione predefinita iniziale dell'installazione di nexus. Questo può essere fatto solo se nexus_delete_default_repos: true e tutti i repository configurati (vedi sottostante) hanno un esplicito blob_store: custom. Questo passaggio viene eseguito solo alla prima installazione (quando nexus_data_dir è stato rilevato come vuoto).
La rimozione del blobstore (artefatti binari) è disattivata per impostazione predefinita nella configurazione iniziale. Per rimuovere il blobstore (artefatti binari) disattiva nexus_delete_default_repos: true. Questo passaggio viene eseguito solo durante la prima installazione (quando nexus_data_dir è vuoto).
nexus_blobstores: []
# esempio di elemento 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 }}"da creare. Un percorso blobstore e un blobstore di repository non possono essere aggiornati dopo la creazione iniziale (qualsiasi aggiornamento qui sarà ignorato durante la riprovisionamento).
La configurazione del blobstore su S3 è fornita per comodità e non fa parte dei test automatizzati che eseguiamo su travis. Si prega di notare che l'archiviazione su S3 è consigliata solo per le istanze distribuite su AWS.
Creazione . Il percorso del blobstore e del repository non possono essere aggiornati dopo la creazione iniziale (qualsiasi aggiornamento qui sarà ignorato durante la riprovisionamento).
La configurazione del blobstore per oggetti BLOB su S3 è fornita per comodità. Si prega di notare che l'archiviazione su S3 è consigliata solo per istanze distribuite su 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
# esempio con nome utente/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: 1440Ecco un esempio di configurazione Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # uno tra "allow", "allow_once" o "deny"Maven configurazione. La configurazione della cache negativa è facoltativa e utilizzerà i valori predefiniti sopra indicati se omessa.
Configurazione Maven. La configurazione della cache negativa (-1) è facoltativa e utilizzerà per default i valori indicati sopra se non specificato.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossConfigurazione Maven.
Tutti e tre i tipi di repository vengono uniti con i seguenti valori predefiniti:
_nexus_repos_maven_defaults:
blob_store: default # Nota : non può essere aggiornato una volta che il repository è stato creato
strict_content_validation: true
version_policy: release # release, snapshot o mixed
layout_policy: strict # strict o permissive
write_policy: allow_once # uno tra "allow", "allow_once" o "deny"
maximum_component_age: -1 # valore predefinito della gui di Nexus. Solo per proxy
maximum_metadata_age: 1440 # valore predefinito della gui di Nexus. Solo per proxy
negative_cache_enabled: true # valore predefinito della gui di Nexus. Solo per proxy
negative_cache_ttl: 1440 # valore predefinito della gui di Nexus. Solo per proxyTipi di repository: Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum:
vedi defaults/main.yml per queste opzioni:
I repository Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS e yum sono disattivati per impostazione predefinita:
Vedi 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: falseSi prega di notare che potrebbe essere necessario abilitare alcune aree di sicurezza se si desidera utilizzare altri tipi di repository oltre a Maven. È impostato su false per impostazione predefinita.
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # richiesto per l'accesso anonimo a dockerIl realm utente remoto può essere abilitato tramite
nexus_rut_auth_realm: truee l'intestazione può essere configurata definendo
nexus_rut_auth_header: "CUSTOM_HEADER"Compiti programmati
nexus_scheduled_tasks: []
# # Esempio di attività per compattare lo blobstore:
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # tutti gli attributi delle attività sono memorizzati come stringhe da nexus internamente
# # Esempio di attività per eliminare gli snapshot di maven
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# repositoryName: "*" # * per tutti i repo. Cambia in un nome di repository se desideri uno specifico
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Esempio di attività per eliminare manifest e immagini docker non utilizzati
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# repositoryName: "*" # * per tutti i repo. Cambia in un nome di repository se desideri uno specifico
# # Esempio di attività per eliminare upload docker incompleti
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # opzionale
# taskProperties:
# age: "24" per la configurazione. typeId e specifici per il compitotaskProperties/booleanTaskProperties può essere indovinato o:
- dalla gerarchia dei tipi Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - controllando il modulo HTML per la creazione delle attività nel tuo browser
- dalla visualizzazione delle richieste AJAX nel browser durante la configurazione manuale dell'attività.
Le proprietà dell'attività devono essere dichiarate nel corretto blocco yaml a seconda del loro tipo:
taskPropertiesper tutte le proprietà stringa (cioè nomi dei repository, nomi degli store, periodi di tempo …).booleanTaskPropertiesper tutte le proprietà booleane (cioè principalmente caselle di controllo nell'interfaccia grafica per la creazione delle attività di Nexus).
Backup
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Vedi la definizione delle espressioni cron nella GUI per la creazione delle attività di 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 # Mantieni 4 rotazioni di backup per impostazione predefinita (attuale + ultime 3)Il backup non sarà configurato finché non attivi nexus_backup_configure in true.
In questo caso, l'attività programmata sarà configurata per essere eseguita in Nexus
con l'intervallo specificato in nexus_backup_cron (di default 21:00 ogni giorno).
Vedi [Template groovy per questa attività](templates \/ backup.groovy.j2) per maggiori dettagli.
Questa attività programmata non dipende da altri nexus_scheduled_tasks, che tu
dichiari nel tuo playbook.
Se desideri ruotare\/eliminare i backup, imposta nexus_backup_rotate: true e configura il numero di backup che desideri mantenere con nexus_backup_keep_rotations (predefinito 4).
Quando utilizzi la rotazione, se desideri risparmiare spazio su disco aggiuntivo durante il processo di backup,
Puoi impostare nexus_backup_rotate_first: true. Questo configurerà la rotazione preliminare/cancellazione prima del backup. Per impostazione predefinita, la rotazione avviene dopo la creazione del backup. Tieni presente che in questo caso i backup più vecchi
verranno eliminati prima che venga effettuato il backup attuale.
Procedura di ripristino
Esegui il playbook con il parametro -e nexus_restore_point=
(ad esempio, 2017-12-17-21-00-00 per il 17 dicembre 2017 alle 21:00
Eliminazione di nexus
Attenzione: questo eliminerà completamente i dati attuali. Assicurati di eseguire un backup in precedenza, se necessario.
Utilizza la variabile nexus_purge, se devi ripartire da zero e reinstallare l'istanza di nexus eliminando tutti i dati.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueCambia la password dell'amministratore dopo la prima installazione
nexus_default_admin_password: 'admin123'Non dovrebbe essere modificato nel tuo playbook. Questa variabile è popolata con la password predefinita dell'amministratore Nexus alla prima installazione e garantisce che possiamo cambiare la password dell'amministratore in nexus_admin_password.
Se desideri cambiare la password dell'amministratore dopo la prima installazione, puoi temporaneamente cambiarla con la vecchia password dalla linea di comando. Dopo la modifica nexus_admin_password nel tuo playbook puoi eseguire:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordCanale Telegram su Nexus Sonatype:
Solo gli utenti registrati possono partecipare al sondaggio. , per favore.
Quali repository di artefatti stai utilizzando?
Sonatype Nexus gratuito
Sonatype Nexus a pagamento
Artifactory gratuito
Artifactory a pagamento
Harbor
Pulp
Hanno votato 9 utenti. Si sono astenuti 3 utenti.
Fonte: habr.com
