Sonatype Nexus – en integreret platform, som udviklere kan bruge til at proxy, opbevare og håndtere Java-afhængigheder (Maven), Docker-billeder, Python, Ruby, NPM, Bower, RPM-pakker, gitlfs, Apt, Go, Nuget, samt distribuere deres software.
Hvorfor bruge Sonatype Nexus?
- Til opbevaring af private artefakter;
- Til caching af artefakter, der hentes fra internettet;
Artefakter understøttet i den grundlæggende version af Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefakter understøttet af fællesskabet:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Installation af Sonatype Nexus ved hjælp af
Krav
- Læs om brugen af ansible på internettet.
- Installer ansible
pip install ansiblepå den arbejdsstation, hvor playbooken køres. - Installer på den arbejdsstation, hvor playbooken køres.
- Installer på den arbejdsstation, hvor playbooken køres.
- Denne rolle er testet på CentOS 7, Ubuntu Xenial (16.04) og Bionic (18.04), Debian Jessie og Stretch
jmespathbiblioteket skal være installeret på den arbejdsstation, hvor playbooken køres. For at installere, udførsudo pip install -r requirements.txt- Gem playbook-filen (se eksempel nedenfor) som nexus.yml
- Kør installationen af nexus
ansible-playbook -i host nexus.yml
Eksempel på ansible-playbook til installation af nexus uden LDAP med Maven (java), Docker, Python, Ruby, NPM, Bower, RPM og gitlfs.
---
- name: Nexus
hosts: nexus
become: yes
vars:
nexus_timezone: 'Asien/Omsk'
nexus_admin_password: "admin123"
nexus_public_hostname: 'apatsev-nexus-playbook'
httpd_setup_enable: false
nexus_privileges:
- name: all-repos-read
description: 'Læs- og browse-adgang til alle repos'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Udrulninger til virksomhedens projekt'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # kortlægning til LDAP-gruppen
name: developers
description: Alle udviklere
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # bruges som nøgle til opdatering
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # rolle-ID her
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. Skift nexus_config_yum til true for at oprette 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. Skift nexus_config_npm til true for at oprette 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. Skift nexus_config_docker til true for at oprette 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. Skift nexus_config_bower til true for at oprette 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. Skift nexus_config_pypi til true for at oprette 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. Skift nexus_config_rubygems til true for at oprette 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. Skift nexus_config_gitlfs til true for at oprette gitlfs-repository
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu kun
# - { 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 kun
- { 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'] }Skærmbilleder:


Roller variable
Rollevariabler
Standardværdier for variabler (se default/main.yml):
Generelle variable
nexus_version: ''
nexus_timezone: 'UTC'Som standard vil rollen installere den seneste tilgængelige version af Nexus. Du kan rette versionen ved at ændre variablen nexus_version. Se tilgængelige versioner på .
Hvis du ændrer versionen til en nyere, vil rollen forsøge at opdatere din installerede Nexus.
Hvis du bruger en ældre version af Nexus end den seneste, skal du sørge for ikke at bruge funktioner, der ikke er tilgængelige i den installerede version (f.eks. er hosting af yum-repositorier tilgængeligt for nexus version 3.8.0 og derover, git lfs repo for nexus 3.3.0 og derover osv.)
nexus timezone er navnet på Java-tidzoner, som kan være nyttigt i forbindelse med de nedenstående cron-udtryk til nexus_scheduled tasks.
Nexus-port og kontekststi
nexus_default_port: 8081
nexus_default_context_path: ' / 'Porten og kontekststien for Java-forbindelsesprocessen. nexus_default_context_path skal indeholde en skråstreg, når den er indstillet, f.eks.: nexus_default_context_path: '/nexus/'.
Bruger og gruppe for Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Brugeren og gruppen, der bruges til at eje Nexus-filer og køre tjenesten, vil blive oprettet af rollen, hvis den ikke eksisterer.
nexus_os_user_home_dir: '/home/nexus'Tillad at ændre standardhjemmebiblioteket for brugeren nexus
Nexus-instanskataloger
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Nexus-kataloger.
nexus_installation_dirindeholder installerede eksekverbare filernexus_data_dirindeholder al konfiguration, repositorier og uploadede artefakter. Tilpassede blobstore-stiernexus_data_dirkan konfigureres, se nedenfornexus_blobstores.nexus_tmp_dirindeholder alle midlertidige filer. Standardstien for RedHat blev flyttet fra/tmpfor at undgå potentielle problemer med automatiserede rydningsprocedurer. Se #168.
Konfiguration af hukommelsesforbrug til Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Dette er standardindstillingerne for Nexus. Vær venlig at ændre disse værdier hvis du ikke har læst og ikke forstår, hvad de gør.
Som en anden advarsel, her er et uddrag fra det ovennævnte dokument:
Det anbefales ikke at øge JVM heap hukommelsen over de anbefalede værdier i et forsøg på at forbedre ydeevnen. Dette kan faktisk have den modsatte effekt og føre til unødvendig belastning af operativsystemet.
Administratoradgangskode
nexus_admin_password: 'changeme'Adgangskoden for 'admin'-kontoen til konfiguration. Dette fungerer kun ved den første installation som standard. Se venligst [Ændre administratoradgangskoden efter første installation](# change-admin-password-after-first-install), hvis du ønsker at ændre den senere med rollen.
Det anbefales på det kraftigste ikke at gemme din adgangskode som klartekst i playbook, men at bruge [ansible-vault kryptering] () (enten indbygget eller i en separat fil, som for eksempel kan indlæses ved hjælp af include_vars)
Anonym adgang er som standard aktiveret
nexus_anonymous_access: falseStandard anonym adgang er deaktiveret. Læs mere om .
Offentligt vært navn
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsDet fulde domænenavn og skema (https eller http), som Nexus-instansen vil være tilgængelig for sine kunder.
API-adgang for denne rolle
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 }}"Disse variable kontrollerer, hvordan rollen opretter forbindelse til Nexus API for levering.
Kun til avancerede brugere. Du ønsker sandsynligvis ikke at ændre disse standardindstillinger
Konfiguration af den omvendte 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: trueInstaller .
Dette kræver installation af httpd. Bemærk: når httpd_setup_enable er indstillet tiltrue, forbinder nexus til 127.0.0.1:8081, hvilket betyder ikke at være direkte tilgængelig via HTTP-port 8081 med ekstern IP-adresse.
Det brugte standard værtsnavn er nexus_public_hostname. Hvis du har brug for forskellige navne af en eller anden grund, kan du indstille httpd_server_name til en anden værdi.
Med httpd_copy_ssl_files: true (som standard) de nævnte certifikater skal eksistere i din playbook-mappe og vil blive kopieret til serveren og konfigureret i apache.
Hvis du ønsker at bruge eksisterende certificater på serveren, skal du indstille httpd_copy_ssl_files: false og give følgende variable:
# 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 er valgfrit og bør efterlades uindstillet, medmindre du ønsker at konfigurere kædefilen
httpd_default_admin_email: "admin@example.com"Indstil standardadministratorens e-mailadresse
LDAP-konfiguration
LDAP-forbindelser og standard sikkerhedsområde er deaktiveret
nexus_ldap_realm: false
ldap_connections: [], hvert element ser således ud:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # brugt som nøgle til at opdatere ldap-konfigurationen
ldap_protocol: 'ldaps' # ldap eller ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Om der skal bruges certifikater i Nexus trust store
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # eller simpel
ldap_auth_username: 'username' # hvis auth = simpel
ldap_auth_password: 'password' # hvis auth = simpel
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (valgfrit)
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: falseEksempel på LDAP-konfiguration til anonym autentificering (anonym binding), dette er også en "minimum" konfiguration:
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'Eksempel på LDAP-konfiguration til simpel autentificering (ved hjælp af DSA-konto):
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 }}" # det er bedre at opbevare adgangskoder i en 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: falseEksempel på LDAP-konfiguration til simpel autentificering (ved hjælp af DSA-konto) + grupper kortlagt som roller:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'LDAP konfiguration med 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 }}" # det er bedst at opbevare adgangskoder i en 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: falseEksempel på LDAP-konfiguration til simpel autentificering (med DSA-konto) + grupper, der dynamisk matches som roller:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP konfiguration med 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 }}" # det er bedst at opbevare adgangskoder i en 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'Tilladelser
nexus_privileges:
- name: all-repos-read # bruges som nøgle til opdatering af en privilegium
# type:
description: 'Læs & Browse adgang til alle repos'
repository: '*'
actions: # kan være tilføj, browse, opret, slet, rediger, læse eller * (alle)
- read
- browse
# mønster: mønster
# domæne: domæne
# script_name: navnListe til konfiguration. Se dokumentationen og GUI'en for at se, hvilke variabler der skal være indstillet afhængigt af typen af privilegium.
Disse elementer kombineres med følgende standardværdier:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRoller (indeni Nexus forstås)
nexus_roles:
- id: Developpers # kan matche et LDAP gruppe-id, bruges også som nøgle til at opdatere en rolle
name: developers
description: Alle udviklere
privileges:
- nx-search-read
- all-repos-read
roles: [] # henvisninger til andre rollenavneListe til konfiguration.
Brugere
nexus_local_users: []
# - username: jenkins # bruges som nøgle til opdatering
# state: present # standardværdi hvis udeladt, brug 'absent' for at fjerne bruger
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # rolle-IDListe over lokale (ikke-LDAP) brugere/konti at oprette i nexus.
Liste over lokale (ikke LDAP) brugere/konti til oprettelse i Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Mapping af LDAP brugere/roller. Status fraværende fjerner roller fra en eksisterende bruger, hvis vedkommende allerede findes.
LDAP brugere bliver ikke slettet. At forsøge at tildele en rolle til en ikke-eksisterende bruger vil resultere i en fejl.
Indholdsvælgere
nexus_content_selectors:
- name: docker-login
description: Vælger til docker login privilegium
search_expression: format=="docker" and path=~"/v2/"For yderligere information om indholdsvælgeren, se .
For at bruge indholdsvælgeren, skal du tilføje et nyt privilegium med type: repository-content-selector og det tilsvarendecontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Login til Docker register'
repository: '*'
actions:
- read
- browseBlobstores og repositories
nexus_delete_default_repos: falseSlet repositorierne fra den oprindelige standardkonfiguration for Nexus. Dette trin udføres kun ved første installation (når nexus_data_dir er blevet registreret som tom).
Sletning af repositories fra den oprindelige standardkonfiguration for Nexus. Dette trin udføres kun ved første installation (når nexus_data_dir er tom).
nexus_delete_default_blobstore: falseSlet standard blobstore fra den oprindelige standardkonfiguration for Nexus. Dette kan kun gøres, hvis nexus_delete_default_repos: true og alle konfigurerede repositories (se nedenfor) har en eksplicit blob_store: custom. Dette trin udføres kun ved første installation (når nexus_data_dir er blevet registreret som tom).
Sletning af blobstore (binære artefakter) er som standard deaktiveret i den oprindelige konfiguration. For at slette blobstore (binære artefakter) skal du deaktivere nexus_delete_default_repos: true. Dette trin udføres kun ved første installation (når nexus_data_dir er tom).
nexus_blobstores: []
# eksempel blobstore element:
# - 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 }}"der skal oprettes. En blobstore sti og et repository blobstore kan ikke opdateres efter den indledende oprettelse (enhver opdatering her vil blive ignoreret ved genfornyelse).
Konfiguration af blobstore på S3 tilbydes som en bekvemmelighed og er ikke en del af de automatiserede tests, vi kører på travis. Bemærk, at det kun anbefales at gemme på S3 for instanser, der er implementeret på AWS.
Oprettelse . Stien til blobstore og lagringssteder kan ikke opdateres efter den indledende oprettelse (enhver opdatering her vil blive ignoreret ved geninstallationen).
Konfiguration af BLOB-objekter på S3 tilbydes for bekvemmelighed. Vær opmærksom på, at det kun anbefales at gemme på S3 for instanser implementeret på AWS.
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/'
# eksempel med login/adgangskode :
# - 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: 1440Ovenstående er et eksempel på konfiguration Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # en af "allow", "allow_once" eller "deny"Maven konfiguration. Indstillinger for negativ cache er valgfri og vil som standard bruge ovenstående værdier, hvis de udelades.
Konfiguration Maven. Indstillingen for negativ cache (-1) er valgfri og vil som standard anvende ovenstående værdier, hvis den ikke angives.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossKonfiguration Maven.
Alle tre typer arkiver kombineres med følgende standardværdier:
_nexus_repos_maven_defaults:
blob_store: default # Bemærk: kan ikke opdateres, når arkivet er oprettet
strict_content_validation: true
version_policy: release # release, snapshot eller mixed
layout_policy: strict # strict eller permissive
write_policy: allow_once # en af "allow", "allow_once" eller "deny"
maximum_component_age: -1 # Nexus gui standard. Kun for proxies
maximum_metadata_age: 1440 # Nexus gui standard. Kun for proxies
negative_cache_enabled: true # Nexus gui standard. Kun for proxies
negative_cache_ttl: 1440 # Nexus gui standard. Kun for proxiesTyper af Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS og yum arkiver:
se defaults/main.yml for disse indstillinger:
Docker-, Pypi-, Raw-, Rubygems-, Bower-, NPM-, Git-LFS- og yum-arkiver er som standard deaktiveret:
Se defaults/main.yml for disse indstillinger:
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: falseBemærk, at du måske skal aktivere bestemte sikkerhedsområder, hvis du ønsker at bruge andre arkivtyper end Maven. Dette er som standard falsk
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # påkrævet for anonym adgang til dockerRemote User Realm kan også aktiveres ved hjælp af
nexus_rut_auth_realm: trueog headeren kan konfigureres ved at angive
nexus_rut_auth_header: "CUSTOM_HEADER"Planlagte opgaver
nexus_scheduled_tasks: []
# # Eksempel på en opgave til at komprimere blobstore :
# - navn: komprimer-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # valgfri
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # alle opgaveattributter gemmes som strenge af nexus internt
# # Eksempel på en opgave til at slette maven snapshots
# - navn: Slet-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # valgfri
# taskProperties:
# repositoryName: "*" # * for alle repos. Skift til et repositorienavn, hvis du kun vil have et specifikt
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Eksempel på en opgave til at slette ubrugte docker manifest og billeder
# - navn: Slet ubrugte docker manifests og billeder
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # valgfri
# taskProperties:
# repositoryName: "*" # * for alle repos. Skift til et repositorienavn, hvis du kun vil have et specifikt
# # Eksempel på en opgave til at slette ufuldstændige docker uploads
# - navn: Slet ufuldstændige docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # valgfri
# taskProperties:
# age: "24" til konfiguration. typeId og specifikke for opgaventaskProperties/booleanTaskProperties kan gættes som følgende:
- fra Java-typehierarkiet
org.sonatype.nexus.scheduling.TaskDescriptorSupport - ved at kontrollere HTML-formularen for oprettelse af opgaver i din browser
- ved at se AJAX-anmodninger i browseren når du manuelt indstiller opgaven.
Opgaveegenskaber skal erklæres i det rigtige yaml-blok afhængigt af deres type:
taskPropertiesfor alle strengeegenskaber (dvs. repo-navne, blobstore-navne, tidsperioder …).booleanTaskPropertiesfor alle boolske egenskaber (dvs. primært afkrydsningsfelter i brugergrænsefladen for oprettelse af nexus-opgaver).
Sikkerhedskopier
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Se cron-udtryksdefinition i nexus opret opgave 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 # Behold 4 backup rotation som standard (nu + de sidste 3)Sikkerhedskopiering vil ikke blive konfigureret, før du skifter nexus_backup_configure i true.
I dette tilfælde vil den planlagte scriptopgave blive konfigureret til at køre i Nexus
med det interval, der er angivet i nexus_backup_cron (standard 21:00 hver dag).
Se [Groovy-skabelon for denne opgave](templates / backup.groovy.j2) for detaljer.
Denne planlagte opgave er uafhængig af andre nexus_scheduled_tasks, som du
erklærer i dit playbook.
Hvis du vil rotere/slette sikkerhedskopier, skal du indstille nexus_backup_rotate: true og og konfigurer antallet af sikkerhedskopier, du gerne vil gemme med nexus_backup_keep_rotations (som standard 4).
Når du bruger rotation, hvis du ønsker at spare yderligere diskplads under sikkerhedskopieringsprocessen,
kan du indstille nexus_backup_rotate_first: true. Dette vil indstille forudgående rotation/ sletning før sikkerhedskopien. Som standard sker rotation efter oprettelsen af sikkerhedskopien. Vær opmærksom på, at i dette tilfælde vil ældre sikkerhedskopier
blive slettet, før den aktuelle sikkerhedskopi er lavet.
Gendannelsesprocedure
Kør playbook med parameteren -e nexus_restore_point=
(for eksempel 2017-12-17-21-00-00 for 17. december 2017 kl. 21:00
Sletning af nexus
Advarsel: Dette vil fuldstændigt slette de nuværende data. Sørg for at lave en sikkerhedskopi på forhånd, hvis det er nødvendigt.
Brug variablen nexus_purge, hvis du har brug for at starte forfra og geninstallere nexus-instance med sletning af alle data.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueÆndre administratoradgangskoden efter første installation
nexus_default_admin_password: 'admin123'Dette skal ikke ændres i din playbook. Denne variabel udfyldes med standardadministratoradgangskoden for Nexus ved første installation og sikrer, at vi kan ændre administratoradgangskoden til nexus_admin_password.
Hvis du ønsker at ændre administratoradgangskoden efter første installation, kan du midlertidigt ændre den til den gamle adgangskode fra kommandolinjen. Efter ændringen nexus_admin_password i din playbook kan du køre:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordTelegramkanal om Nexus Sonatype:
Kun registrerede brugere kan deltage i undersøgelsen. , please.
Hvilke artefaktlagre bruger du?
Sonatype Nexus gratis
Sonatype Nexus betalt
Artifactory gratis
Artifactory betalt
Harbor
Pulp
9 brugere har stemt. 3 brugere har undladt at stemme.
Kilde: habr.com
