Sonatype Nexus është një platformë e integruar që lejon zhvilluesit të proksinojnë, ruajnë dhe menaxhojnë varësitë Java (Maven), imazhet Docker, Python, Ruby, NPM, Bower, paketat RPM, gitlfs, Apt, Go, Nuget, si dhe të shpërndajnë softuerin e tyre.
Pse është e nevojshme Sonatype Nexus?
- Për ruajtjen e artefakteve private;
- Për keƥimin e artefakteve që shkarkohen nga interneti;
Artefaktet e mbështetura në paketimin bazë të Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefaktet e mbështetura nga komuniteti:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Instalimi i Sonatype Nexus duke përdorur
Kërkesat
- Lexoni për përdorimin e ansible në internet.
- Instaloni ansible
pip install ansiblenë stacionin e punës ku ekzekutohet playbook. - Instaloni në stacionin e punës ku ekzekutohet playbook.
- Instaloni në stacionin e punës ku ekzekutohet playbook.
- Kjo rol është testuar në CentOS 7, Ubuntu Xenial (16.04) dhe Bionic (18.04), Debian Jessie dhe Stretch
jmespathbiblioteka duhet të instalohen në stacionin e punës ku ekzekutohet playbook. Për instalim, ekzekutonisudo pip install -r requirements.txt- Ruani skedarin e playbook (shembuj më poshtë) si nexus.yml
- Nisni instalimin e nexus
ansible-playbook -i host nexus.yml
Shembull ansible-playbook për të instaluar nexus pa LDAP me repositorët Maven (java), Docker, Python, Ruby, NPM, Bower, RPM dhe gitlfs.
---
- emri: Nexus
hostet: nexus
becoj: po
variablat:
nexus_timezone: 'Asia/Omsk'
nexus_admin_password: "admin123"
nexus_public_hostname: 'apatsev-nexus-playbook'
httpd_setup_enable: false
nexus_privilegjat:
- emri: all-repos-read
përshkrimi: 'Akses për të lexuar & shfletuar të gjitha repo'
repository: '*'
veprimet:
- lexoni
- shfletoni
- emri: company-project-deploy
përshkrimi: 'Zbatime për projektin e kompanisë'
repository: company-project
veprimet:
- shtoni
- redaktoni
nexus_roles:
- id: Developpers # harton me grupin LDAP
emri: zhvilluesit
përshkrimi: Të gjithë zhvilluesit
privilegjet:
- nx-search-read
- all-repos-read
- company-project-deploy
rolet: []
nexus_local_users:
- emri_i_përdoruesit: jenkins # përdoret si çelës për përditësim
emri: Jenkins
mbiemri: CI
email: support@company.com
fjalëkalimi: "s3cr3t"
rolet:
- Developpers # ID e rolit këtu
nexus_blobstores:
- emri: company-artifacts
rruga: /var/nexus/blobs/company-artifacts
nexus_scheduled_tasks:
- emri: compact-blobstore
cron: '0 0 22 * * ?'
typeId: blobstore.compact
taskProperties:
blobstoreName: 'company-artifacts'
nexus_repos_maven_proxy:
- emri: central
remote_url: 'https://repo1.maven.org/maven2/'
layout_policy: permissive
- emri: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
- emri: vaadin-addons
remote_url: 'https://maven.vaadin.com/vaadin-addons/'
- emri: jaspersoft
remote_url: 'https://jaspersoft.artifactoryonline.com/jaspersoft/jaspersoft-repo/'
version_policy: mixed
nexus_repos_maven_hosted:
- emri: company-project
version_policy: mixed
write_policy: allow
blob_store: company-artifacts
nexus_repos_maven_group:
- emri: public
anëtarët_repos:
- central
- jboss
- vaadin-addons
- jaspersoft
# Yum. Ndryshoni nexus_config_yum në true për të krijuar repository yum
nexus_config_yum: true
nexus_repos_yum_hosted:
- emri: private_yum_centos_7
repodata_depth: 1
nexus_repos_yum_proxy:
- emri: 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
- emri: 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:
- emri: yum_all
anëtarët_repos:
- private_yum_centos_7
- epel_centos_7_x86_64
# NPM. Ndryshoni nexus_config_npm në true për të krijuar repository npm
nexus_config_npm: true
nexus_repos_npm_hosted: []
nexus_repos_npm_group:
- emri: npm-public
anëtarët_repos:
- npm-registry
nexus_repos_npm_proxy:
- emri: npm-registry
remote_url: https://registry.npmjs.org/
negative_cache_enabled: false
# Docker. Ndryshoni nexus_config_docker në true për të krijuar repository docker
nexus_config_docker: true
nexus_repos_docker_hosted:
- emri: docker-hosted
http_port: "{{ nexus_docker_hosted_port }}"
v1_enabled: True
nexus_repos_docker_proxy:
- emri: 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:
- emri: docker-group
http_port: "{{ nexus_docker_group_port }}"
v1_enabled: True
anëtarët_repos:
- docker-hosted
- docker-proxy
# Bower. Ndryshoni nexus_config_bower në true për të krijuar repository bower
nexus_config_bower: true
nexus_repos_bower_hosted:
- emri: bower-hosted
nexus_repos_bower_proxy:
- emri: 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:
- emri: bower-group
anëtarët_repos:
- bower-hosted
- bower-proxy
# Pypi. Ndryshoni nexus_config_pypi në true për të krijuar repository pypi
nexus_config_pypi: true
nexus_repos_pypi_hosted:
- emri: pypi-hosted
nexus_repos_pypi_proxy:
- emri: 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:
- emri: pypi-group
anëtarët_repos:
- pypi-hosted
- pypi-proxy
# rubygems. Ndryshoni nexus_config_rubygems në true për të krijuar repository rubygems
nexus_config_rubygems: true
nexus_repos_rubygems_hosted:
- emri: rubygems-hosted
nexus_repos_rubygems_proxy:
- emri: 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:
- emri: rubygems-group
anëtarët_repos:
- rubygems-hosted
- rubygems-proxy
# gitlfs. Ndryshoni nexus_config_gitlfs në true për të krijuar repository gitlfs
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- emri: gitlfs-hosted
rolet:
- { roli: geerlingguy.java }
# Vetëm Debian/Ubuntu
# - { roli: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
# Vetëm RedHat/CentOS
- { roli: geerlingguy.apache, apache_create_vhosts: no, apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
- { roli: ansible-thoteam.nexus3-oss, tags: ['ansible-thoteam.nexus3-oss'] }Kapitalet:


Variablat e rolit
Variablat e Rolit
Variablat me vlera standarde (shih. default/main.yml):
Variablat e përgjithshme
nexus_version: ''
nexus_timezone: 'UTC'Në mënyrë standarde, roli do të vendosë versionin më të fundit të disponueshëm të Nexus. Ju mund të rregulloni versionin duke e ndryshuar variablën nexus_version. Shihni versionet e disponueshme në .
Nëse e ndryshoni versionin në një version më të ri, roli do të përpiqet të përditësojë Nexus-in tuaj të instaluar.
Nëse po përdorni një version më të vjetër të Nexus-it se sa më i fundit, duhet të siguroheni që nuk po përdorni funksione, të cilat nuk janë të disponueshme në versionin e instaluar (për shembull, vendosja e depozitave yum është e disponueshme për nexus më shumë se 3.8.0, depo git lfs për nexus më shumë se 3.3.0 etj.)
nexus timezone â Ă«shtĂ« emri i zonĂ«s kohore Java, qĂ« mund tĂ« jetĂ« i dobishĂ«m nĂ« kombinim me shprehjet e mĂ«poshtme cron pĂ«r detyrat e programuar tĂ« nexus.
Porti dhe rruga kontekstuale e Nexus
nexus_default_port: 8081
nexus_default_context_path: '/'Porti dhe rruga kontekstuale e procesit të lidhjes Java. nexus_default_context_path duhet të përmbajë një gërvishtje kur është vendosur, për shembull: nexus_default_context_path: '/nexus/'.
Përdoruesi dhe grupi OS të Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Përdoruesi dhe grupi, të cilët do të përdoren për pronësinë e skedarëve Nexus dhe për të nisur shërbimin, do të krijohen nga roli nëse ai mungon.
nexus_os_user_home_dir: '/home/nexus'Lejo rregullimin e katalogut të shtëpisë standard për përdoruesin nexus
Kataloget e instancave të Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Kataloget e Nexus.
nexus_installation_dirpërmban skedarët e ekzekutueshëm të instaluarnexus_data_dirpërmban të gjithë konfigurimin, repository-t dhe artefaktet e ngarkuara. Rrugët e personalizuara të blobstoresnexus_data_dirmund të konfigurohen, shih më poshtënexus_blobstores.nexus_tmp_dirpërmban të gjitha skedarët e përkohshëm. Rruga standard për redhat është zhvendosur nga/tmppër të kapërcyer problemet e mundshme me procedurat automatike të pastrimit. Shih #168.
Konfigurimi i përdorimit të memories së Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Këto janë konfigurimet standard për Nexus. Ju lutemi, mos i ndryshoni këto vlera Nëse nuk keni lexuar dhe nuk e kuptoni çfarë bëjnë ato.
Si një paralajmërim të dytë, ja një ekscerpt nga dokumenti të përmendur më lart:
Nuk është e rekomanduar të rritet memoria JVM heap më shumë sesa vlerat e rekomanduara në përpjekje për të përmirësuar performancën. Në fakt, kjo mund të ketë efektin e kundërt, duke çuar në punën e panevojshme të sistemit operativ.
Fjalkalimi i administratorit
nexus_admin_password: 'changeme'Fjalkalimi i llogarisë «admin» për konfigurimin. Kjo punon vetëm gjatë instalimit të parë në mënyrë standarde. Ju lutem, shihni [Ndrysho fjalkalimin e administratorit pas instalimit të parë](# change-admin-password-after-first-install), nëse dëshironi ta ndryshoni atë më vonë me rolin.
Fort nuk rekomandohet të ruani fjalkalimin tuaj si tekst të hapur në playbook, por të përdorni [enkriptimin ansible-vault] () (që mund të jetë i ndërtuar ose në një skedar të veçantë, i ngarkuar, për shembull, me anë të include_vars)
Pranimi anonim si parazgjedhje
nexus_anonymous_access: falsePranimi anonim si parazgjedhje është i çaktivizuar. Më shumë rreth .
Emri publik i hostit
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsEmri i plotë i domenit dhe skema (https ose http), sipas të cilës instanca Nexus do të jetë e aksesueshme për klientët e saj.
Akses API për këtë 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 }}"Këto variabla kontrollojnë se si roli lidhet me API-në Nexus për të ofruar shërbimin.
Vetëm për përdoruesit e avancuar. Ndërsa është e mundur, me siguri nuk dëshironi të ndryshoni këto cilësime të paracaktuar.
Konfigurimi i një proxy të kthyer
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: trueInstaloni .
Për këtë, duhet të instaloni httpd. Shënim: kur për httpd_setup_enable është vendosur nëe vërtetë, nexus lidhet me 127.0.0.1:8081, kështu nuk duke qenë direkt e aksesueshme nëpërmjet portit HTTP 8081 me adresën IP të jashtme.
Emri i hostit të paracaktuar është nexus_public_hostname. Nëse ju nevojiten emra të ndryshëm për ndonjë arsye, mund të vendosni httpd_server_name me një vlerë tjetër.
S httpd_copy_ssl_files: true (e paracaktuar) certifikatat e lartëpërmendura duhet të ekzistojnë në direktorinë tuaj të playbook dhe do të kopjohen në server dhe konfigurohen në apache.
Nëse dëshironi të përdorni certifikatat ekzistuese në server, vendosni httpd_copy_ssl_files: false dhe sigurohuni që të jepni variablat e mëposhtëm:
# 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 është opsional dhe duhet lënë pa vendosur nëse nuk dëshironi të konfiguroni skedarin e zinxhirit
httpd_default_admin_email: "admin@example.com"Vendosni adresën e postës elektronike të administratorit si e parazgjedhur
Konfigurimi LDAP
Këto lidhje LDAP dhe zona e sigurisë janë të çaktivizuara si parazgjedhje
nexus_ldap_realm: false
ldap_connections: [], çdo element duket si në vijim:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # përdoret si një çelës për të përditësuar konfigurimin ldap
ldap_protocol: 'ldaps' # ldap ose ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Nëse përdoren ose jo certifikatat në nyjën e besimit të nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # ose thjeshtë
ldap_auth_username: 'username' # nëse auth = thjeshtë
ldap_auth_password: 'password' # nëse auth = thjeshtë
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (opsionale)
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: falseShembulli i konfigurimit LDAP për autentifikimin anonim (për lidhjen anonime), kjo është gjithashtu konfigurimi më "minimal":
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Konfigurimi më i thjeshtë LDAP'
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'Shembulli i konfigurimit LDAP për autentifikimin e thjeshtë (duke përdorur një llogari DSA):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Konfigurimi LDAP me 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 }}" # është më mirë të mbani fjalëkalimet në një 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: falseShembull i konfigurimit LDAP për autentifikim të thjeshtë (duke përdorur llogarinë DSA) + grupe, të lidhura si role:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Konfigurimi LDAP me 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 }}" # është më mirë të mbani fjalëkalimet në një 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: falseShembulli i konfigurimit LDAP për autentifikimin e thjeshtë (duke përdorur llogarinë DSA) + grupe, të përputhura dinamikisht si rolle:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Konfigurimi LDAP me 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 }}" # më mirë t'i mbani fjalëkalimet në një anvilë 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'Privilegjet
nexus_privileges:
- name: all-repos-read # përdoret si çelës për të përditësuar një privilegj
# type: <një nga aplikacioni, administrator i repository, përzgjedhësi i përmbajtjes së repository, pamjen e repository, skenarin ose wildcard>
description: 'Qasje për të Lexuar & Shflezuar në të gjitha repository'
repository: '*'
actions: # mund të jetë për të shtuar, shflezuar, krijuar, fshirë, redaktuar, lexuar ose * (të gjitha)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameLista për konfigurim. Shikoni dokumentacionin dhe ndërfaqen grafike për të parë se cilat variabla duhet të vendosen në varësi të llojit të privilegjeve.
Këto elemente bashkohen me vlerat e mëposhtme për default:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRollet (në kontekstin e Nexus)
nexus_roles:
- id: Developpers # mund të përputhet me një ID grupi LDAP, gjithashtu përdoret si çelës për të përditësuar një rol
name: developers
description: Të gjithë zhvilluesit
privileges:
- nx-search-read
- all-repos-read
roles: [] # referenca për emrat e tjerë të rolitLista për konfigurim.
Përdoruesit
nexus_local_users: []
# - username: jenkins # përdoret si çelës për të përditësuar
# state: present # vlera e paracaktuar nëse lihet jashtë, përdorni 'absent' për të hequr përdoruesin
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # ID roliLista e përdoruesve/accounteve lokale (jo-LDAP) për t'u krijuar në nexus.
Lista e përdoruesve/accounteve lokale (jo-LDAP) për t'u krijuar në Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Mapping i përdoruesve/rolleve LDAP. Gjendja absent do të heqë rolet nga një përdorues ekzistues, nëse ai ekziston tashmë.
Përdoruesit LDAP nuk hiqen. Një përpjekje për të vendosur një rol për një përdorues që nuk ekziston do të çojë në një gabim.
Seletorët e përmbajtjes
nexus_content_selectors:
- name: docker-login
description: Seletor për privilegjin e login-it të docker-it
search_expression: format=="docker" and path=~"/v2/"Për më shumë informacion mbi seletorin e përmbajtjes, shih. .
Për të përdorur selektorin e përmbajtjes, shtoni një privilegj të ri me lloj: repository-content-selector dhe përkatësincontentSelector
- emri: docker-login-privilege
lloj: repository-content-selector
contentSelector: docker-login
përshkrimi: 'Hyni në registrin Docker'
repository: '*'
veprimet:
- lexoni
- shfletoniBlobstore dhe repositorë
nexus_delete_default_repos: falseFshini repositorët nga konfigurimi fillestar i instalimit të nexusit. Ky hap ekzekutohet vetëm gjatë instalimit të parë (kur nexus_data_dir është zbuluar bosh).
Fshirja e repositorëve nga konfigurimi standard i Nexus. Ky hap bëhet vetëm gjatë instalimit të parë (kur nexus_data_dir është bosh).
nexus_delete_default_blobstore: falseFshini blobstore standard nga konfigurimi fillestar i instalimit të nexusit. Kjo mund të bëhet vetëm nëse nexus_delete_default_repos: true dhe të gjithë repositorët e konfiguruar (shih më poshtë) kanë një blob_store: custom. Ky hap ekzekutohet vetëm gjatë instalimit të parë (kur nexus_data_dir është zbuluar bosh).
Fshirja e blobstore (artefakteve binare) është e çaktivizuar në mënyrë standarde nga konfigurimi fillestar. Për të fshirë blobstore (artefakte binare) çaktivizoni nexus_delete_default_repos: true. Ky hap ekzekutohet vetëm gjatë instalimit të parë (kur nexus_data_dir është bosh).
nexus_blobstores: []
# shembulli i itemit të blobstore :
# - emri: separate-storage
# lloj: file
# rruga: /mnt/custom/path
# - emri: s3-blobstore
# lloj: S3
# konfigurimi:
# bucket: s3-blobstore
# accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
# secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"për të krijuar. Një rrugë hapësire dhe një hapësirë depoje nuk mund të përmirësohen pas krijimit fillestar (çdo përmirësim këtu do të injorohet gjatë riprovizionimit).
Konfigurimi i hapësirës depoje në S3 ofrohet si një lehtësi dhe nuk është pjesë e testeve automatike që ne ekzekutojmë në travis. Ju lutemi vini re se ruajtja në S3 rekomandohet vetëm për instancat e shpërndara në AWS.
Krijimi . Rruga për në hapësirën e ruajtjes dhe depojen e hapësirave nuk mund të azhurnohet pas krijimit fillestar (çdo azhurnim këtu do të injorohet gjatë riprovizionimit).
Konfigurimi i hapësirës BLOB në S3 ofrohet për lehtësim. Lutemi vini re se ruajtja në S3 rekomandohet vetëm për instancat e shpërndara në 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
# shembuj me një login/fjalëkalim :
# - 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: 1440Më sipër është një shembull konfigurimi Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # një nga "lejo", "lejo një herë" ose "ndalo"Maven konfigurimi. Konfigurimi i cache negativ është opcional dhe do të përfitojë nga vlerat e mësipërme nëse lihet bosh.
Konfigurimi Maven. Konfigurimi i cache negativ (-1) është opcional dhe do të përdorë vlerat e mësipërme nëse nuk përcaktohet.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossKonfigurimi Maven.
Të tre llojet e repository-ve kombinohen me këto vlera të paracaktuara:
_nexus_repos_maven_defaults:
blob_store: default # Vërejtje: nuk mund të përditësohet pasi repository të krijohet
strict_content_validation: true
version_policy: release # release, snapshot ose mixed
layout_policy: strict # strict ose permissive
write_policy: allow_once # një nga "lejo", "lejo një herë" ose "ndalo"
maximum_component_age: -1 # default në gui-në Nexus. Vetëm për proxy
maximum_metadata_age: 1440 # default në gui-në Nexus. Vetëm për proxy
negative_cache_enabled: true # default në gui-në Nexus. Vetëm për proxy
negative_cache_ttl: 1440 # default në gui-në Nexus. Vetëm për proxyDocker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dhe llojet e repo-s yum:
shiko defaults/main.yml për këto opsione:
Repository-t Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dhe yum nga parazgjedhja janë të dyshuara:
Shikoni defaults/main.yml për këto opsione:
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: falseJu lutemi vini re në dukje se mund t'ju nevojitet të aktivizoni disa fusha të sigurisë nëse dëshironi të përdorni lloje të tjera repoje përveç maven. Kjo është false për defaut.
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # e nevojshme për qasje anonime në dockerRealm i Përdoruesve të Largët gjithashtu mund të aktivizohet me
nexus_rut_auth_realm: truedhe kreu mund të konfigurohet duke përcaktuar
nexus_rut_auth_header: "CUSTOM_HEADER"Detyrat e planifikuara
nexus_scheduled_tasks: []
# # Shembulli i detyrës për të kompaktuar blobstore:
# - emri: kompakt-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # opsional
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # të gjitha atributet e detyrës ruhen si vargje nga nexus brendshëm
# # Shembulli i detyrës për të pastruar snapshot-t e maven
# - emri: Pastrimi-snapshot-e-maven
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # opsional
# taskProperties:
# repositoryName: "*" # * për të gjitha repos. Ndryshoni në emrin e një repozitori nëse dëshoni vetëm një specifike
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Shembulli i detyrës për të pastruar manifestet dhe imazhet e papërdorura docker
# - emri: Pastroni manifestet dhe imazhet e papërdorura docker
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # opsional
# taskProperties:
# repositoryName: "*" # * për të gjitha repos. Ndryshoni në emrin e një repozitori nëse dëshoni vetëm një specifike
# # Shembulli i detyrës për të pastruar ngarkesat e paplota docker
# - emri: Pastroni ngarkesat e paplota docker
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # opsional
# taskProperties:
# age: "24" për konfigurim. typeId dhe specifik për detyrëntaskProperties/booleanTaskProperties mund të supozohet ose:
- nga hierarkia e llojeve Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - duke kontrolluar formularin HTML për krijimin e detyrës në shfletuesin tuaj
- nga shikimi i kërkesave AJAX në shfletues kur konfiguroni detyrën manualisht.
Atributet e detyrës duhet të shpallen në bllokun e duhur yaml në varësi të tipit të tyre:
taskPropertiespĂ«r tĂ« gjitha atributet string (p.sh. emrat e repozitoreve, emrat e ruajtjes, periudhat e kohĂ«s âŠ).booleanTaskPropertiespĂ«r tĂ« gjitha atributet logjike (p.sh. kryesisht kutitĂ« e kontrollit nĂ« ndĂ«rfaqen grafike tĂ« detyrĂ«s pĂ«r krijimin e nexusit).
Kopje rezervë
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Shihni definicionin e shprehjeve cron në ndërfaqen për krijimin e detyrave të nexusit
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 # Ruani 4 rotacione rezervë në mënyrë të paracaktuar (aktual + 3 të fundit)Kopjimi rezervë nuk do të konfigurohet derisa të çaktivizoni nexus_backup_configure në e vërtetë.
Në këtë rast, detyra e planifikuar do të konfigurohet për t'u ekzekutuar në Nexus
me intervalin e specifikuar në nexus_backup_cron (normalisht në 21:00 çdo ditë).
Shihni [Shabllonin groovy për këtë detyrë](templates / backup.groovy.j2) për më shumë informacion.
Kjo detyrë e planifikuar nuk varet nga tjerat nexus_scheduled_tasks, të cilat ju
shpallni në playbook-un tuaj.
Nëse dëshironi të rotaciononi/fshini kopjet rezervë, vendosni nexus_backup_rotate: true dhe përcaktoni numrin e kopjeve rezervë që dëshironi të mbani me nexus_backup_keep_rotations (për default 4).
Kur përdorni rotacionin, nëse dëshironi të kurseni hapësirë shtesë disku gjatë procesit të kopjimit,
Mund të vendosni nexus_backup_rotate_first: true. Kjo do të konfiguronte rotacionin paraprak / fshirjen para kopjimit. Për default, rotacioni ndodh pas krijimit të kopjes rezervë. Mbani parasysh, sa më shumë kopje rezervë të vjetra
do të fshihen para se të bëhet kopja aktuale.
Procedura e rikthimit
Ekzekutoni playbook me parametrin -e nexus_restore_point=
(p.sh., 2017-12-17-21-00-00 për 17 dhjetor 2017 në orën 21:00
Fshirja e nexus
Kujdes: kjo do të fshijë plotësisht të dhënat aktuale. Sigurohuni të bëni një kopje rezervë më parë, nëse është e nevojshme
Përdorni variablën nexus_purge, nëse duhet të rifilloni nga fillimi dhe të rivendosni instancën nexus me fshirjen e të gjitha të dhënave.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueNdryshoni fjalëkalimin e administratorit pas instalimit të parë
nexus_default_admin_password: 'admin123'Kjo nuk duhet të ndryshohet në playbook tuaj. Kjo variablë popullon me fjalëkalimin standard të administratorit të Nexus gjatë instalimit fillestar dhe garanton që ne mund ta ndryshojmë fjalëkalimin e administratorit në nexus_admin_password.
Nëse dëshironi të ndryshoni fjalëkalimin e administratorit pas instalimit fillestar, mund ta ndryshoni përkohësisht në fjalëkalimin e vjetër nga linja e komandës. Pas ndryshimit nexus_admin_password në librin tuaj të lojrave mund të ekzekutoni:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordKanal Telegram për Nexus Sonatype:
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , ju lutemi.
ĂfarĂ« depozitash artefaktesh pĂ«rdorni?
Sonatype Nexus falas
Sonatype Nexus me pagesë
Artifactory falas
Artifactory me pagesë
Harbor
Pulp
9 përdorues kanë votuar. 3 përdorës abstenuan.
Burimi: habr.com
