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: 'Разгръщания за company-project'
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 # идентификатор на ролята тук
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\/\n 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), ако искате да я промените по-късно с помощта на роля.
Настоятелно не се препоръчва да съхранявате паролата си в открит текст в playbook, а да използвате [шифроване на 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 е настроено наистинно, nexus свързва с 127.0.0.1:8081, така че не да бъде достъпен директно чрез HTTP порт 8081 с външен IP адрес.
Използваното име на хост по подразбиране е nexus_public_hostname. Ако ви трябват различни имена по каквато и да е причина, можете да зададете httpd_server_name с различна стойност.
С httpd_copy_ssl_files: true (по подразбиране) посочените сертификати трябва да съществуват във вашата директория playbook и ще бъдат копирани на сървера и конфигурирани в 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 }}"път към сертификата за SSL на httpd е опционален и трябва да остане неустановен, ако не искате да конфигурирате файл за веригата
httpd_default_admin_email: "admin@example.com"Настройте имейл адреса на администратора по подразбиране
Конфигурация на LDAP
LDAP връзки и зоната за сигурност по подразбиране са деактивирани
nexus_ldap_realm: false
ldap_connections: [], всеки елемент изглежда по следния начин:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Моята компания 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: 'Най-проста LDAP конфигурация'
ldap_protocol: 'ldaps'
ldap_hostname: 'annuaire.mycompany.com'
ldap_search_base: 'dc=mycompany,dc=net'
ldap_port: 636
ldap_use_trust_store: false
ldap_user_id_attribute: 'uid'
ldap_user_real_name_attribute: 'cn'
ldap_user_email_attribute: 'mail'
ldap_user_object_class: 'inetOrgPerson'Пример за конфигурация на 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_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 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: 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 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'Привилегии
nexus_privileges:
- name: all-repos-read # използва се като ключ за обновление на привилегия
# type: <една от application, repository-admin, repository-content-selector, repository-view, script или wildcard>
description: 'Достъп за четене и разглеждане до всички репозиции'
repository: '*'
actions: # може да се добавя, разглежда, създава, изтрива, редактира, чете или * (всички)
- 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 # идентификатор на роляСписък на локалните (не-LDAP) потребители/акаунти, които да бъдат създадени в nexus.
Списък на локалните (не LDAP) потребители/акаунти за създаване в Nexus.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Картографиране на Ldap потребители/роли. Състояние отсъства ще премахне роли от съществуващ потребител, ако той вече съществува.
Потребителите на Ldap не се премахват. Опитът за присвояване на роля на не съществуващ потребител ще доведе до грешка.
Селектори на съдържание
nexus_content_selectors:
- name: docker-login
description: Селектор за привилегия за вход в Docker
search_expression: format=="docker" and path=~"/v2/"За допълнителна информация относно селектора на съдържание вижте .
За да използвате селектора на съдържание, добавете нова привилегия с type: repository-content-selector и съответнияcontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Вход в Docker регистър'
repository: '*'
actions:
- read
- browseBlobstores и репозитории
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: []
# примерен елемент на хранилище :
# - 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 }}"за създаване. Пътят към хранилището и хранилището на репозитория не могат да бъдат обновени след първоначалното създаване (всяко обновление тук ще бъде игнорирано при повторно предоставяне).
Настройката на хранилището на блобовете в 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
# 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: 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 gui. Само за проксита
maximum_metadata_age: 1440 # по подразбиране на Nexus gui. Само за проксита
negative_cache_enabled: true # по подразбиране на Nexus gui. Само за проксита
negative_cache_ttl: 1440 # по подразбиране на Nexus gui. Само за прокситаТипове хранилища 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 в истинно.
В този случай, планираната задача на сценария ще бъде конфигурирана да стартира в 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
