Sonatype Nexus â njĂ« platformĂ« e integruar qĂ« lejon zhvilluesit tĂ« proksinojnĂ«, ruajnĂ« dhe menaxhojnĂ« varĂ«sitĂ« Java (Maven), imazhet Docker, Python, Ruby, NPM, Bower, RPM paketat, gitlfs, Apt, Go, Nuget, si dhe tĂ« shpĂ«rndajnĂ« softuerin e tyre.
Pse nevojitet Sonatype Nexus?
- Për ruajtjen e artefakteve private;
- Për përkohësimin e artefakteve që shkarkohen nga interneti;
Artefaktet e mbështetura në paketën 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ë instalohet në stacionin e punës ku ekzekutohet playbook. Për ta instaluar kryenisudo pip install -r requirements.txt- Ruani skedarin e playbook (shembulli më poshtë) në skedarin nexus.yml
- Nisni instalimin e nexus
ansible-playbook -i host nexus.yml
Shembulli ansible-playbook për instalimin e nexus pa LDAP me repozitoret Maven (java), Docker, Python, Ruby, NPM, Bower, RPM dhe 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: 'Lexo & shfleto në të gjitha repos'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Zbatimet për projektin e kompanisë'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # përshtatet me grupin LDAP
name: developers
description: Të gjithë zhvilluesit
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # përdoret si çelës për përditësim
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID e rolit këtu
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. Ndryshoni nexus_config_yum në true për krijimin e depozitës 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. Ndryshoni nexus_config_npm në true për krijimin e depozitës 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. Ndryshoni nexus_config_docker në true për krijimin e depozitës 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. Ndryshoni nexus_config_bower në true për krijimin e depozitës 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. Ndryshoni nexus_config_pypi në true për krijimin e depozitës 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. Ndryshoni nexus_config_rubygems në true për krijimin e depozitës 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. Ndryshoni nexus_config_gitlfs në true për krijimin e depozitës gitlfs
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu vetëm
# - { 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 vetëm
- { 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'] }Capturat:


Variablat e rolit
Variablat e Rolit
Variablat me vlera të paracaktuara (shih. default/main.yml):
Variablat e përgjithshme
nexus_version: ''
nexus_timezone: 'UTC'Në tërësi, roli do të vendosë versionin më të fundit të disponueshëm të Nexus. Ju mund ta korrigjoni versionin duke ndryshuar variablën nexus_version. Shihni versionet e disponueshme në .
Nëse ndryshoni versionin në një 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 ai më i fundit, duhet të siguroheni që të mos përdorni funksione që nuk janë të disponueshme në versionin e instaluar (për shembull, vendosja e depozitarëve yum është e disponueshme për nexus më të lartë se 3.8.0, depo git lfs për nexus më të lartë se 3.3.0 etj.)
nexus timezone â Ă«shtĂ« emri i zonĂ«s sĂ« kohĂ«s Java, e cila mund tĂ« jetĂ« e dobishme nĂ« lidhje me shprehjet cron tĂ« dhĂ«na pĂ«r detyrat e planifikuara tĂ« nexus.
Porti dhe rruga kontekstuale e Nexus-it
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ë slash, kur është vendosur, për shembull: nexus_default_context_path: '/nexus/'.
Këndi dhe grupi i OS për Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Përdoruesi dhe grupi të cilët do të përdoren për të zotëruar skedarët e Nexus-it dhe për të ekzekutuar shërbimin do të krijohen nga roli, nëse mungojnë.
nexus_os_user_home_dir: '/home/nexus'Lejo të ndryshohet katalogu i shtëpisë për përdoruesin nexus
Katalogët 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') }}"Katalogët e Nexus.
nexus_installation_dirpërmban skedarët ekzekutivë të instaluarnexus_data_dirpërmban të gjithë konfigurimin, depozitat dhe artefaktet e ngarkuara. Rrugët e personalizuara për blobstoresnexus_data_dirmund të konfigurohen, shih më poshtënexus_blobstores.nexus_tmp_dirpërmban të gjithë skedarët e përkohshëm. Rruga e parazgjedhur për redhat është zhvendosur nga/tmppër të tejkaluar problemet e mundshme me procedurat automatike të pastrimit. Shihni #168.
Konfigurimi i përdorimit të memories Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Këto janë cilësimet e paracaktuara për Nexus. Ju lutem, mos ndryshoni këto vlera Nëse nuk e keni lexuar dhe nuk kuptoni se çfarë bëjnë ato.
Si një paralajmërim të dytë, ja një shfletim nga dokumenti të lartpërmendur:
Nuk është e rekomanduar të rritet memoria JVM heap përtej vlerave të rekomanduara në një përpjekje për të rritur performancën. Kjo në të vërtetë mund të ketë efektin e kundërt, duke sjellë punë të panevojshme për sistemin operativ.
Fjalëkalimi i administratorit
nexus_admin_password: 'changeme'Fjalëkalimi i llogarisë 'admin' për konfigurim. Kjo funksionon vetëm në instalimin e parë sipas parazgjedhjes. Ju lutemi, shihni [Ndrysho fjalëkalimin e administratorit pas instalimit të parë](# change-admin-password-after-first-install), nëse dëshironi ta ndryshoni më vonë me rolin.
Rrënjësisht nuk rekomandohet të ruani fjalëkalimin tuaj në tekst të hapur në playbook, por të përdorni [enkriptimin ansible-vault] () (ose të integruar ose në një skedë të veçantë, e ngarkuar për shembull me include_vars)
Qasje anonime sipas parazgjedhjes
nexus_anonymous_access: falseQasja anonime sipas parazgjedhjes është e çaktivizuar. Më shumë për .
Emri publik i hostit
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsEmri i plotë i domain-it dhe skema (https ose http), nëpërmjet të cilës instanca e Nexus do të jetë e aksesueshme për klientët e saj.
Qasja 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ë e Nexus për ofrim.
Vetëm për përdoruesit e avancuar. Ndërsa, ka të ngjarë që të mos dëshironi të ndryshoni këto konfigurime sipas parazgjedhjes
Konfigurimi i proxy-ut 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 httpd_setup_enable është vendosur nëtrue, nexus lidhet me 127.0.0.1:8081, kështu që jo duke qenë direkt e aksesueshme përmes portit HTTP 8081 me adresën IP të jashtme.
Emri i hostit i përdorur sipas parazgjedhjes ë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.
D httpd_copy_ssl_files: true (sipas parazgjedhjes) certifikatat e përmendura më sipër duhet të ekzistojnë në direktorinë tuaj të playbook dhe do të kopjohen në server dhe do të konfigurohen në apache.
Nëse dëshironi të përdorni certifikatat ekzistuese në server, vendosni httpd_copy_ssl_files: false dhe ofroni variablat e mëposhtme:
# 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 }}"lokacioni_i_certifikatit_ssl_httpd është opsional dhe duhet të lëshohet pa vendosje nëse nuk dëshironi të konfiguroni skedarin e zinxhirit
httpd_default_admin_email: "admin@example.com"Vendosni adresën e emailit të administratorit si të paracaktuar
Konfigurimi LDAP
Lidhjet LDAP dhe zona e sigurisë janë të çaktivizuara për parazgjedhje
nexus_ldap_realm: false
ldap_connections: [], çdo element duket si më poshtë:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # përdoret si një çelës për të përditësuar konfigurimin e ldap
ldap_protocol: 'ldaps' # ldap ose ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Nëse do të përdoren certifikata në dyqanin e besueshëm të nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # ose simple
ldap_auth_username: 'username' # nëse auth = simple
ldap_auth_password: 'password' # nëse auth = simple
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 autentifikim anonim (për lidhje të anonimit), është gjithashtu një konfigurim "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 autentifikim të 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ë ruani fjalëkalimet në një 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: falseShembulli i konfigurimit LDAP për autentifikim të thjeshtë (duke përdorur një llogari DSA) + grupe, të mapuara si role:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'LDAP konfigurimi 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ë 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 autentifikim të thjeshtë (duke përdorur llogarinë DSA) + grupe, të caktuara dinamikisht si role:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP konfigurimi 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ë 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_map_groups_as_roles_type: 'dynamic'
ldap_user_memberof_attribute: 'memberOf'Privilegjet
nexus_privileges:
- name: all-repos-read # përdoret si çelësi për të përditësuar një privilegj
# type:
description: 'Qasje për Të Lexuar & Shfletuar në të gjitha repo'
repository: '*'
actions: # mund të jetë add, browse, create, delete, edit, read ose * (të gjitha)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: emriLista për konfigurim. Shikoni dokumentacionin dhe ndërfaqen grafike për të verifikuar cilat variabla duhet të vendosen në varësi të llojit të privilegjit.
Këto elemente bashkohen me vlerat e mëposhtme si të dhëna:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRolet (brenda Nexus nënkuptohet)
nexus_roles:
- id: Developpers # mund të mapohet në një id grupi LDAP, gjithashtu përdoret si çelësi 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 emra të tjerë roleshLista për konfigurim.
Përdoruesit
nexus_local_users: []
# - username: jenkins # përdoret si çelësi për të përditësuar
# state: present # vlera e paracaktuar nëse mungon, përdorni 'absent' për të hequr përdorues
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # id roliLista e përdoruesve/llogarive lokale (jo-LDAP) për t'u krijuar në nexus.
Lista e përdoruesve/llogarive lokale (jo LDAP) për krijimin në Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Duke mapuar përdoruesit/rolet Ldap. Gjendja mungon heq rolet nga një përdorues ekzistues, nëse ai tashmë ekziston.
Përdoruesit Ldap nuk hiqen. Një përpjekje për të caktuar 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: Selector për privilegjin e hyrjes Docker
search_expression: format=="docker" and path=~"/v2/"Për më shumë informacion rreth selektorit të përmbajtjes shih .
Për të përdorur selektorin e përmbajtjes, shtoni një privilegj të ri me type: repository-content-selector dhe përkatësincontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Hyrje në regjistrin Docker'
repository: '*'
actions:
- read
- browseBlobstore dhe repo
nexus_delete_default_repos: falseFshij repo nga konfigurimi fillestar default i instalimit të nexus. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është zbuluar i zbrazët).
Fshirja e repo nga konfigurimi fillestar default për Nexus. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është i zbrazët).
nexus_delete_default_blobstore: falseFshij blobstore-në e default nga konfigurimi fillestar i instalimit të nexus. Kjo mund të bëhet vetëm nëse nexus_delete_default_repos: true dhe të gjitha repo të konfiguruara (shih më poshtë) kanë një blob_store: custom. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është zbuluar i zbrazët).
Fshirja e blobstore (artifakteve binare) është e çaktivizuar siç parashihet nga konfigurimi fillestar. Për të fshirë blobstore (artifakte binare) çaktivizoni nexus_delete_default_repos: true. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është i zbrazët).
nexus_blobstores: []
# shembull i blobstore-it :
# - 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 }}"për të krijuar. Një rrugë për blobstore dhe një blobstore repo nuk mund të përditësohen pas krijimit fillestar (çdo përditësim këtu do të injorohet gjatë riprovizionimit).
Konfigurimi i blobstore në S3 ofrohet si një lehtësi dhe nuk është pjesë e testeve automatike që ne realizojmë në travis. Ju lutem vini re se ruajtja në S3 rekomandohet vetëm për instancat e shpërndara në AWS.
Krijimi . Rrugët për blobstore dhe repo nuk mund të përditësohen pas krijimit fillestar (çdo përditësim këtu do të injorohet gjatë riprovizionimit).
Konfigurimi i blobstore të BLOB-obiektave në S3 ofrohet për lehtësi. Ju lutem 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
- name: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'Më sipër është një shembull konfigurimi Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # një nga "allow", "allow_once" ose "deny"Maven konfigurimi. Konfigurimi i keshit negativ është opcional dhe do të përdorë vlerat e mësipërme nëse lihet pa të.
Konfigurimi Maven. Konfigurimi i keshit negativ (-1) është opcional dhe do të përdorë automatikisht vlerat e mësipërme, nëse nuk specifikohet.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossKonfigurimi Maven.
Të tre llojet e repo-it kombinohen me këto vlera të paracaktuara:
_nexus_repos_maven_defaults:
blob_store: default # Shënim: nuk mund të përditësohet pasi repo të jetë krijuar
strict_content_validation: true
version_policy: release # release, snapshot ose mixed
layout_policy: strict # strict ose permissive
write_policy: allow_once # një nga "allow", "allow_once" ose "deny"
maximum_component_age: -1 # standart i GUI Nexus. Vetëm për proxy
maximum_metadata_age: 1440 # standart i GUI Nexus. Vetëm për proxy
negative_cache_enabled: true # standart i GUI Nexus. Vetëm për proxy
negative_cache_ttl: 1440 # standart i GUI Nexus. Vetëm për proxyLlojet e depozitave Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dhe yum:
shih defaults/main.yml për këto opsione:
Depozitat Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dhe yum të paracaktuara janë të çaktivizuara:
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: falseVini re se mund të nevojitet të aktivizoni disa zona sigurie nëse dëshironi të përdorni lloje të tjera depozitash përveç maven. Kjo është e çaktivizuar nga e drejta.
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # e kërkuar për aksesin anonim në dockerRealm-i i përdoruesit të largët gjithashtu mund të aktivizohet nga
nexus_rut_auth_realm: truedhe kreu mund të konfigurohet duke përcaktuar
nexus_rut_auth_header: "CUSTOM_HEADER"Detyrat e planifikuara
nexus_scheduled_tasks: []
# # Shembuj detyre për të kompaktuar blobstore:
# - emri: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # opsionale
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # të gjitha atributet e detyrës ruhen si strings nga nexus brenda
# # Shembuj detyre për të pastruar snapshot-ët maven
# - emri: Pastroni-snapshot-ët-maven
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # opsionale
# taskProperties:
# repositoryName: "*" # * për të gjitha repos. Ndryshoni në emrin e një repository nëse dëshironi vetëm një të caktuar
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Shembuj detyre për të pastruar manifestet dhe imazhet e pa përdorura docker
# - emri: Pastroni manifestet dhe imazhet e pa përdorura docker
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # opsionale
# taskProperties:
# repositoryName: "*" # * për të gjitha repos. Ndryshoni në emrin e një repository nëse dëshironi vetëm një të caktuar
# # Shembuj detyre për të pastruar ngarkesat docker të papërfunduara
# - emri: Pastroni ngarkesat docker të papërfunduara
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # opsionale
# taskProperties:
# age: "24" për konfigurim. typeId dhe specifike për detyrëntaskProperties/booleanTaskProperties mund të supozohet ose:
- nga hierarkia e llojeve Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - duke verifikuar formularin HTML për krijimin e detyrës në shfletuesin tuaj
- nga shikimi i kërkesave AJAX në shfletues gjatë konfigurimit manual të detyrës.
Atributet e detyrës duhet të shpallen në blokun e duhur yaml në varësi të llojit të tyre:
taskPropertiespĂ«r tĂ« gjitha atributet e tipit string (p.sh. emrat e repos, emrat e blobstore, periudhat e kohĂ«s âŠ).booleanTaskPropertiespĂ«r tĂ« gjitha atributet logjike (p.sh. kryesisht kutitĂ« e kontrollit nĂ« ndĂ«rfaqen grafike pĂ«r krijimin e detyrĂ«s nexus).
Kopje të sigurisë
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Shikoni definimin e shprehjeve cron në ndërfaqen e krijimit të detyrës 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 # Ruani 4 rotacione të kopjeve siç është standard (aktuale + 3 të fundit)Kopjimi i sigurisë nuk do të configurehet derisa të kaloni nexus_backup_configure në true.
Në këtë rast, detyra e planifikuar do të configurehet për të ekzekutuar në Nexus
në intervalin e specifikuar në nexus_backup_cron (në mënyrë të parazgjedhur 21:00 çdo ditë).
Shihni [Shablloni groovy për këtë detyrë](templates \/ backup.groovy.j2) për detaje të tjera.
Ky caktim i detyrës nuk varet nga të tjerët nexus_scheduled_tasks, që ju
shpallni në playbook tuaj.
Nëse dëshironi të rrotulloni\/fshini kopjet, vendosni nexus_backup_rotate: true dhe vendosni numrin e kopjeve që dëshironi të ruani me nexus_backup_keep_rotations (në mënyrë standarde 4).
Kur përdorni rrotullimin, 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ë konfigurojë rrotullimin e parakohshëm/faqen përpara kopjimit. Në mënyrë standarde, rrotullimi ndodh pas krijimit të kopjes rezervë. Kujdes, në këtë rast, kopjet e vjetra
do të fshihen para se të bëhet kopja aktuale.
Procedura e rikuperimit
Nisni playbook me parametrin -e nexus_restore_point=
(p.sh., 2017-12-17-21-00-00 për 17 dhjetor 2017 në 21:00
Fshirja e nexus
Kujdes: kjo do të fshijë plotësisht të dhënat aktuale. Sigurohuni që të bëni një kopje rezervë më parë, nëse është e nevojshme
Përdorni variablën nexus_purge, nëse ju nevojitet të rinisni nga fillimi dhe të rinstaloni instancën e nexus me fshirjen e të dhënave të gjitha.
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-in tuaj. Ky variabël mbushet me fjalëkalim standard të administratorit të Nexus gjatë instalimit të parë dhe garanton që ne mund të ndryshojmë fjalëkalimin e administratorit në nexus_admin_password.
Nëse dëshironi të ndryshoni fjalëkalimin e administratorit pas instalimit të parë, mund ta ndryshoni përkohësisht në fjalëkalimin e vjetër nga komandat e linjës. Pas ndryshimit nexus_admin_password në playbook-un tuaj mund të nisni:
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 lutem.
Cilat depo artefaktesh po përdorni?
Sonatype Nexus falas
Sonatype Nexus me pagesë
Artifactory falas
Artifactory me pagesë
Harbur
Pulp
Kanë votuar 9 përdorues. Shtyhën 3 përdorues.
Burimi: habr.com
