Sonatype Nexus – интегрирана платформа, която позволява на разработчиците да проксирват, съхраняват и управляват зависимости на Java (Maven), Docker образи, Python, Ruby, NPM, Bower, RPM пакети, gitlfs, Apt, Go, Nuget и също така да разпространяват своя софтуер.
Защо е нужен Sonatype Nexus?
- За съхранение на частни артефакти;
- За кеширане на артефакти, които се изтеглят от интернет;
Поддържани артефакти в основната версия на Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Поддържани артефакти от общността:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Инсталиране на Sonatype Nexus с помощта на
Изисквания
- Прочетете за използването на ansible в интернет.
- Инсталирайте ansible
pip install ansibleна работната станция, където се изпълнява playbook. - Инсталирайте на работната станция, където се изпълнява playbook.
- Инсталирайте на работната станция, където се изпълнява playbook.
- Тази роля е тествана на CentOS 7, Ubuntu Xenial (16.04) и Bionic (18.04), Debian Jessie и Stretch
jmespathбиблиотеката трябва да бъде инсталирана на работната станция, където се изпълнява playbook. За инсталиране изпълнетеsudo pip install -r requirements.txt- Запазете файла на playbook (пример по-долу) в файла nexus.yml
- Стартирайте инсталацията на nexus
ansible-playbook -i host nexus.yml
Пример ansible-playbook за инсталиране на nexus без LDAP с репозитории Maven (java), Docker, Python, Ruby, NPM, Bower, RPM и 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: 'Четене и преглед на всички хранилища'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Разглеждане на проект'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # картографиране към LDAP групата
name: developers
description: Всички разработчици
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # използва се като ключ за обновление
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # ID на ролята тук
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. Променете nexus_config_yum на true, за да създадете 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. Променете nexus_config_npm на true, за да създадете 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. Променете nexus_config_docker на true, за да създадете 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. Променете nexus_config_bower на true, за да създадете 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. Променете nexus_config_pypi на true, за да създадете 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. Променете nexus_config_rubygems на true, за да създадете 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. Променете nexus_config_gitlfs на true, за да създадете gitlfs хранилище
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu само
# - { 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 само
- { 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'] }Скрийншотове:


Променливи на роля
Променливи на роля
Променливи със стойности по подразбиране (вж. default/main.yml):
Общи променливи
nexus_version: ''
nexus_timezone: 'UTC'По подразбиране ролята ще инсталира последната налична версия на Nexus. Можете да зададете конкретна версия, като промените променливата nexus_version. Вижте наличните версии на .
Ако промените версията на по-нова, ролята ще се опита да обнови инсталирания Nexus.
Ако използвате по-стара версия на Nexus от последната, трябва да се уверите, че не използвате функции, които не са налични в инсталираното издание (например, разполагането на yum хранилища е налично за Nexus над 3.8.0, git lfs repo за Nexus над 3.3.0 и т.н.)
nexus timezone е името на часовата зона Java, което може да бъде полезно в съчетание с изброените по-долу изрази cron за nexus_scheduled tasks.
Порт на Nexus и контекстен път
nexus_default_port: 8081
nexus_default_context_path: '\/'Портът и контекстният път на Java процеса на свързване. nexus_default_context_path трябва да съдържа наклонена черта, когато е настроен, например: nexus_default_context_path: '/nexus/'.
Потребител и група за ОС Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Потребителят и групата, използвани за притежание на файлове Nexus и стартиране на услугата, ще бъдат създадени от ролята, ако не съществуват.
nexus_os_user_home_dir: '/home/nexus'Разрешете промяната на домашната директория по подразбиране за потребителя nexus
Каталози на инстанции Nexus
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Каталози на Nexus.
nexus_installation_dirсъдържа инсталирани изпълними файловеnexus_data_dirсъдържа цялата конфигурация, хранилища и изтеглени артефакти. Персонализирани пътища за blobstoresnexus_data_dirмогат да бъдат конфигурирани, вижте по-долуnexus_blobstores.nexus_tmp_dirсъдържа всички временни файлове. Пътят по подразбиране за RedHat беше преместен от/tmpза преодоляване на потенциални проблеми с автоматичните процедури за почистване. Вижте #168.
Конфигуриране на използването на паметта на Nexus JVM
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Това са настройките по подразбиране за Nexus. Моля, не променяйте тези стойности Ако не сте прочели и не разбирате какво правят.
Като второ предупреждение, ето извадка от споменатия документ:
Не е препоръчително да увеличавате размера на JVM heap паметта извън препоръчаните стойности, в опит да повишите производителността. Това на практика може да има противоположен ефект, довеждайки до ненужна работа на операционната система.
Администраторска парола
nexus_admin_password: 'changeme'Паролата на акаунта 'admin' за конфигурация. Това работи само при първоначалната инсталация по подразбиране. Моля, вижте [Промяна на администраторската парола след първоначална инсталация](# change-admin-password-after-first-install), ако искате да я промените по-късно чрез роля.
Категорично не се препоръчва да съхранявате паролата си в плейбука в открит текст, а да използвате [шифроване ansible-vault]() (или вградена, или в отделен файл, зареден, например, с помощта на include_vars)
Анонимен достъп по подразбиране
nexus_anonymous_access: falseАнонимният достъп по подразбиране е деактивиран. Повече информация относно .
Публично име на хоста
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsПълното домейн име и схема (https или http), по която инстанцията Nexus ще бъде достъпна за своите клиенти.
API достъп за тази роля
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 }}"Тези променливи контролират начина, по който ролята се свързва с API Nexus за предоставяне.
Само за напреднали потребители. Най-вероятно не искате да променяте тези настройки по подразбиране
Конфигурация на обратен прокси
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: trueИнсталирайте .
За това е необходимо да инсталирате httpd. Забележка: когато за httpd_setup_enable е зададена стойностtrue, nexus се свързва с 127.0.0.1:8081, така че не да бъде директно достъпен през HTTP порт 8081 с външен IP адрес.
Използваното име на хоста по подразбиране е nexus_public_hostname. Ако искате различни имена по някаква причина, можете да зададете httpd_server_name с друга стойност.
С httpd_copy_ssl_files: true (по подразбиране) горепосочените сертификати трябва да съществуват в директорията на вашия плейбук и ще бъдат копирани на сървъра и конфигурирани в apache.
Ако искате да използвате съществуващи сертификати на сървъра, задайте httpd_copy_ssl_files: false и предоставете следните променливи:
# 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 является опциональным и должен оставаться неустановленным, если вы не хотите настраивать файл цепочки
httpd_default_admin_email: "admin@example.com"Установить адрес электронной почты администратора по умолчанию
Конфигурация LDAP
Соединения LDAP и область безопасности по умолчанию отключены
nexus_ldap_realm: false
ldap_connections: [], каждый элемент выглядит следующим образом:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company LDAP' # используется как ключ для обновления ldap конфигурации
ldap_protocol: 'ldaps' # ldap или ldaps
ldap_hostname: 'ldap.mycompany.com'
ldap_port: 636
ldap_use_trust_store: false # Использовать ли сертификаты в доверительном хранилище nexus
ldap_search_base: 'dc=mycompany,dc=net'
ldap_auth: 'none' # или simple
ldap_auth_username: 'username' # если auth = simple
ldap_auth_password: 'password' # если auth = simple
ldap_user_base_dn: 'ou=users'
ldap_user_filter: '(cn=*)' # (по желанию)
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: falseПример конфигурации LDAP для анонимной аутентификации (анонимная привязка), это также «минимальная» конфигурация:
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'Пример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA):
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 }}" # лучше хранить пароли в хранилище 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: falseПример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA) + группы, сопоставленные как роли:
nexus_ldap_realm: true
ldap_connections
- ldap_name: 'LDAP конфигурация с 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 }}" # по возможности храните пароли в хранилище ansible
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=users'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_map_groups_as_roles: true
ldap_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: falseПример конфигурации LDAP за проста аутентификация (с използване на DSA акаунт) + групи, динамично свързани като роля:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP конфигурация с 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 }}" # по възможност, съхранявайте паролите в хранилище ansible
ldap_search_base: 'dc=mycompany,dc=net'
ldap_user_base_dn: 'ou=users'
ldap_user_object_class: 'inetOrgPerson'
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_map_groups_as_roles: true
ldap_map_groups_as_roles_type: 'dynamic'
ldap_user_memberof_attribute: 'memberOf'Привилегии
nexus_privileges:
- name: all-repos-read # използва се като ключ за актуализиране на привилегия
# type:
description: 'Достъп за четене и разглеждане до всички репозитории'
repository: '*'
actions: # може да бъде add, browse, create, delete, edit, read или * (всички)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameСписък за конфигуриране. Вижте документацията и графичния интерфейс, за да проверите кои променливи трябва да бъдат зададени в зависимост от типа на привилегията.
Тези елементи се комбинират със следните стойности по подразбиране:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readРоли (в контекста на Nexus)
nexus_roles:
- id: Developpers # може да се свърже с LDAP група, също се използва като ключ за актуализиране на роля
name: developers
description: Всички разработчици
privileges:
- nx-search-read
- all-repos-read
roles: [] # препратки към имена на други ролиСписък за конфигуриране.
Потребители
nexus_local_users: []
# - username: jenkins # използва се като ключ за актуализиране
# state: present # стойност по подразбиране, ако бъде пропусната, използвайте 'absent' за премахване на потребителя
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # id на роляСписък с локални (не-LDAP) потребители/акаунти за създаване в nexus.
Списък на локалните (не LDAP) потребители/акаунти за създаване в Nexus.
nexus_ldap_users: []
# - име: j.doe
# статус: present
# роли:
# - "nx-admin"Картографиране на Ldap потребители/роли. Състояние absent изтрива роли от съществуващ потребител, ако такъв вече съществува.
Потребителите на Ldap не се изтриват. Опит за задаване на роля на несъществуващ потребител ще доведе до грешка.
Селектори за съдържание
nexus_content_selectors:
- име: docker-login
описание: Селектор за привилегия за docker вход
search_expression: format=="docker" and path=~"/v2/"За допълнителна информация относно селектора за съдържание вижте .
За да използвате селектора за съдържание, добавете нова привилегия с type: repository-content-selector и съответнияcontentSelector
- име: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
описание: 'Вход в регистъра на Docker'
хранилище: '*'
действия:
- четене
- разглежданеBlobstores и хранилища
nexus_delete_default_repos: falseИзтрийте хранилищата от първоначалната конфигурация на инсталацията Nexus. Тази стъпка се изпълнява само при първа инсталация (когато nexus_data_dir е открита празна).
Изтриване на хранилищата от началната конфигурация по подразбиране за Nexus. Тази стъпка се изпълнява само при първа инсталация (когато nexus_data_dir е празна).
nexus_delete_default_blobstore: falseИзтрийте хранилището по подразбиране от първоначалната конфигурация на инсталацията Nexus. Това може да се направи само ако nexus_delete_default_repos: true и всички конфигурирани хранилища (виждате по-долу) имат изрична blob_store: custom. Тази стъпка се изпълнява само при първа инсталация (когато nexus_data_dir е открита празна).
Изтриването на хранилището на блобове (бинарни артефакти) е деактивирано по подразбиране в началната конфигурация. За да изтриете хранилището на блобове (бинарни артефакти), деактивирайте nexus_delete_default_repos: true. Тази стъпка се изпълнява само при първа инсталация (когато nexus_data_dir е празна).
nexus_blobstores: []
# пример елемент на хранилище :
# - име: separate-storage
# type: file
# path: /mnt/custom/path
# - име: s3-blobstore
# type: S3
# config:
# bucket: s3-blobstore
# accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
# secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"за създаване. Пътят към хранилището и хранилището на репозитория не могат да бъдат актуализирани след първоначалното създаване (всяка актуализация тук ще бъде игнорирана при повторно предоставяне).
Конфигурирането на хранилище на S3 е предоставено за удобство и не е част от автоматизираните тестове, които изпълняваме в travis. Обърнете внимание, че съхранението на S3 се препоръчва само за инстанции, разположени на AWS.
Създаване . Пътят към хранилището и хранилището на репозитории не може да бъде актуализиран след първоначалното създаване (всяка актуализация тук ще бъде игнорирана при повторно инсталиране).
Настройката на хранилището на BLOB обекти на S3 се предоставя за удобство. Имайте предвид, че съхранението на S3 се препоръчва само за инстанции, разположени на 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 # strict или permissive
write_policy: allow_once # один из "allow", "allow_once" или "deny"
maximum_component_age: -1 # По умолчанию в интерфейсе Nexus. Только для прокси
maximum_metadata_age: 1440 # По умолчанию в интерфейсе Nexus. Только для прокси
negative_cache_enabled: true # По умолчанию в интерфейсе Nexus. Только для прокси
negative_cache_ttl: 1440 # По умолчанию в интерфейсе 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" за конфигуриране. typeId и специфични за задачатаtaskProperties/booleanTaskProperties можете да отгатнете или:
- от йерархията на типовете Java
org.sonatype.nexus.scheduling.TaskDescriptorSupport - като проверявате HTML формата за създаване на задача във вашия браузър
- от наблюдението на AJAX заявките в браузъра при ръчно конфигуриране на задачата.
Свойствата на задачата трябва да бъдат обявени в правилния блок yaml в зависимост от техния тип:
taskPropertiesза всички стрингови свойства (т.е. имена на репозитории, имена на хранилища, времеви периоди …).booleanTaskPropertiesза всички булеви свойства (т.е. основно чекбоксове в графичния интерфейс на създаването на задача в nexus).
Резервни копия
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Вижте определенито на cron изрази в интерфейса за създаване на задачи 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 в 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 във вашия playbook можете да стартирате:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordТелеграм канал за Nexus Sonatype:
Само регистрирани потребители могат да участват в анкетата. , моля.
С какви хранилища на артефакти работите?
Sonatype Nexus безплатен
Sonatype Nexus платен
Artifactory безплатен
Artifactory платен
Harbor
Pulp
Гласували 9 потребители. Въздържали се 3 потребителя.
Източник: habr.com
