ProHoster > Блог > администрация > Инсталиране и конфигуриране на Nexus Sonatype с помощта на инфраструктурата като подход на код
Инсталиране и конфигуриране на Nexus Sonatype с помощта на инфраструктурата като подход на код
Sonatype Nexus е интегрирана платформа, чрез която разработчиците могат да прокси, съхраняват и управляват зависимости на Java (Maven), Docker, Python, Ruby, NPM, Bower изображения, RPM пакети, gitlfs, Apt, Go, Nuget и да разпространяват своята софтуерна сигурност.
Защо се нуждаете от Sonatype Nexus?
За съхранение на лични артефакти;
За кеширане на артефакти, които са изтеглени от Интернет;
Артефакти, поддържани в основния пакет Sonatype Nexus:
Инсталирайте ansible pip install ansible на работната станция, където се изпълнява книгата.
Определен geerlingguy.java на работната станция, където се изпълнява книгата.
Определен geerlingguy.apache на работната станция, където се изпълнява книгата.
Тази роля е тествана на CentOS 7, Ubuntu Xenial (16.04) и Bionic (18.04), Debian Jessie и Stretch
jmespath Библиотеката трябва да бъде инсталирана на работната станция, където се изпълнява книгата. Да инсталираш: sudo pip install -r requirements.txt
Запазете файла с книгата (пример по-долу) във файла nexus.yml
Стартирайте инсталацията на nexus ansible-playbook -i host nexus.yml
Пример ansible-playbook за инсталиране на nexus без LDAP с хранилища на Maven (java), Docker, Python, Ruby, NPM, Bower, RPM и gitlfs.
Променливи със стойности по подразбиране (вижте default/main.yml):
Общи променливи
nexus_version: ''
nexus_timezone: 'UTC'
По подразбиране ролята ще инсталира най-новата налична версия на Nexus. Можете да коригирате версията, като промените променливата nexus_version. Вижте наличните версии на https://www.sonatype.com/download-oss-sonatype.
Ако преминете към по-нова версия, ролята ще се опита да актуализира вашата инсталация на Nexus.
Ако използвате по-стара версия на Nexus от най-новата, трябва да се уверите, че не използвате функции, които не са налични в инсталираната версия (например хостването на yum хранилища е налично за nexus над 3.8.0, git lfs repo за nexus над 3.3.0 и т.н.)
nexus timezone е името на часовата зона на Java, което може да бъде полезно в комбинация със следните cron изрази за nexus_scheduled задачи.
Портът и контекстният път на процеса на свързване на Java. nexus_default_context_path трябва да съдържа наклонена черта, когато е зададена, напр.: nexus_default_context_path: '/nexus/'.
Потребител и група на Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Потребителят и групата, използвани за притежаване на файлове на Nexus и изпълнение на услугата, ще бъдат създадени от ролята, ако такава липсва.
nexus_os_user_home_dir: '/home/nexus'
Разрешете промяна на домашната директория по подразбиране за потребителя на nexus
nexus_installation_dir съдържа инсталирани изпълними файлове
nexus_data_dir съдържа цялата конфигурация, хранилища и изтеглени артефакти. Персонализирани пътища на blobstore nexus_data_dir може да се персонализира, вижте по-долу nexus_blobstores.
nexus_tmp_dir съдържа всички временни файлове. Пътят по подразбиране за redhat е преместен от /tmp за преодоляване на потенциални проблеми с процедурите за автоматично почистване. Вижте #168.
Конфигуриране на използването на паметта на Nexus JVM
Това са настройките по подразбиране за Nexus. Моля, не променяйте тези стойностиАко не сте чели nexus системни изисквания раздел памет и не разбират какво правят.
Като второ предупреждение, ето извадка от горния документ:
Не се препоръчва увеличаване на JVM heap паметта над препоръчителните стойности в опит да се подобри производителността. Това всъщност може да има обратен ефект, което да доведе до ненужна работа за операционната система.
Администраторска парола
nexus_admin_password: 'changeme'
Паролата на акаунта „admin“ за настройка. Това работи само при първата инсталация по подразбиране. Моля, вижте [Промяна на администраторската парола след първата инсталация](# change-admin-password-after-first-install), ако искате да я промените по-късно, като използвате роля.
Силно се препоръчва да не съхранявате паролата си като ясен текст в наръчника, а да използвате [шифроване на ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (или вграден, или в отделен файл, зареден напр. с include_vars)
Анонимен достъп по подразбиране
nexus_anonymous_access: false
Анонимният достъп е деактивиран по подразбиране. Прочетете повече за анонимен достъп.
Тези променливи контролират как ролята се свързва с API на Nexus за осигуряване. Само за напреднали потребители. Вероятно не искате да променяте тези настройки по подразбиране
Определен SSL обратен прокси.
За да направите това, трябва да инсталирате httpd. Забележка: когато за httpd_setup_enable зададена стойностtrue, nexus contacts 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 }}"
httpd_ssl_cert_chain_file_location не е задължително и не трябва да се задава, ако не искате да персонализирате верижния файл
nexus_privileges:
- name: all-repos-read # used as key to update a privilege
# type: <one of application, repository-admin, repository-content-selector, repository-view, script or wildcard>
description: 'Read & Browse access to all repos'
repository: '*'
actions: # can be add, browse, create, delete, edit, read or * (all)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: name
Списък привилегии за настройки. Погледнете документацията и GUI, за да проверите кои променливи трябва да бъдат зададени в зависимост от типа привилегия.
Тези елементи се комбинират със следните стойности по подразбиране:
nexus_roles:
- id: Developpers # can map to a LDAP group id, also used as a key to update a role
name: developers
description: All developers
privileges:
- nx-search-read
- all-repos-read
roles: [] # references to other role names
nexus_local_users: []
# - username: jenkins # used as key to update
# state: present # default value if ommited, use 'absent' to remove user
# first_name: Jenkins
# last_name: CI
# email: [email protected]
# password: "s3cr3t"
# roles:
# - developers # role ID
Списък с локални (не-LDAP) потребители/акаунти за създаване в nexus.
Списък с локални (не-LDAP) потребители/акаунти за създаване в Nexus.
Ldap картографиране на потребители/роли. състояние absent ще премахне роли от съществуващ потребител, ако такъв вече съществува.
Потребителите на Ldap не се изтриват. Опитът да зададете роля за несъществуващ потребител ще доведе до грешка.
Селектори на съдържание
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
За повече информация относно селектора на съдържание вижте Документация.
За да използвате селектора на съдържание, добавете нова привилегия с type: repository-content-selector и уместниcontentSelector
Изтрийте хранилищата от първоначалната конфигурация по подразбиране за инсталиране на nexus. Тази стъпка се изпълнява само при инсталиране за първи път (когато nexus_data_dir е открит празен).
Премахване на хранилища от стандартната конфигурация по подразбиране за Nexus. Тази стъпка се изпълнява само по време на първата инсталация (когато nexus_data_dir празен).
nexus_delete_default_blobstore: false
Изтрийте blobstore по подразбиране от първоначалната конфигурация по подразбиране за инсталиране на nexus. Това може да стане само ако nexus_delete_default_repos: true и всички конфигурирани хранилища (вижте по-долу) имат изричен blob_store: custom. Тази стъпка се изпълнява само при инсталиране за първи път (когато nexus_data_dir е открит празен).
Премахването на съхранение на blob обект (двоични артефакти) е деактивирано по подразбиране от първоначалната конфигурация. За да премахнете хранилището на blob (двоични артефакти), изключете nexus_delete_default_repos: true. Тази стъпка се изпълнява само по време на първата инсталация (когато nexus_data_dir празен).
Blobstores да създам. Път на blobstore и blobstore на хранилище не могат да бъдат актуализирани след първоначалното създаване (всяка актуализация тук ще бъде игнорирана при повторно осигуряване).
Конфигурирането на blobstore на S3 се предоставя за удобство и не е част от автоматизираните тестове, които изпълняваме на travis. Моля, обърнете внимание, че съхраняването на S3 се препоръчва само за екземпляри, внедрени на AWS.
Създаване Blobstores. Пътят за съхранение и хранилището за съхранение не могат да бъдат актуализирани след първоначалното създаване (всяка актуализация тук ще бъде игнорирана, когато се инсталира отново).
Настройването на blob хранилище на S3 се предоставя като удобство. Моля, обърнете внимание, че хранилището на S3 се препоръчва само за екземпляри, внедрени в AWS.
По-горе е примерна конфигурация Прокси сървър Мейвън.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven хоствани хранилища конфигурация. Отрицателната конфигурация на кеша не е задължителна и по подразбиране ще се използват горните стойности, ако бъдат пропуснати.
Конфигурация хоствани хранилища Мейвън. Отрицателната конфигурация на кеша (-1) не е задължителна и по подразбиране ще се използват горните стойности, ако не са посочени.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
И трите типа хранилища са комбинирани със следните стойности по подразбиране:
_nexus_repos_maven_defaults:
blob_store: default # Note : cannot be updated once the repo has been created
strict_content_validation: true
version_policy: release # release, snapshot or mixed
layout_policy: strict # strict or permissive
write_policy: allow_once # one of "allow", "allow_once" or "deny"
maximum_component_age: -1 # Nexus gui default. For proxies only
maximum_metadata_age: 1440 # Nexus gui default. For proxies only
negative_cache_enabled: true # Nexus gui default. For proxies only
negative_cache_ttl: 1440 # Nexus gui default. For proxies only
Типове хранилища Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS и yum:
виж defaults/main.yml за тези опции:
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS и yum хранилищата са деактивирани по подразбиране:
виждам defaults/main.yml за тези опции:
Моля, имайте предвид, че може да се наложи да активирате определени обхвати на сигурност, ако искате да използвате други типове хранилища, различни от maven. Това е невярно по подразбиране
Архивирането няма да бъде конфигурирано, докато не превключите nexus_backup_configure в true.
В този случай планираната задача за скрипт ще бъде конфигурирана да се изпълнява на Nexus
на интервала, посочен в nexus_backup_cron (по подразбиране 21:00 всеки ден).
Вижте [шаблон на Groovy за тази задача](templates/backup.groovy.j2) за подробности.
Тази планирана задача е независима от другите nexus_scheduled_tasksкоито вие
обяви в книгата си с игри.
Ако искате да завъртите/изтриете резервни копия, инсталирайте nexus_backup_rotate: true и конфигурирайте броя на резервните копия, които искате да използвате nexus_backup_keep_rotations (по подразбиране 4).
Когато използвате ротация, ако искате да спестите допълнително дисково пространство по време на процеса на архивиране,
Можете да инсталирате nexus_backup_rotate_first: true. Това ще конфигурира предварително завъртане/изтриване преди архивиране. По подразбиране ротацията се извършва след създаване на резервно копие. Моля, имайте предвид, че в този случай старите архиви
ще бъдат изтрити преди да бъде направено текущото архивиране.
Процедура за възстановяване
Стартирайте playbook с параметър -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(например 2017-12-17-21-00-00 за 17 декември 2017 г. в 21:00 ч.
Премахване на nexus
Предупреждение: Това ще изтрие напълно текущите ви данни. Не забравяйте да направите резервно копие по-рано, ако е необходимо
Използвайте променлива nexus_purgeако трябва да рестартирате от нулата и да инсталирате отново екземпляра на nexus с премахнати всички данни.
Променете администраторската парола след първата инсталация
nexus_default_admin_password: 'admin123'
Това не трябва да се променя в книгата ви. Тази променлива се попълва с администраторската парола за Nexus по подразбиране при първото инсталиране и гарантира, че можем да променим администраторската парола на nexus_admin_password.
Ако искате да промените администраторската парола след първата инсталация, можете временно да я промените на старата парола от командния ред. След смяна nexus_admin_password във вашата книга за игри можете да стартирате: