Sonatype Nexus – integrovaná platforma, která umožňuje vývojářům proxy, ukládat a spravovat závislosti Java (Maven), obrazy Docker, Python, Ruby, NPM, Bower, RPM balíčky, gitlfs, Apt, Go, Nuget a také distribuovat svůj software.
Proč je Sonatype Nexus potřebný?
- Pro ukládání soukromých artefaktů;
- Pro ukládání artefaktů, které se stahují z internetu;
Artefakty podporované v základním balení Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Artefakty podporované komunitou:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Instalace Sonatype Nexus pomocí
Požadavky
- Přečtěte si o použití ansible na internetu.
- Nainstalujte ansible
pip install ansiblena pracovní stanici, kde bude playbook spuštěn. - Nainstalujte na pracovní stanici, kde bude playbook spuštěn.
- Nainstalujte na pracovní stanici, kde bude playbook spuštěn.
- Tato role byla testována na CentOS 7, Ubuntu Xenial (16.04) a Bionic (18.04), Debian Jessie a Stretch
jmespathknihovna musí být nainstalována na pracovní stanici, kde bude playbook spuštěn. Pro instalaci spusťtesudo pip install -r requirements.txt- Uložte soubor playbook (příklad níže) do souboru nexus.yml
- Spusťte instalaci nexus
ansible-playbook -i host nexus.yml
Příklad ansible-playbook pro instalaci nexus bez LDAP s Maven (java), Docker, Python, Ruby, NPM, Bower, RPM a gitlfs.
---
- name: Nexus
hosts: nexus
become: yes
vars:
nexus_timezone: 'Asie/Omsk'
nexus_admin_password: "admin123"
nexus_public_hostname: 'apatsev-nexus-playbook'
httpd_setup_enable: false
nexus_privileges:
- name: all-repos-read
description: 'Přístup k procházení a čtení všech repozitářů'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Nasazení do company-project'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # odpovídá skupině LDAP
name: developers
description: Všichni vývojáři
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # používá se jako klíč pro aktualizaci
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID role zde
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. Změňte nexus_config_yum na true pro vytvoření yum repozitáře
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. Změňte nexus_config_npm na true pro vytvoření npm repozitáře
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. Změňte nexus_config_docker na true pro vytvoření docker repozitáře
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. Změňte nexus_config_bower na true pro vytvoření bower repozitáře
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. Změňte nexus_config_pypi na true pro vytvoření pypi repozitáře
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. Změňte nexus_config_rubygems na true pro vytvoření rubygems repozitáře
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. Změňte nexus_config_gitlfs na true pro vytvoření gitlfs repozitáře
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu pouze
# - { 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 pouze
- { 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'] }Snímky obrazovky:


Proměnné rolí
Role Variables
Proměnné s výchozími hodnotami (viz default/main.yml):
Obecné proměnné
nexus_version: ''
nexus_timezone: 'UTC'Výchozí role nastaví poslední dostupnou verzi Nexus. Můžete opravit verzi změnou proměnné nexus_version. Zobrazte dostupné verze na .
Pokud změníte verzi na novější, pokusí se role aktualizovat vaši nainstalovanou instanci Nexus.
Pokud používáte starší verzi Nexus než poslední, měli byste se ujistit, že nepoužíváte funkce, které nejsou dostupné ve vaší nainstalované verzi (např. hosting yum repozitářů je dostupný pro Nexus vyšší než 3.8.0, git lfs repo pro Nexus vyšší než 3.3.0 atd.)
nexus timezone — to je název časového pásma Java, který může být užitečný spolu s níže uvedenými výrazy cron pro nexus_scheduled tasks.
Port Nexus a kontextová cesta
nexus_default_port: 8081
nexus_default_context_path: '/'Port a kontextová cesta procesu Java spojení. nexus_default_context_path musí obsahovat lomítko, když je nastavena, např.: nexus_default_context_path: '/nexus/'.
Uživatel a skupina OS Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Uživatel a skupina používané pro vlastnictví souborů Nexus a spuštění služby budou vytvořeny rolí, pokud neexistují.
nexus_os_user_home_dir: '/home/nexus'Povolit změnu výchozího domácího adresáře pro uživatele nexus
Adresáře instancí Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Adresáře Nexus.
nexus_installation_dirobsahuje nainstalované spustitelné souborynexus_data_dirobsahuje veškerou konfiguraci, repozitáře a stažené artefakty. Vlastní cesty blobstoresnexus_data_dirmohou být nastaveny, viz níženexus_blobstores.nexus_tmp_dirobsahuje všechny dočasné soubory. Výchozí cesta pro RedHat byla přesunuta z/tmpkvůli překonání potenciálních problémů s automatickými procedurami čištění. Viz #168.
Nastavení užití paměti Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"To jsou výchozí nastavení pro Nexus. Prosím, neměňte tyto hodnoty Pokud jste nepřečetli a nechápete, co dělají.
Jako druhé varování, zde je úryvek z výše uvedeného dokumentu:
Nedoporučuje se zvyšovat paměť JVM heap nad doporučené hodnoty ve snaze zvýšit výkon. To může ve skutečnosti mít opačný efekt a vést k nadměrnému zatížení operačního systému.
Heslo administrátora
nexus_admin_password: 'changeme'Heslo účtu „admin“ pro nastavení. To funguje pouze při první instalaci podle výchozího nastavení.. Pro změnu hesla později pomocí role, prosím, viz [Změnit heslo administrátora po první instalaci](# change-admin-password-after-first-install).
Důrazně se nedoporučuje uchovávat své heslo v otevřeném textu v playbooku a použít [šifrování ansible-vault] () (buď integrované nebo v samostatném souboru, načteném například pomocí include_vars).
Anonymní přístup je ve výchozím nastavení
nexus_anonymous_access: falseAnonymní přístup je ve výchozím nastavení vypnut. Více o .
Veřejné jméno hostitele
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsÚplné doménové jméno a schéma (https nebo http), podle kterého bude instance Nexus dostupná pro své klienty.
API přístup pro tuto roli
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 }}"Tyto proměnné řídí, jak se role připojuje k API Nexus pro poskytování.
Pouze pro pokročilé uživatele. S největší pravděpodobností nechcete měnit tyto výchozí nastavení.
Nastavení reverzního proxy
httpd_setup_enable: false
httpd_server_name: "{{ nexus_public_hostname }}"
httpd_default_admin_email: "admin@example.com"
httpd_ssl_certificate_file: 'files/nexus.vm.crt'
httpd_ssl_certificate_key_file: 'files/nexus.vm.key'
# httpd_ssl_certificate_chain_file: "{{ httpd_ssl_certificate_file }}"
httpd_copy_ssl_files: trueNainstalujte .
K tomu je potřeba nainstalovat httpd. Poznámka: když je httpd_setup_enable nastaveno natrue, nexus se propojí s 127.0.0.1:8081, což znamená ne být přímo přístupný přes HTTP port 8081 z externího IP adresy.
Výchozí jméno hostitele je nexus_public_hostname. Pokud potřebujete různá jména z jakéhokoli důvodu, můžete nastavit httpd_server_name s jinou hodnotou.
S httpd_copy_ssl_files: true (výchozí) výše uvedené certifikáty musí existovat ve vaší složce playbook a budou zkopírovány na server a nastaveny v apache.
Pokud chcete použít existující certifikáty na serveru, nastavte httpd_copy_ssl_files: false a poskytněte následující proměnné:
# 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 }}"umístění_souboru_ssl_cert_chain_file_httpd je volitelný a měl by být ponechán nezvolený, pokud nechcete konfigurovat soubor řetězce
httpd_default_admin_email: "admin@example.com"Nastavit výchozí e-mailovou adresu administrátora
Konfigurace LDAP
Spojení LDAP a výchozí bezpečnostní oblast jsou zakázány
nexus_ldap_realm: false
ldap_connections: [], každý prvek vypadá takto:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # používá se jako klíč pro aktualizaci konfigurace ldap
ldap_protocol: 'ldaps' # ldap nebo ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Zda používat certifikáty v úložišti důvěry nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # nebo simple
ldap_auth_username: 'username' # pokud auth = simple
ldap_auth_password: 'password' # pokud auth = simple
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (volitelné)
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: falsePříklad konfigurace LDAP pro anonymní autentizaci (anonymní vazba), to je také "minimální" konfigurace:
nexus_ldap_realm: true
ldap_connection:
- ldap_name: 'Nejjednodušší LDAP konfigurace'
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'Příklad konfigurace LDAP pro jednoduchou autentizaci (s použitím DSA účtu):
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP konfigurace 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 }}" # lépe uchovávejte hesla v trezoru 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: falsePříklad konfigurace LDAP pro jednoduchou autentizaci (s použitím DSA účtu) + skupiny mapované jako role:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'Konfigurace LDAP 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 }}" # je lepší uchovávat hesla v ansible trezoru
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: falsePříklad konfigurace LDAP pro jednoduchou autentizaci (použití účtu DSA) + skupiny dynamicky mapované jako role:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Konfigurace LDAP 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 }}" # je lepší uchovávat hesla v ansible trezoru
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'Oprávnění
nexus_privileges:
- name: all-repos-read # použito jako klíč pro aktualizaci oprávnění
# type: <jeden z application, repository-admin, repository-content-selector, repository-view, script nebo wildcard>
description: 'Přístup pro čtení a procházení ke všem repo'
repository: '*'
actions: # může být add, browse, create, delete, edit, read nebo * (všechno)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameSeznam pro konfiguraci. Podívejte se na dokumentaci a grafické uživatelské rozhraní, abyste zkontrolovali, které proměnné by měly být nastaveny v závislosti na typu oprávnění.
Tyto prvky se kombinují s následujícími výchozími hodnotami:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRole (ve smyslu uvnitř Nexus)
nexus_roles:
- id: Developpers # může mapovat na ID skupiny LDAP, také použito jako klíč pro aktualizaci role
name: developers
description: Všichni vývojáři
privileges:
- nx-search-read
- all-repos-read
roles: [] # odkazy na názvy dalších rolíSeznam pro konfiguraci.
Uživatelé
nexus_local_users: []
# - username: jenkins # použito jako klíč pro aktualizaci
# state: present # výchozí hodnota, pokud je vynecháno, použijte 'absent' k odstranění uživatele
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # ID roleMístní (ne-LDAP) uživatelé/účty seznam pro vytvoření v nexus.
Seznam místních (ne LDAP) uživatelů/účtů pro vytvoření v Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Mapování uživatelů/rolí LDAP. Stav absent odebere role ze stávajícího uživatele, pokud již existuje.
Uživatelé LDAP nejsou odstraňováni. Pokus o přiřazení role k neexistujícímu uživateli povede k chybě.
Selektory obsahu
nexus_content_selectors:
- name: docker-login
description: Selektor pro privilegium přihlášení do dockera
search_expression: format=="docker" and path=~"/v2/"Pro více informací o selektoru obsahu viz. .
Abyste mohli použít selektor obsahu, přidejte novou privilegii s type: repository-content-selector a odpovídajícícontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Přihlášení do Docker registru'
repository: '*'
actions:
- read
- browseBlobstores a repozitáře
nexus_delete_default_repos: falseOdstraňte repozitáře z výchozí konfigurace instalace nexus. Tento krok se provádí pouze při prvním instalaci (když nexus_data_dir byla zjištěna prázdná).
Odstraňování repozitářů z výchozí konfigurace pro Nexus. Tento krok se provádí pouze při prvním instalaci (když nexus_data_dir je prázdný).
nexus_delete_default_blobstore: falseOdstraňte výchozí blobstore z výchozí konfigurace instalace nexus. To lze provést pouze pokud nexus_delete_default_repos: true a všechny nakonfigurované repozitáře (viz níže) mají explicitní blob_store: custom. Tento krok se provádí pouze při prvním instalaci (když nexus_data_dir byla zjištěna prázdná).
Odstranění blobstore (binárních artefaktů) je ve výchozím nastavení vypnuto z výchozí konfigurace. Pro odstranění blobstore (binárních artefaktů) vypněte nexus_delete_default_repos: true. Tento krok se provádí pouze při prvním instalaci (když nexus_data_dir je prázdný).
nexus_blobstores: []
# příklad položky blobstore :
# - 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 }}"k vytvoření. Cesta blobstore a blobstore repozitáře nemohou být aktualizovány po prvním vytvoření (jakákoli aktualizace zde bude ignorována při opětovném zpřístupňování).
Konfigurace blobstore na S3 je poskytována jako pohodlí a není součástí automatizovaných testů, které provádíme na travis. Vezměte prosím na vědomí, že ukládání na S3 se doporučuje pouze pro instance nasazené na AWS.
Vytvoření . Cesta k blobstore a repozitáři blobstore nemohou být aktualizovány po prvním vytvoření (jakákoli aktualizace zde bude ignorována při opětovné instalaci).
Konfigurace blobstore na S3 je poskytována pro pohodlí. Vezměte prosím na vědomí, že ukládání na S3 se doporučuje pouze pro instance nasazené 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
# 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: 1440Výše je příklad konfigurace Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"Maven konfigurace. Konfigurace negativního cache je volitelná a bude ve výchozím nastavení používat výše uvedené hodnoty, pokud nebude uvedena.
Konfigurace Maven. Konfigurace negativního cache (-1) je volitelná a ve výchozím nastavení budou použity výše uvedené hodnoty, pokud nebude uvedena.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossKonfigurace Maven.
Všechny tři typy repozitářů jsou spojeny s následujícími výchozími hodnotami:
_nexus_repos_maven_defaults:
blob_store: default # Poznámka: nelze aktualizovat po vytvoření repozitáře
strict_content_validation: true
version_policy: release # release, snapshot nebo mixed
layout_policy: strict # strict nebo permissive
write_policy: allow_once # jeden z "allow", "allow_once" nebo "deny"
maximum_component_age: -1 # výchozí Nexus gui. Pouze pro proxy
maximum_metadata_age: 1440 # výchozí Nexus gui. Pouze pro proxy
negative_cache_enabled: true # výchozí Nexus gui. Pouze pro proxy
negative_cache_ttl: 1440 # výchozí Nexus gui. Pouze pro proxyTypy repozitářů Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS a yum:
viz defaults/main.yml pro tyto možnosti:
Skladovací prostory Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS a yum jsou ve výchozím nastavení vypnuty:
Viz defaults/main.yml pro tyto možnosti:
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: falseVezměte prosím na vědomí, že můžete potřebovat aktivovat určité oblasti zabezpečení, pokud chcete používat jiné typy repozitářů než Maven. Toto je ve výchozím nastavení false.
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # vyžaduje se pro anonymní přístup k dockeruRealm pro vzdálené uživatelské jméno může být také aktivována pomocí
nexus_rut_auth_realm: truea hlavička může být nastavena definováním
nexus_rut_auth_header: "CUSTOM_HEADER"Naplánované úkoly
nexus_scheduled_tasks: []
# # Příklad úlohy pro komprimaci blobstore :
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # volitelný
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # všechny atributy úlohy jsou interně uložené jako řetězce v nexus
# # Příklad úlohy pro odstranění maven snapshotů
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # volitelný
# taskProperties:
# repositoryName: "*" # * pro všechny repozitáře. Změňte na název repozitáře, pokud chcete pouze specifický
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # Příklad úlohy pro odstranění nepoužívaných docker manifestů a obrazů
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # volitelný
# taskProperties:
# repositoryName: "*" # * pro všechny repozitáře. Změňte na název repozitáře, pokud chcete pouze specifický
# # Příklad úlohy pro odstranění neúplných docker nahrávání
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # volitelný
# taskProperties:
# age: "24" pro konfiguraci. typeId a specifické pro úlohutaskProperties/booleanTaskProperties může být odhadnuto jako:
- z hierarchie typů Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - kontrolováním HTML formuláře pro vytváření úlohy ve vašem prohlížeči
- sledováním AJAX požadavků v prohlížeči při ručním nastavování úlohy.
Atributy úlohy musí být deklarovány v odpovídajícím yaml bloku v závislosti na jejich typu:
taskPropertiespro všechny řetězcové vlastnosti (tj. názvy repozitářů, názvy úložišť, časové intervaly …).booleanTaskPropertiespro všechny logické vlastnosti (tj. většinou zaškrtávací políčka v grafickém rozhraní pro vytváření úloh nexus).
Zálohy
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Viz definice cron výrazů v GUI pro vytváření úloh 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 # Uchovat 4 zálohování jako výchozí (aktuální + poslední 3)Zálohování nebude nakonfigurováno, dokud nepřepnete nexus_backup_configure v true.
V tomto případě bude naplánována úloha skriptu ke spuštění v Nexus
v intervalu určeném v nexus_backup_cron (výchozí 21:00 každý den).
Viz [Šablona groovy pro tuto úlohu](templates / backup.groovy.j2) pro podrobnosti.
Tato naplánovaná úloha nezávisí na jiných nexus_scheduled_tasks, které jste
vyhlásili ve svém playbooku.
Pokud chcete rotovat/odstraňovat zálohy, nastavte nexus_backup_rotate: true a nastavte počet záloh, které chcete uchovat pomocí nexus_backup_keep_rotations (výchozí je 4).
Při používání rotace, pokud chcete ušetřit další místo na disku během procesu zálohování,
můžete nastavit nexus_backup_rotate_first: true. To nastaví předběžnou rotaci/odstranění před zálohou. Ve výchozím nastavení se rotace provádí po vytvoření zálohy. Všimněte si, že v tomto případě staré zálohy
budou odstraněny před tím, než bude vytvořena aktuální záloha.
Obnova procedury
Spusťte playbook s parametrem -e nexus_restore_point=
(například, 2017-12-17-21-00-00 pro 17. prosince 2017 v 21:00
Odstranění nexus
Varování: toto úplně odstraní aktuální data. Nezapomeňte předtím provést zálohu, pokud je to nutné.
Použijte proměnnou nexus_purge, pokud potřebujete začít znovu a přeinstalovat instanci nexus s odstraněním všech dat.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueZměňte heslo administrátora po prvním nastavení
nexus_default_admin_password: 'admin123'To by nemělo být změněno ve vašem playbooku. Tato proměnná je vyplněna standardním heslem administrátora Nexus při prvním nastavení a zajišťuje, že můžeme změnit heslo administrátora na nexus_admin_password.
Pokud chcete změnit heslo administrátora po prvním nastavení, můžete jej dočasně změnit na staré heslo z příkazového řádku. Po změně nexus_admin_password ve vaší herní knize můžete spustit:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordTelegram kanál k Nexus Sonatype:
Pouze registrovaní uživatelé se mohou účastnit ankety. , prosím.
Jaké repozitáře artefaktů používáte?
Sonatype Nexus zdarma
Sonatype Nexus placený
Artifactory zdarma
Artifactory placený
Harbor
Pulp
Hlasovalo 9 uživatelů. Zdrželo se 3 uživatelů.
Zdroj: habr.com
