Sonatype Nexus – een geïntegreerd platform waarmee ontwikkelaars Java (Maven) afhankelijkheden, Docker-images, Python, Ruby, NPM, Bower, RPM-pakketten, gitlfs, Apt, Go, Nuget kunnen proxyen, opslaan en beheren, evenals hun software kunnen distribueren.
Waarom is Sonatype Nexus nodig?
- Voor het opslaan van private artefacten;
- Voor het cachen van artefacten die van internet zijn gedownload;
Artefacten die worden ondersteund in de basisversie van Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefacten die door de gemeenschap worden ondersteund:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Sonatype Nexus installeren met behulp van
Vereisten
- Lees online over het gebruik van ansible.
- Installeer ansible
pip install ansibleop de werkstation waar het playbook draait. - Installeer op de werkstation waar het playbook draait.
- Installeer op de werkstation waar het playbook draait.
- Deze rol is getest op CentOS 7, Ubuntu Xenial (16.04) en Bionic (18.04), Debian Jessie en Stretch.
jmespathdeze bibliotheek moet worden geïnstalleerd op de werkstation waar het playbook draait. Gebruik hiervoor:sudo pip install -r requirements.txt- Sla het playbook-bestand (voorbeeld hieronder) op als nexus.yml
- Voer de nexus-installatie uit
ansible-playbook -i host nexus.yml
Voorbeeld van een ansible-playbook voor het installeren van nexus zonder LDAP met Maven (java), Docker, Python, Ruby, NPM, Bower, RPM en gitlfs repositories.
---
- 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: 'Lees- & Blader toegang tot alle repositories'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Implementaties naar company-project'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # komt overeen met de LDAP-groep
name: developers
description: Alle ontwikkelaars
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # gebruikt als sleutel voor update
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # rol-ID hier
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. Verander nexus_config_yum naar true om een yum-repository te maken
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. Verander nexus_config_npm naar true om een npm-repository te maken
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. Verander nexus_config_docker naar true om een docker-repository te maken
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. Verander nexus_config_bower naar true om een bower-repository te maken
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. Verander nexus_config_pypi naar true om een pypi-repository te maken
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. Verander nexus_config_rubygems naar true om een rubygems-repository te maken
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. Verander nexus_config_gitlfs naar true om een gitlfs-repository te maken
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu alleen
# - { 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 alleen
- { 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:


Rolvariables
Rolvariabelen
Standaardwaarde-variabelen (zie default/main.yml):
Algemene variabelen
nexus_version: ''
nexus_timezone: 'UTC'Standaard instelt de rol de laatste beschikbare versie van Nexus. U kunt de versie corrigeren door de variabele nexus_versionte wijzigen. Zie beschikbare versies op .
Als u de versie wijzigt naar een nieuwere, dan zal de rol proberen uw geïnstalleerde Nexus bij te werken.
Als u een oudere versie van Nexus gebruikt dan de laatste, moet u ervoor zorgen dat u geen functies gebruikt die niet beschikbaar zijn in de geïnstalleerde release (bijvoorbeeld het hosten van yum-repositories is beschikbaar voor nexus groter dan 3.8.0, git lfs repo voor nexus groter dan 3.3.0, enz.).
nexus timezone is de naam van de Java-tijdzone, die nuttig kan zijn in combinatie met de hieronder gegeven cron-uitdrukkingen voor nexus_scheduled tasks.
Nexus-poort en contextpad
nexus_default_port: 8081
nexus_default_context_path: '(/)'Poort en contextpad van het Java-verbindingsproces. nexus_default_context_path moet een schuine streep bevatten wanneer deze is ingesteld, bijvoorbeeld: nexus_default_context_path: '/nexus/'.
Nexus-gebruikers en -groepen
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'De gebruiker en groep die worden gebruikt voor het eigendom van Nexus-bestanden en het uitvoeren van de service, zullen door de rol worden aangemaakt als deze niet bestaan.
nexus_os_user_home_dir: '/home/nexus'Sta toe om de standaard thuisdirectory voor de gebruiker nexus te wijzigen
Nexus-instantiedirectories
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Nexus-directories.
nexus_installation_dirbevat de geïnstalleerde uitvoerbare bestandennexus_data_dirbevat alle configuraties, repositories en gedownloade artefacten. Aangepaste paden voor blobstoresnexus_data_dirkunnen worden ingesteld, zie hierondernexus_blobstores.nexus_tmp_dirbevat alle tijdelijke bestanden. Het standaardpad voor RedHat is verplaatst om/tmppotentiële problemen met automatische opschoningsprocedures te overwinnen. Zie #168.
Configureren van het geheugengebruik van Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Dit zijn de standaardinstellingen voor Nexus. Verander deze waarden alstublieft niet Als u het gedeelte over de geheugenvereisten voor Nexus niet hebt gelezen Als tweede waarschuwing, hier is een uittreksel uit het bovengenoemde document:
Als tweede waarschuwing, hier is een uittreksel uit het bovengenoemde document:
Het wordt niet aanbevolen om het geheugen van de JVM heap boven de aanbevolen waarden te verhogen in een poging om de prestaties te verbeteren. Dit kan daadwerkelijk het tegenovergestelde effect hebben, wat leidt tot onnodige belasting van het besturingssysteem.
Beheerderswachtwoord
nexus_admin_password: 'changeme'Wachtwoord voor het "admin" account voor configuratie. Dit werkt alleen bij de eerste standaard installatie.. Raadpleeg [Wijzig het beheerderswachtwoord na de eerste installatie](# change-admin-password-after-first-install) als je het later wilt wijzigen met een rol.
Het is ten zeerste niet aan te raden je wachtwoord in platte tekst in de playbook op te slaan, en in plaats daarvan [ansible-vault encryptie] gebruiken () (of ingebed of in een apart bestand, bijvoorbeeld geladen met include_vars)
Anonieme toegang standaard
nexus_anonymous_access: falseStandaard anonieme toegang is uitgeschakeld. Meer over .
Publieke hostnaam
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsDe volledige domeinnaam en het schema (https of http) waarmee de Nexus instantie beschikbaar zal zijn voor zijn klanten.
API-toegang voor deze 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 }}"Deze variabelen bepalen hoe de rol verbinding maakt met de Nexus API voor het verstrekken.
Alleen voor gevorderde gebruikers. Het is waarschijnlijk dat je deze standaardinstellingen niet wilt wijzigen.
Configuratie van de reverse proxy
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: trueInstalleer .
Hiervoor moet httpd zijn geïnstalleerd. Opmerking: wanneer httpd_setup_enable is ingesteld optrue, verbindt nexus met 127.0.0.1:8081, zodat niet het rechtstreeks toegankelijk is via HTTP-poort 8081 vanaf een extern IP-adres.
De standaard hostnaam is nexus_public_hostname. Als je om welke reden dan ook verschillende namen nodig hebt, kun je httpd_server_name instellen met een andere waarde.
met httpd_copy_ssl_files: true (standaard) de eerder genoemde certificaten moeten bestaan in je playbook-directory en zullen naar de server worden gekopieerd en in apache worden ingesteld.
Als je bestaande certificaten op de server wilt gebruiken, stel je in httpd_copy_ssl_files: false en geef de volgende variabelen op:
# 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 is optioneel en moet onjuist blijven als u de ketenbestanden niet wilt configureren
httpd_default_admin_email: "admin@example.com"Stel het standaard e-mailadres van de administrator in
LDAP-configuratie
LDAP-verbindingen en het beveiligingsdomein zijn standaard uitgeschakeld
nexus_ldap_realm: false
ldap_connections: [], elk element ziet er als volgt uit:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Mijn Bedrijf LDAP' # gebruikt als sleutel voor het bijwerken van de ldap-configuratie
ldap_protocol: 'ldaps' # ldap of ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Of certificaten in de nexus-truststore moeten worden gebruikt
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # of simpel
ldap_auth_username: 'username' # als auth = simpel
ldap_auth_password: 'password' # als auth = simpel
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (optioneel)
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: falseVoorbeeld van LDAP-configuratie voor anonieme authenticatie (anonieme bind), dit is ook een "minimale" configuratie:
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Simpelste LDAP-configuratie'
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'Voorbeeld van LDAP-configuratie voor eenvoudige authenticatie (met DSA-account):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP-configuratie met 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 }}" # bewaar wachtwoorden beter in een 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: falseVoorbeeld van LDAP-configuratie voor eenvoudige authenticatie (met DSA-account) + groepen die als rollen zijn aangemerkt:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'LDAP-configuratie met 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 }}" # beter om wachtwoorden in een ansible vault te bewaren
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=gebruikers'
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=groepen'
ldap_group_object_class: 'groupOfNames'
ldap_group_id_attribute: 'cn'
ldap_group_member_attribute: 'member'
ldap_group_member_format: 'uid=${username},ou=gebruikers,dc=mycompany,dc=net'
ldap_group_subtree: falseVoorbeeld van LDAP-configuratie voor eenvoudige authenticatie (met gebruik van DSA-account) + groepen, dynamisch gekoppeld als rollen:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP-configuratie met 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 }}" # beter om wachtwoorden in een ansible vault te bewaren
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=gebruikers'
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: 'dynamisch'
ldap_user_memberof_attribute: 'memberOf'Privileges
nexus_privileges:
- name: all-repos-read # gebruikt als sleutel voor het bijwerken van een privilege
# type: <een van applicatie, repository-admin, repository-content-selector, repository-view, script of wildcard>
description: 'Lezen & Bladeren toegang tot alle repos'
repository: '*'
actions: # kan zijn toevoegen, bladeren, creëren, verwijderen, bewerken, lezen of * (alle)
- read
- browse
# patroon: patroon
# domein: domein
# script_name: naamLijst voor configuratie. Raadpleeg de documentatie en de grafische interface om te controleren welke variabelen moeten worden ingesteld afhankelijk van het type privilege.
Deze elementen worden samengevoegd met de volgende standaardwaarden:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRollen (binnen Nexus bedoeld)
nexus_roles:
- id: Ontwikkelaars # kan worden gekoppeld aan een LDAP-groep-id, ook gebruikt als sleutel om een rol bij te werken
name: ontwikkelaars
description: Alle ontwikkelaars
privileges:
- nx-search-read
- all-repos-read
roles: [] # verwijzingen naar andere rolnamenLijst voor configuratie.
Gebruikers
nexus_local_users: []
# - username: jenkins # gebruikt als sleutel voor het bijwerken
# state: present # standaardwaarde als deze weggelaten wordt, gebruik 'absent' om gebruiker te verwijderen
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - ontwikkelaars # rol IDLijst met lokale (non-LDAP) gebruikers/rekeningen om in nexus te creëren.
Lijst van lokale (geen LDAP) gebruikers/ accounts voor creatie in Nexus.
nexus_ldap_users: []
# - gebruikersnaam: j.doe
# staat: aanwezig
# rollen:
# - "nx-admin"Mapping van LDAP gebruikers/rollen. Status afwezig verwijdert rollen van een bestaande gebruiker, als deze al bestaat.
LDAP gebruikers worden niet verwijderd. Poging om een rol toe te wijzen aan een niet-bestaande gebruiker leidt tot een fout.
Inhoudselectors
nexus_content_selectors:
- naam: docker-login
beschrijving: Selector voor docker login privilege
zoekexpressie: format=="docker" and path=~"/v2/"Voor meer informatie over de inhoudselector, zie .
Om de inhoudselector te gebruiken, voeg een nieuwe privilege toe met type: repository-content-selector en het bijbehorendecontentSelector
- naam: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
beschrijving: 'Inloggen op de Docker registry'
repository: '*'
acties:
- lezen
- bladerenBlobstores en repositories
nexus_delete_default_repos: falseVerwijder de repositories uit de oorspronkelijke standaardconfiguratie van Nexus. Deze stap wordt alleen uitgevoerd bij de eerste installatie (wanneer nexus_data_dir leeg is gedetecteerd).
Verwijderen van repositories uit de standaardconfiguratie voor Nexus. Deze stap wordt alleen uitgevoerd bij de eerste installatie (wanneer nexus_data_dir leeg).
nexus_delete_default_blobstore: falseVerwijder de standaard blobstore uit de oorspronkelijke standaardconfiguratie van Nexus. Dit kan alleen worden gedaan als nexus_delete_default_repos: true en alle geconfigureerde repositories (zie hieronder) een expliciete blob_store: custom. Deze stap wordt alleen uitgevoerd bij de eerste installatie (wanneer nexus_data_dir leeg is gedetecteerd).
Het verwijderen van blobstores (binaire artifacts) is standaard uitgeschakeld in de oorspronkelijke configuratie. Om het blobstore (binaire artifacts) te verwijderen, schakelt u nexus_delete_default_repos: true. Deze stap wordt alleen uitgevoerd bij de eerste installatie (wanneer nexus_data_dir leeg).
nexus_blobstores: []
# voorbeeld blobstore item :
# - naam: separate-storage
# type: file
# pad: /mnt/custom/path
# - naam: s3-blobstore
# type: S3
# configuratie:
# bucket: s3-blobstore
# accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
# secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"te creëren. Een blobstore-pad en een repository-blobstore kunnen niet worden bijgewerkt na de initiële creatie (elke update hier zal worden genegeerd bij herinstallatie).
Het configureren van blobstore op S3 wordt als gemak aangeboden en maakt geen deel uit van de geautomatiseerde tests die we op Travis uitvoeren. Houd er rekening mee dat opslag op S3 alleen wordt aanbevolen voor gevallen die zijn gedeployd op AWS.
Creëren . Het pad naar blobstore en repository kan niet worden bijgewerkt na de initiële creatie (elke update hier zal worden genegeerd bij herinstallatie).
Configuratie van blobstores op S3 wordt voor gemak aangeboden. Houd er rekening mee dat opslag op S3 alleen wordt aanbevolen voor instanties die zijn gedeployed op 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: 1440Hier is een voorbeeld van de configuratie Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # een van de "allow", "allow_once" of "deny"Maven configuratie. Configuratie van negatieve cache is optioneel en neemt standaard de bovenstaande waarden over als deze wordt weggelaten.
Configuratie Maven. De configuratie van negatieve cache (-1) is optioneel en zal standaard de hierboven vermelde waarden gebruiken als deze niet is opgegeven.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossConfiguratie Maven.
Alle drie de repositorytypes worden gecombineerd met de volgende standaardwaarden:
_nexus_repos_maven_defaults:
blob_store: default # Opmerking: kan niet worden bijgewerkt zodra de repo is aangemaakt
strict_content_validation: true
version_policy: release # release, snapshot of mixed
layout_policy: strict # strict of permissive
write_policy: allow_once # een van "allow", "allow_once" of "deny"
maximum_component_age: -1 # Nexus gui standaard. Alleen voor proxies
maximum_metadata_age: 1440 # Nexus gui standaard. Alleen voor proxies
negative_cache_enabled: true # Nexus gui standaard. Alleen voor proxies
negative_cache_ttl: 1440 # Nexus gui standaard. Alleen voor proxiesRepositorytypes van Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS en yum:
zie defaults/main.yml voor deze opties:
Docker-, Pypi-, Raw-, Rubygems-, Bower-, NPM-, Git-LFS- en yum-repositories zijn standaard uitgeschakeld:
Zie defaults/main.yml voor deze opties:
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: falseLet op dat u mogelijk bepaalde beveiligingsgebieden moet inschakelen als u andere typen repositories dan Maven wilt gebruiken. Dit is standaard false
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # vereist voor anonieme toegang tot dockerRemote User Realm kan ook worden ingeschakeld met
nexus_rut_auth_realm: trueen de header kan worden geconfigureerd door het definiëren van
nexus_rut_auth_header: "CUSTOM_HEADER"Geplande taken
nexus_scheduled_tasks: []
# # Voorbeeldtaak om blobstore te compacteren:
# - naam: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # optioneel
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # alle taakattributen worden intern door nexus als strings opgeslagen
# # Voorbeeldtaak om maven snapshots te verwijderen
# - naam: Verwijder-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # optioneel
# taskProperties:
# repositoryName: "*" # * voor alle repos. Wijzig naar een repository-naam als je alleen een specifieke wilt
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Voorbeeldtaak om ongebruikte docker-manifesten en afbeeldingen te verwijderen
# - naam: Verwijder ongebruikte docker-manifesten en afbeeldingen
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # optioneel
# taskProperties:
# repositoryName: "*" # * voor alle repos. Wijzig naar een repository-naam als je alleen een specifieke wilt
# # Voorbeeldtaak om onvoltooide docker-upload te verwijderen
# - naam: Verwijder onvoltooide docker-upload
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # optioneel
# taskProperties:
# age: "24" voor configuratie. typeId en specifiek voor de taaktaskProperties/booleanTaskProperties kan worden afgeleid als:
- uit de typehiërarchie van Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - door het HTML-formulier voor het maken van een taak in uw browser te controleren
- door de AJAX-verzoeken in de browser te bekijken tijdens handmatige taakconfiguratie.
Taakeigenschappen moeten in het juiste yaml-blok worden gedeclareerd, afhankelijk van hun type:
taskPropertiesvoor alle stringeigenschappen (d.w.z. namen van repositories, namen van opslagplaatsen, tijdsperioden …).booleanTaskPropertiesvoor alle logische eigenschappen (d.w.z. voornamelijk selectievakjes in de grafische interface voor het maken van een nexus-taak).
Back-ups
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Zie definitie van cron-expressies in nexus taak aanmaken 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 # Houd standaard 4 back-uprotaties (huidige + laatste 3)Back-up zal niet worden geconfigureerd totdat je schakelt nexus_backup_configure in true.
In dit geval wordt de geplande taak ingesteld om te worden uitgevoerd in Nexus
met het interval zoals opgegeven in nexus_backup_cron (standaard 21:00 elke dag).
Zie [groovy-sjabloon voor deze taak](templates / backup.groovy.j2) voor meer informatie.
Deze geplande taak is niet afhankelijk van andere nexus_scheduled_tasks, die je
in je playbookDeclareert.
Als je back-ups wilt roteren/verwijderen, stel dan in nexus_backup_rotate: true en stel het aantal back-ups in dat u wilt opslaan met behulp van nexus_backup_keep_rotations (standaard 4).
Bij gebruik van rotatie, als u extra schijfruimte wilt besparen tijdens het back-upproces,
kunt u instellen nexus_backup_rotate_first: true. Dit stelt een voorafgaande rotatie/verwijdering in vóór de back-up. Standaard vindt de rotatie plaats na het maken van een back-up. Houd er rekening mee dat in dit geval oudere back-ups
verwijderd worden voordat de huidige back-up wordt gemaakt.
Herstelprocedure
Voer de playbook uit met de parameter -e nexus_restore_point=
(bijvoorbeeld, 2017-12-17-21-00-00 voor 17 december 2017 om 21:00
Verwijder nexus
Waarschuwing: dit verwijdert alle huidige gegevens volledig. Zorg ervoor dat u eerder een back-up maakt indien nodig
Gebruik de variabele nexus_purge, als u vanaf nul opnieuw wilt starten en de nexus-instantie wilt herinstalleren met verwijdering van alle gegevens.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueWijzig het beheerderswachtwoord na de eerste installatie
nexus_default_admin_password: 'admin123'Dit mag niet worden gewijzigd in uw playbook. Deze variabele wordt gevuld met het standaard beheerderswachtwoord van Nexus bij de eerste installatie en zorgt ervoor dat we het beheerderswachtwoord kunnen wijzigen naar nexus_admin_password.
Als u het beheerderswachtwoord na de eerste installatie wilt wijzigen, kunt u het tijdelijk wijzigen in het oude wachtwoord via de opdrachtregel. Na wijziging nexus_admin_password in uw spelboek kunt u uitvoeren:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordTelegram-kanaal voor Nexus Sonatype:
Alleen geregistreerde gebruikers kunnen deelnemen aan de enquête. , alstublieft.
Welke artifact-repositories gebruikt u?
Sonatype Nexus gratis
Sonatype Nexus betaald
Artifactory gratis
Artifactory betaald
Harbor
Pulp
9 gebruikers hebben gestemd. 3 gebruikers hebben zich onthouden.
Bron: habr.com
