Sonatype Nexus je integrirana platforma preko koje programeri mogu proxy, pohraniti i upravljati Java (Maven) ovisnostima, Docker, Python, Ruby, NPM, Bower slike, RPM paketi, gitlfs, Apt, Go, Nuget i distribuirati svoju softversku sigurnost.
Zašto vam je potreban Sonatype Nexus?
- Za pohranu privatnih artefakata;
- Za predmemoriranje artefakata koji su preuzeti s interneta;
Artefakti podržani u osnovnom Sonatype Nexus paketu:
- Java, Maven (jar)
- Lučki radnik
- Python (pip)
- Rubin (dragulj)
- NPM
- sjenica
- Njam (o/min)
- gitlfs
- Sirov
- Apt (deb)
- Go
- Grumen
Artefakti koje podržava zajednica:
- kompozitor
- Conan
- CPAN
- ELPA
- Kormilo
- P2
- R
Instalacija Sonatype Nexusa pomoću
Zahtjevi
- Pročitajte o korištenju ansiblea na internetu.
- Instalirajte ansible
pip install ansiblena radnoj stanici na kojoj se izvodi playbook. - Postaviti na radnoj stanici na kojoj se izvodi playbook.
- Postaviti na radnoj stanici na kojoj se izvodi playbook.
- Ova uloga je testirana na CentOS 7, Ubuntu Xenial (16.04) i Bionic (18.04), Debian Jessie i Stretch
jmespathKnjižnica mora biti instalirana na radnoj stanici na kojoj se izvodi playbook. Instalirati:sudo pip install -r requirements.txt- Spremite datoteku playbook (primjer u nastavku) u datoteku nexus.yml
- Pokrenite instalaciju nexusa
ansible-playbook -i host nexus.yml
Primjer ansible-playbook za instaliranje nexusa bez LDAP-a s Maven (java), Docker, Python, Ruby, NPM, Bower, RPM i gitlfs spremištima.
---
- 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: 'Read & Browse access to all repos'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Deployments to company-project'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # maps to the LDAP group
name: developers
description: All developers
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # used as key to update
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # role ID here
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. Change nexus_config_yum to true for create 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. Change nexus_config_npm to true for create 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. Change nexus_config_docker to true for create 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. Change nexus_config_bower to true for create 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. Change nexus_config_pypi to true for create 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. Change nexus_config_rubygems to true for create 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. Change nexus_config_gitlfs to true for create gitlfs repository
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu only
# - { 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 only
- { 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'] }Slike:


Promjenjive uloge
Varijable uloga
Varijable sa zadanim vrijednostima (vidi default/main.yml):
Opće varijable
nexus_version: ''
nexus_timezone: 'UTC'Prema zadanim postavkama, uloga će instalirati najnoviju dostupnu verziju Nexusa. Možete popraviti verziju promjenom varijable nexus_version. Dostupne verzije pogledajte na .
Ako prijeđete na noviju verziju, uloga će pokušati ažurirati vašu instalaciju Nexusa.
Ako koristite stariju verziju Nexusa od najnovije, trebali biste osigurati da ne koristite značajke koje nisu dostupne u instaliranom izdanju (na primjer, hosting yum repozitorija dostupan je za nexus više od 3.8.0, git lfs repo za nexus veći od 3.3.0 itd.)
nexus timezone je naziv Java vremenske zone, što može biti korisno u kombinaciji sa sljedećim cron izrazima za nexus_scheduled zadatke.
Nexus port i kontekstni put
nexus_default_port: 8081
nexus_default_context_path: '/'Port i kontekstni put procesa Java veze. nexus_default_context_path mora sadržavati kosu crtu kada je postavljena, npr.: nexus_default_context_path: '/nexus/'.
Nexus OS korisnik i grupa
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Korisnik i grupa koji se koriste za posjedovanje Nexus datoteka i pokretanje usluge stvorit će se ulogom ako ona nedostaje.
nexus_os_user_home_dir: '/home/nexus'Dopusti promjenu zadanog matičnog direktorija za korisnika nexusa
Imenici instanci Nexusa
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Nexus katalozi.
nexus_installation_dirsadrži instalirane izvršne datotekenexus_data_dirsadrži sve konfiguracije, repozitorije i preuzete artefakte. Prilagođene staze blobstoreanexus_data_dirmože se prilagoditi, vidi doljenexus_blobstores.nexus_tmp_dirsadrži sve privremene datoteke. Zadana staza za redhat je premještena s/tmpza prevladavanje potencijalnih problema s automatskim postupcima čišćenja. Vidi #168.
Konfiguriranje korištenja memorije Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Ovo su zadane postavke za Nexus. Molimo nemojte mijenjati ove vrijednosti Ako niste čitali i ne razumiju što rade.
Kao drugo upozorenje, evo izvatka iz gornjeg dokumenta:
Ne preporučuje se povećanje JVM heap memorije iznad preporučenih vrijednosti u pokušaju poboljšanja performansi. To zapravo može imati suprotan učinak, rezultirajući nepotrebnim radom za operativni sustav.
Administratorska lozinka
nexus_admin_password: 'changeme'Lozinka računa "admin" za postavljanje. Ovo radi samo na prvoj zadanoj instalaciji. Pogledajte [Promjena administratorske lozinke nakon prve instalacije](# change-admin-password-after-first-install) ako je želite promijeniti kasnije koristeći ulogu.
Strogo se preporučuje da svoju lozinku ne pohranjujete u jasnom tekstu u priručniku, već da koristite [ansible-vault enkripciju] () (umetnuto ili u zasebnoj datoteci učitanoj s npr. include_vars)
Anonimni pristup prema zadanim postavkama
nexus_anonymous_access: falseAnonimni pristup je prema zadanim postavkama onemogućen. Pročitajte više o .
Javno ime hosta
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsPotpuno kvalificirani naziv domene i shema (https ili http) pod kojom će instanca Nexusa biti dostupna svojim klijentima.
API pristup za ovu ulogu
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 }}"Ove varijable kontroliraju kako se uloga povezuje s Nexus API-jem za dodjelu.
Samo za napredne korisnike. Vjerojatno ne želite promijeniti ove zadane postavke
Postavljanje obrnutog proxyja
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: truePostaviti .
Da biste to učinili morate instalirati httpd. Napomena: kada za httpd_setup_enable postavljena vrijednosttrue, nexus kontakti 127.0.0.1:8081, dakle ne kojima se može izravno pristupiti putem HTTP porta 8081 s vanjske IP adrese.
Zadani naziv hosta koji se koristi je nexus_public_hostname. Ako iz nekog razloga trebate drugačija imena, možete postaviti httpd_server_name s drugačijim značenjem.
С httpd_copy_ssl_files: true (prema zadanim postavkama) gornji certifikati trebali bi postojati u vašem imeniku playbooka i bit će kopirani na poslužitelj i konfigurirani u apacheu.
Ako želite koristiti postojeće certifikate na poslužitelju, instalirajte httpd_copy_ssl_files: false i navedite sljedeće varijable:
# 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 nije obavezno i ne treba ga postaviti ako ne želite prilagoditi datoteku lanca
httpd_default_admin_email: "admin@example.com"Postavite zadanu adresu e-pošte administratora
LDAP konfiguracija
LDAP veze i sigurnosno područje onemogućeni su prema zadanim postavkama
nexus_ldap_realm: false
ldap_connections: [], svaki element izgleda ovako:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # used as a key to update the ldap config
ldap_protocol: 'ldaps' # ldap or ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Wether or not to use certs in the nexus trust store
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # or simple
ldap_auth_username: 'username' # if auth = simple
ldap_auth_password: 'password' # if auth = simple
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (optional)
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: falsePrimjer LDAP konfiguracije za anonimnu provjeru autentičnosti (anonimno vezanje), ovo je također "minimalna" konfiguracija:
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'Primjer LDAP konfiguracije za jednostavnu provjeru autentičnosti (pomoću DSA računa):
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 }}" # better keep passwords in an 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: falsePrimjer LDAP konfiguracije za jednostavnu provjeru autentičnosti (koristeći DSA račun) + grupe mapirane kao uloge:
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 }}" # better keep passwords in an 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: falsePrimjer LDAP konfiguracije za jednostavnu provjeru autentičnosti (koristeći DSA račun) + grupe dinamički mapirane kao uloge:
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 }}" # better keep passwords in an 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'povlastice
nexus_privileges:
- name: all-repos-read # used as key to update a privilege
# type: <one of application, repository-admin, repository-content-selector, repository-view, script or wildcard>
description: 'Read & Browse access to all repos'
repository: '*'
actions: # can be add, browse, create, delete, edit, read or * (all)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: namepopis za postavke. Pogledajte dokumentaciju i GUI kako biste provjerili koje varijable je potrebno postaviti ovisno o vrsti povlastice.
Ovi se elementi kombiniraju sa sljedećim zadanim vrijednostima:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readUloge (unutar Nexusa to znači)
nexus_roles:
- id: Developpers # can map to a LDAP group id, also used as a key to update a role
name: developers
description: All developers
privileges:
- nx-search-read
- all-repos-read
roles: [] # references to other role namespopis za postavke.
Članovi
nexus_local_users: []
# - username: jenkins # used as key to update
# state: present # default value if ommited, use 'absent' to remove user
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # role IDLokalni (ne-LDAP) popis korisnika/računa za izradu u nexusu.
Popis lokalnih (ne-LDAP) korisnika/računa za izradu u Nexusu.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Ldap mapiranje korisnika/uloga. država absent će ukloniti uloge postojećeg korisnika ako već postoji.
Ldap korisnici se ne brišu. Pokušaj postavljanja uloge za nepostojećeg korisnika rezultirat će pogreškom.
Selektori sadržaja
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"Za više informacija o biraču sadržaja pogledajte .
Za korištenje birača sadržaja dodajte novu privilegiju s type: repository-content-selector i relevantancontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Login to Docker registry'
repository: '*'
actions:
- read
- browseBlobstorevi i repozitoriji
nexus_delete_default_repos: falseIzbrišite repozitorije iz početne zadane konfiguracije instalacije nexusa. Ovaj korak se izvršava samo pri prvoj instalaciji (kada nexus_data_dir otkrivena je prazna).
Uklanjanje spremišta iz zadane konfiguracije za Nexus. Ovaj se korak izvodi samo tijekom prve instalacije (kada nexus_data_dir prazan).
nexus_delete_default_blobstore: falseIzbrišite zadani blobstore iz početne zadane konfiguracije instalacije nexusa. To se može učiniti samo ako nexus_delete_default_repos: true i sva konfigurirana spremišta (vidi dolje) imaju eksplicitnu blob_store: custom. Ovaj korak se izvršava samo pri prvoj instalaciji (kada nexus_data_dir otkrivena je prazna).
Uklanjanje blob pohrane (binarni artefakti) onemogućeno je prema zadanim postavkama u početnoj konfiguraciji. Za uklanjanje blob memorije (binarni artefakti), isključite nexus_delete_default_repos: true. Ovaj se korak izvodi samo tijekom prve instalacije (kada nexus_data_dir prazan).
nexus_blobstores: []
# example blobstore item :
# - 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 }}"stvoriti. Put blobstorea i spremište blobstorea ne mogu se ažurirati nakon početnog stvaranja (svako ažuriranje ovdje bit će zanemareno pri ponovnom postavljanju).
Konfiguriranje blobstorea na S3 pruža se kao pogodnost i nije dio automatiziranih testova koje izvodimo na travisu. Imajte na umu da se pohranjivanje na S3 preporučuje samo za instance postavljene na AWS.
Stvaranje . Putanja za pohranjivanje i repozitorij za pohranjivanje ne mogu se ažurirati nakon početnog stvaranja (svako ažuriranje ovdje bit će zanemareno kada se ponovno instalira).
Postavljanje blob pohrane na S3 pruža se kao pogodnost. Imajte na umu da se S3 pohrana preporučuje samo za instance raspoređene na AWS-u.
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: 1440Gore je primjer konfiguracije Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"Maven konfiguracija. Negativna konfiguracija predmemorije nije obavezna i postavit će zadane gornje vrijednosti ako su izostavljene.
Konfiguracija Maven. Negativna konfiguracija predmemorije (-1) nije obavezna i prema zadanim postavkama postavit će gornje vrijednosti ako nije navedena.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossKonfiguracija Maven.
Sve tri vrste repozitorija kombinirane su sa sljedećim zadanim vrijednostima:
_nexus_repos_maven_defaults:
blob_store: default # Note : cannot be updated once the repo has been created
strict_content_validation: true
version_policy: release # release, snapshot or mixed
layout_policy: strict # strict or permissive
write_policy: allow_once # one of "allow", "allow_once" or "deny"
maximum_component_age: -1 # Nexus gui default. For proxies only
maximum_metadata_age: 1440 # Nexus gui default. For proxies only
negative_cache_enabled: true # Nexus gui default. For proxies only
negative_cache_ttl: 1440 # Nexus gui default. For proxies onlyVrste spremišta Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS i yum:
vidjeti defaults/main.yml za ove opcije:
Spremišta Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS i yum onemogućena su prema zadanim postavkama:
Vidjeti defaults/main.yml za ove opcije:
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: falseImajte na umu da ćete možda morati omogućiti određene sigurnosne opsege ako želite koristiti druge vrste repozitorija osim maven-a. Ovo je prema zadanim postavkama netočno
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # required for docker anonymous accessRemote User Realm također se može omogućiti pomoću
nexus_rut_auth_realm: truea naslov se može prilagoditi definiranjem
nexus_rut_auth_header: "CUSTOM_HEADER"Planirani zadaci
nexus_scheduled_tasks: []
# # Example task to compact blobstore :
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # optional
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # all task attributes are stored as strings by nexus internally
# # Example task to purge maven snapshots
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # optional
# taskProperties:
# repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Example task to purge unused docker manifest and images
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # optional
# taskProperties:
# repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one
# # Example task to purge incomplete docker uploads
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # optional
# taskProperties:
# age: "24" za postavke. typeId i specifičan zadataktaskProperties/booleanTaskProperties možete pogoditi ili:
- iz hijerarhije Java tipova
org.sonatype.nexus.scheduling.TaskDescriptorSupport - provjeravajući obrazac za izradu HTML zadatka u vašem pregledniku
- od gledanja AJAX zahtjeva u pregledniku prilikom ručnog postavljanja zadatka.
Svojstva zadatka moraju biti deklarirana u ispravnom yaml bloku ovisno o njihovoj vrsti:
taskPropertiesza sva svojstva niza (tj. imena spremišta, imena spremišta, vremenska razdoblja...).booleanTaskPropertiesza sva logička svojstva (tj. uglavnom potvrdne okvire u GUI zadatka stvaranja nexusa).
Sigurnosne kopije
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # See cron expressions definition in nexus create task 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 # Keep 4 backup rotation by default (current + last 3)Sigurnosno kopiranje neće biti konfigurirano dok se ne prebacite nexus_backup_configure в true.
U ovom slučaju, zakazani zadatak skripte bit će konfiguriran za izvođenje na Nexusu
u intervalu navedenom u nexus_backup_cron (zadano 21:00 svaki dan).
Pogledajte [groovy predložak za ovaj zadatak](templates/backup.groovy.j2) za detalje.
Ovaj planirani zadatak je neovisan o ostalima nexus_scheduled_taskskoji ti
najavite u svojoj knjižici.
Ako želite rotirati/brisati sigurnosne kopije, instalirajte nexus_backup_rotate: true i konfigurirajte broj sigurnosnih kopija pomoću kojih želite spremiti nexus_backup_keep_rotations (zadano 4).
Kada koristite rotaciju, ako želite uštedjeti dodatni prostor na disku tijekom procesa izrade sigurnosne kopije,
Možete instalirati nexus_backup_rotate_first: true. Ovo će konfigurirati prethodnu rotaciju/brisanje prije sigurnosne kopije. Prema zadanim postavkama, rotacija se događa nakon stvaranja sigurnosne kopije. Imajte na umu da u ovom slučaju stare sigurnosne kopije
će se izbrisati prije izrade trenutne sigurnosne kopije.
Procedura obnavljanja
Pokrenite playbook s parametrom -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(na primjer, 2017-12-17-21-00-00 za 17. prosinca 2017. u 21:00
Uklanjanje nexusa
Upozorenje: ovo će u potpunosti izbrisati vaše trenutne podatke. Svakako napravite sigurnosnu kopiju ranije ako je potrebno
Koristite varijablu nexus_purgeako trebate ponovno pokrenuti ispočetka i ponovno instalirati nexus instancu sa svim uklonjenim podacima.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=truePromijenite administratorsku lozinku nakon prve instalacije
nexus_default_admin_password: 'admin123'Ovo se ne bi trebalo mijenjati u vašem priručniku. Ova se varijabla popunjava zadanom administratorskom lozinkom Nexusa prilikom prve instalacije i osigurava da možemo promijeniti administratorsku lozinku u nexus_admin_password.
Ako želite promijeniti administratorsku lozinku nakon prve instalacije, možete je privremeno promijeniti u staru lozinku iz naredbenog retka. Nakon promjene nexus_admin_password u svom playbooku možete pokrenuti:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordTelegram kanal na Nexus Sonatype:
U anketi mogu sudjelovati samo registrirani korisnici. , molim.
Koja spremišta artefakata koristite?
Sonatype Nexus je besplatan
Sonatype Nexus plaćen
Artifactory je besplatan
Artifactory plaćeno
Luka
Pulpa
Glasovalo je 9 korisnika. Suzdržana su bila 3 korisnika.
Izvor: www.habr.com
