Sonatype Nexus je integrirana platforma, ki omogoča razvijalcem, da proksirajo, shranjujejo in upravljajo odvisnosti Java (Maven), slike Docker, Python, Ruby, NPM, Bower, RPM pakete, gitlfs, Apt, Go, Nuget ter distribuirajo svojo programsko opremo.
Zakaj potrebujemo Sonatype Nexus?
- Za shranjevanje privatnih artefaktov;
- Za predpomnjenje artefaktov, ki se prenašajo iz interneta;
Artefakti, podprti v osnovni različici Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefakti, podprti s strani skupnosti:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Namestitev Sonatype Nexus z uporabo
Zahteve
- Preberite o uporabi ansible na internetu.
- Namestite ansible
pip install ansiblena delovni postaji, kjer se izvaja playbook. - Namestite na delovni postaji, kjer se izvaja playbook.
- Namestite na delovni postaji, kjer se izvaja playbook.
- Ta vloga je bila testirana na CentOS 7, Ubuntu Xenial (16.04) in Bionic (18.04), Debian Jessie in Stretch
jmespathknjiznica mora biti nameščena na delovni postaji, kjer se izvaja playbook. Za namestitev izveditesudo pip install -r requirements.txt- Shrani datoteko playbook (primer spodaj) v datoteko nexus.yml
- Zaženi namestitev nexus
ansible-playbook -i host nexus.yml
Primer ansible-playbook za namestitev nexus brez LDAP z Maven (java), Docker, Python, Ruby, NPM, Bower, RPM in 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: 'Dostop za branje in brskanje po vseh repozitorijih'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Namestitve za company-project'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # maps to the LDAP group
name: developers
description: Vsi razvijalci
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'] }Zaslonske slike:


Spremenljive vloge
Spremenljive vloge
Spremenljive z privzetimi vrednostmi (glej default/main.yml):
Splošne spremenljive
nexus_version: ''
nexus_timezone: 'UTC'Privzeta vloga bo namestila zadnjo razpoložljivo različico Nexus. Različico lahko popravite tako, da spremenite spremenljivko nexus_version. Oglejte si razpoložljive različice na .
Če spremnite različico na novejšo, bo vloga poskusila nadgraditi vaš nameščen Nexus.
Če uporabljate starejšo različico Nexus od najnovejše, se morate prepričati, da ne uporabljate funkcij, ki niso na voljo v nameščenem izdanju (na primer, gostovanje yum repozitorijev je na voljo za Nexus več kot 3.8.0, git lfs repo za Nexus več kot 3.3.0 itd.)
nexus timezone je ime časovnega pasu Java, ki je lahko koristno v kombinaciji s spodaj navedenimi cron izrazi za nexus_scheduled tasks.
Nexus vrata in kontekstna pot
nexus_default_port: 8081
nexus_default_context_path: ' / 'Vrata in kontekstna pot za proces Java povezave. nexus_default_context_path mora vsebovati poševno črto, ko je nastavljena, na primer: nexus_default_context_path: ' /nexus/ '.
Uporabnik in skupina OS Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Uporabnik in skupina, ki se uporabljata za lastništvo datotek Nexus in zagon storitve, bosta ustvarjena z vlogo, če ju ni.
nexus_os_user_home_dir: ' /home/nexus'Dovoli spreminjanje privzetega domačega imenika za uporabnika nexus
Imeniki primerkov Nexus
nexus_installation_dir: ' /opt'
nexus_data_dir: ' /var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary(' /var/nexus-tmp', ' /tmp/nexus') }}"Imeniki Nexus.
nexus_installation_dirvsebuje nameščene izvršljive datotekenexus_data_dirvsebuje vse nastavitve, repozitorije in prenesene artefakte. Prilagojene poti blobstoresnexus_data_dirse lahko nastavi, glej spodajnexus_blobstores.nexus_tmp_dirvsebuje vse začasne datoteke. Privzeta pot za redhat je bila premaknjena iz/tmpda bi se izognili morebitnim težavam z avtomatskimi postopki čiščenja. Glej #168.
Nastavitev uporabe pomnilnika Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"To so privzete nastavitve za Nexus. Prosim, ne spreminjajte teh vrednosti Če niste prebrali in ne razumete, kaj počnejo.
Kot drugo opozorilo, tukaj je odlomek iz zgoraj omenjenega dokumenta:
Ni priporočamo povečevanja pomnilnika JVM heap nad priporočene vrednosti v pokušaju izboljšave zmogljivosti. To lahko v resnici vodi do nasprotnega učinka, zaradi česar pride do nepotrebnega dela operacijskega sistema.
Administratorska koda
nexus_admin_password: 'changeme'Koda za račun 'admin' za nastavitev. To deluje le pri prvi namestitvi privzeto. Prosim, glejte [Spremeni kodo administratorja po prvi namestitvi](# change-admin-password-after-first-install), če jo želite spremeniti kasneje z vlogo.
Močno ne priporočamo shranjevanja svoje kode v nešifriranem besedilu v playbooku, ampak uporabite [šifriranje ansible-vault] () (bodisi vgrajeno ali v ločeno datoteko, naloženo na primer s pomočjo include_vars)
Anonimni dostop je privzeto
nexus_anonymous_access: falsePrivzeti anonimni dostop je izključen. Več o .
Javno ime gostitelja
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsPolno domensko ime in shema (https ali http), po kateri bo primer Nexus dostopen za njegove stranke.
Dostop API za to vlogo
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 }}"Te spremenljivke nadzorujejo, kako se vloga poveže z API Nexus za zagotavljanje.
Samo za napredne uporabnike. Verjetno ne želite spreminjati teh privzetih nastavitev.
Nastavitev povratnega 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: trueNamestite .
Za to je treba namestiti httpd. Opomba: ko je za httpd_setup_enable določenotrue, nexus poveže z 127.0.0.1:8081, s čimer ne je neposredno dostopen preko HTTP-pota 8081 z zunanjim IP-naslovom.
Privzeto uporabljeno ime gostitelja je nexus_public_hostname. Če potrebujete različna imena iz kakršnega koli razloga, lahko nastavite httpd_server_name na drugačno vrednost.
Z httpd_copy_ssl_files: true (privzeto) zgoraj omenjeni certifikati morajo obstajati v vaši playbook direktoriji in bodo kopirani na strežnik ter nastavljeni v apache.
Če želite uporabiti obstoječe certifikate na strežniku, nastavite httpd_copy_ssl_files: false in in dajte naslednje spremenljivke:
# 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 je neobvezen in ga je treba pustiti ne nastavljene, če ne želite konfigurirati datoteke verige
httpd_default_admin_email: "admin@example.com"Nastavite privzeti e-poštni naslov skrbnika
Konfiguracija LDAP
Povezave LDAP in privzeti varnostni domene so onemogočeni
nexus_ldap_realm: false
ldap_connections: [], vsak element izgleda takole:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # uporablja se kot ključ za posodobitev ldap konfiguracije
ldap_protocol: 'ldaps' # ldap ali ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Ali uporabiti certifikate v zaupnem skladišču nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # ali preprosto
ldap_auth_username: 'username' # če je auth = preprosto
ldap_auth_password: 'password' # če je auth = preprosto
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (neobvezno)
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: falsePrimer konfiguracije LDAP za anonimno avtentikacijo (anonimno vezavo), to je tudi "minimalna" konfiguracija:
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Najenostavnejša LDAP konfiguracija'
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'Primer konfiguracije LDAP za preprosto avtentikacijo (z uporabo DSA računa):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP konfiguracija z 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 }}" # bolje je ohranjati gesla v 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: falsePrimer konfiguracije LDAP za preprosto avtentikacijo (z uporabo DSA računa) + skupine, povezane kot vloge:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'LDAP konfiguracija s 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 }}" # bolje je čuvati lozinke u ansible vault-u
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: falsePrimer konfiguracije LDAP za jednostavnu autentifikaciju (uz korišćenje DSA naloga) + grupe, dinamički mapirane kao uloge:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP konfiguracija s 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 }}" # bolje je čuvati lozinke u ansible vault-u
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'Privilegije
nexus_privileges:
- name: all-repos-read # korišćen kao ključ za ažuriranje privilegije
# type: <jedan od application, repository-admin, repository-content-selector, repository-view, script ili wildcard>
description: 'Pristup za čitanje & pretraživanje svim repozitorijumima'
repository: '*'
actions: # mogu biti add, browse, create, delete, edit, read ili * (sve)
- read
- browse
# pattern: obrazac
# domain: domena
# script_name: imeLista za konfiguraciju. Pogledajte dokumentaciju i grafički interfejs da proverite koje varijable treba postaviti u zavisnosti od vrste privilegije.
Ovi elementi se kombinuju sa sledećim podrazumevajućim vrednostima:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readUloge (u okviru Nexusa)
nexus_roles:
- id: Developpers # može se mapirati na id LDAP grupe, takođe korišćen kao ključ za ažuriranje uloge
name: developers
description: Svi programeri
privileges:
- nx-search-read
- all-repos-read
roles: [] # reference na imena drugih ulogaLista za konfiguraciju.
Korisnici
nexus_local_users: []
# - username: jenkins # korišćen kao ključ za ažuriranje
# state: present # podrazumevana vrednost ako nije navedeno, koristi 'absent' za uklanjanje korisnika
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # id ulogeLista lokalnih (ne-LDAP) korisnika/naloga koje treba kreirati u nexusu.
Seznam lokalnih (ne LDAP) uporabnikov/računov za ustvarjanje v Nexus.
nexus_ldap_users: []
# - uporabniško ime: j.doe
# stanje: prisoten
# vloge:
# - "nx-admin"Preslikava Ldap uporabnikov/vlog. Stanje absent odstrani vloge iz obstoječega uporabnika, če že obstaja.
Ldap uporabniki se ne odstranijo. Poskus dodelitve vloge neobstoječemu uporabniku bo povzročil napako.
Izbor vsebine
nexus_content_selectors:
- ime: docker-login
opis: Izbor za privilegij prijave v Docker
izraz_iskanja: format=="docker" and path=~"/v2/"Za več informacij o selektorju vsebine si oglejte .
Da bi uporabljali selektor vsebine, dodajte novo privilegij s type: repository-content-selector in ustreznimcontentSelector
- ime: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
opis: 'Prijava v Docker register'
repozitorij: '*'
dejanja:
- branje
- brskanjeBlobstore in repozitoriji
nexus_delete_default_repos: falseIzbriši repozitorije iz začetne privzete konfiguracije namestitve Nexus. Ta korak se izvede le pri prvi namestitvi (ko nexus_data_dir je bil zaznan prazen).
Odstranjevanje repozitorijev iz izvorne privzete konfiguracije za Nexus. Ta korak se izvede le pri prvi namestitvi (ko nexus_data_dir je prazen).
nexus_delete_default_blobstore: falseIzbriši privzeti blobstore iz začetne privzete konfiguracije namestitve Nexus. To je mogoče storiti le, če nexus_delete_default_repos: true in vsi konfigurirani repozitoriji (glejte spodaj) imajo izrecno blob_store: custom. Ta korak se izvede le pri prvi namestitvi (ko nexus_data_dir je bil zaznan prazen).
Izbriševanje blobshranjevanja (binarnih artefaktov) je privzeto izključeno iz izvirne konfiguracije. Za odstranitev blobshranjevanja (binarnih artefaktov) izključite nexus_delete_default_repos: true. Ta korak se izvede le pri prvi namestitvi (ko nexus_data_dir je prazen).
nexus_blobstores: []
# primer elementa blobstore:
# - ime: separate-storage
# type: file
# pot: /mnt/custom/path
# - ime: s3-blobstore
# type: S3
# config:
# bucket: s3-blobstore
# accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
# secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"za ustvarjanje. Pot do blobstore in repozitorijsko blobstore ni mogoče posodobiti po začetnem ustvarjanju (vsaka posodobitev tukaj bo ignorirana pri ponovnem zagotavljanju).
Konfiguracija blobstore na S3 je zagotovljena kot udobje in ni del avtomatiziranih testov, ki jih izvajamo na travisu. Upoštevajte, da se shranjevanje na S3 priporoča samo za instance, nameščene na AWS.
Ustvarjanje . Pot do blobshranjevanja in repozitorij blobshranjevanja ni mogoče posodobiti po prvotni namestitvi (vsaka posodobitev tukaj bo ignorirana pri ponovni namestitvi).
Konfiguracija shranjevanja BLOB-objektov na S3 se zagotavlja za udobje. Upoštevajte, da se shranjevanje na S3 priporoča samo za instance, nameščene na 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
# пример с логином/паролем :
# - 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: 1440Пример конфигурации выше Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # одно из "allow", "allow_once" или "deny"Maven конфигурация. Конфигурация отрицательного кэша является необязательной и будет по умолчанию использовать вышеуказанные значения, если не указана.
Конфигурация Maven. Конфигурация отрицательного кэша (-1) является необязательной и будет по умолчанию использовать вышеуказанные значения, если не указана.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossКонфигурация Maven.
Все три типа репозитория объединяются со следующими значениями по умолчанию:
_nexus_repos_maven_defaults:
blob_store: default # Примечание : не может быть обновлен, как только репозиторий был создан
strict_content_validation: true
version_policy: release # release, snapshot или mixed
layout_policy: strict # строгий или разрешающий
write_policy: allow_once # одно из "allow", "allow_once" или "deny"
maximum_component_age: -1 # стандартное значение GUI Nexus. Только для прокси
maximum_metadata_age: 1440 # стандартное значение GUI Nexus. Только для прокси
negative_cache_enabled: true # стандартное значение GUI Nexus. Только для прокси
negative_cache_ttl: 1440 # стандартное значение GUI Nexus. Только для проксиТипы репозиториев Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS и yum:
см. defaults/main.yml для этих опций:
Хранилища Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS и yum по умолчанию выключены:
Смотрите defaults/main.yml для этих опций:
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: falseОбратите внимание, что вам может потребоваться включить определенные области безопасности, если вы хотите использовать другие типы репозиториев, кроме maven. Это по умолчанию false
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # требуется для анонимного доступа к dockerRemote User Realm также может быть включена с помощью
nexus_rut_auth_realm: trueи заголовок может быть настроен путем определения
nexus_rut_auth_header: "CUSTOM_HEADER"Запланированные задачи
nexus_scheduled_tasks: []
# # Пример задачи для сжатия blobstore :
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # необязательно
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # все атрибуты задачи хранятся как строки в nexus
# # Пример задачи для удаления maven снимков
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # необязательно
# taskProperties:
# repositoryName: "*" # * для всех репозиториев. Измените на имя репозитория, если вы хотите только конкретный
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Пример задачи для очистки неиспользуемых docker манифестов и изображений
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # необязательно
# taskProperties:
# repositoryName: "*" # * для всех репозиториев. Измените на имя репозитория, если вы хотите только конкретный
# # Пример задачи для очистки неполных загрузок docker
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # необязательно
# taskProperties:
# age: "24" za konfiguraciju. typeId и специфичные для задачиtaskProperties/booleanTaskProperties можно угадать либо:
- из иерархии типов Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - проверяя HTML-форму создания задачи в вашем браузере
- от просмотра запросов AJAX в браузере при ручной настройке задачи.
Свойства задачи должны быть объявлены в правильном блоке yaml в зависимости от их типа:
taskPropertiesдля всех строковых свойств (т. е. имен репозиториев, имен хранилищ, периодов времени …).booleanTaskPropertiesдля всех логических свойств (т. е. в основном чекбоксы в графическом интерфейсе задачи создания нексуса).
Резервные копии
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Смотрите определение cron выражений в GUI создания задач 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 # Хранить 4 ротации резервных копий по умолчанию (текущая + последние 3)Резервное копирование не будет настроено, пока вы не переключите nexus_backup_configure u true.
В этом случае запланированная задача сценария будет настроена для запуска в Nexus
с интервалом, указанным в nexus_backup_cron (по умолчанию 21:00 каждый день).
См. [Шаблон groovy для этой задачи](templates / backup.groovy.j2) для получения подробной информации.
Это запланированное задание не зависит от других nexus_scheduled_tasks, которые вы
объявить в своем playbook.
Если вы хотите ротировать/удалять резервные копии, установите nexus_backup_rotate: true и настройте количество резервных копий, которое вы хотите сохранить с помощью nexus_backup_keep_rotations (по умолчанию 4).
При использовании ротации, если вы хотите сэкономить дополнительное дисковое пространство во время процесса резервного копирования,
Вы можете установить nexus_backup_rotate_first: true. Это настроит предварительное ротирование/удаление перед резервным копированием. По умолчанию ротация происходит после создания резервной копии. Обратите внимание, что в этом случае старые резервные копии
удалятся до того, как текущая резервная копия будет сделана.
Процедура восстановления
Запустите playbook с параметром -e nexus_restore_point=
(например, 2017-12-17-21-00-00 для 17 декабря 2017 в 21:00
Удаление nexus
Предупреждение: это полностью удалит текущие данные. Обязательно сделайте резервную копию заранее, если это необходимо
Используйте переменную nexus_purge, если вам нужно перезапустить с нуля и переустановить экземпляр nexus с удалением всех данных.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueИзмените пароль администратора после первой установки
nexus_default_admin_password: 'admin123'Это не должно быть изменено в вашем playbook. Эта переменная заполняется стандартным паролем администратора Nexus при первой установке и гарантирует, что мы можем изменить пароль администратора на nexus_admin_password.
Если вы хотите изменить пароль администратора после первой установки, вы можете временно изменить его на старый пароль из командной строки. После изменения nexus_admin_password в вашей игровой книге вы можете запустить:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordТелеграм канал по Nexus Sonatype:
Samo registrovani korisnici mogu učestvovati u anketi. , molim vas.
Какими хранилищами артефактов вы пользуетесь?
Sonatype Nexus бесплатный
Sonatype Nexus платный
Artifactory бесплатный
Artifactory платный
Harbor
Pulp
Проголосовали 9 пользователей. Воздержались 3 пользователя.
Izvor: habr.com
