ProHoster > Блог > адміністрування > Встановлення та налаштування Nexus Sonatype використовуючи підхід infrastructure as code
Встановлення та налаштування Nexus Sonatype використовуючи підхід infrastructure as code
Sonatype Nexus – інтегрована платформа, за допомогою якої розробники можуть проксувати, зберігати та керувати залежностями Java (Maven), образами Docker, Python, Ruby, NPM, Bower, RPM-пакетами, gitlfs, Apt, Go, Nuget, а також розповсюджувати своє програмне забезпечення.
Навіщо потрібний Sonatype Nexus?
для зберігання приватних артефактів;
Для кешування артефактів, що завантажуються з інтернету;
Артефакти, що підтримуються в базовій поставці Sonatype Nexus:
Встановити ansible pip install ansible на робочій станції, де запускається playbook.
Встановіть geerlingguy.java на робочій станції, де запускається playbook.
Встановіть geerlingguy.apache на робочій станції, де запускається playbook.
Ця роль протестована на CentOS 7, Ubuntu Xenial (16.04) та Bionic (18.04), Debian Jessie and Stretch
jmespath бібліотека повинна бути встановлена на робочій станції, де запускається playbook. Для встановлення виконайте sudo pip install -r requirements.txt
Збережіть файл playbook (приклад нижче) у файлі nexus.yml
Змінні значення за замовчуванням (див. default/main.yml):
General variables
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 tasks.
Порт та контекстний шлях процесу 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_installation_dir містить встановлені виконувані файли
nexus_data_dir містить всю конфігурацію, репозиторії та завантажені артефакти. Кастомні шляхи blobstores nexus_data_dir можуть бути налаштовані, дивіться нижче nexus_blobstores.
nexus_tmp_dir містить усі тимчасові файли. Шлях за замовчуванням для redhat був переміщений з /tmp для подолання потенційних проблем з автоматичними процедурами очищення. Дивіться #168.
Це налаштування за промовчанням для Nexus. Будь ласка, не змінюйте ці значенняЯкщо ви не прочитали розділ пам'яті системних вимог nexus і не знаєте, що вони роблять.
Як друге попередження, ось витяг із вищезгаданого документа:
Не рекомендується збільшувати пам'ять JVM heap більше рекомендованих значень у спробі підвищити продуктивність. Це насправді може мати протилежний ефект, що призводить до непотрібної роботи операційної системи.
Пароль адміністратора
nexus_admin_password: 'changeme'
Пароль облікового запису "admin" для налаштування. Це працює тільки при першій установці за замовчуванням. Будь ласка, дивіться [Змінити пароль адміністратора після першого встановлення](# change-admin-password-after-first-install), якщо ви хочете змінити його пізніше за допомогою ролі.
Не рекомендується зберігати свій пароль у вигляді відкритого тексту в playbook, а використовувати [шифрування 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 зв'язується з 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
перелік привілеїв для налаштування. Перегляньте документацію та графічний інтерфейс, щоб перевірити, які змінні повинні бути встановлені в залежності від типу привілею.
Ці елементи поєднуються з такими значеннями за промовчанням:
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
Local (non-LDAP) users/accounts list для створення в 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
Delete the repositories from the nexus install initial default configuration. Цей хід є лише executed on first-time install (when nexus_data_dir has been detected empty).
Видалення репозиторіїв із початкової конфігурації за промовчанням для Nexus. Цей крок виконується лише при першій установці (коли nexus_data_dir порожній).
nexus_delete_default_blobstore: false
Delete the default blobstore from the nexus install initial default configuration. This can be done only if nexus_delete_default_repos: true and all configured repositories (see below) have an explicit blob_store: custom. Цей хід є лише executed on first-time install (when nexus_data_dir has been detected empty).
Видалення сховища блобів (бінарних артефактів) вимкнено за умовчанням вихідної конфігурації. Для видалення сховища блобів (бінарних артефактів) вимкніть nexus_delete_default_repos: true. Цей крок виконується лише при першій установці (коли nexus_data_dir порожній).
Blobstores до створення. Blobstore path and repository blobstore не може бути updated after initial creation (будь-який update here will be ignored on re-provisionning).
Налаштування blobstore на S3 є забезпеченим як convenience і не є частиною автоматизованих тестів, які йдуть на travis. Зверніть увагу на те, що стирання на S3 є тільки recommended for instances deployed на 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 hosted repositories configuration. Негативний cache config є опціональним і буде знижений до вищевказаних цінностей, якщо не заміщено.
Конфігурація розміщених (hosted) репозиторіїв 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 repository types:
побачити defaults/main.yml for these options:
Сховища Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS та yum за замовчуванням вимкнені:
дивіться defaults/main.yml для цих опцій:
Зверніть увагу, що вам може знадобитися включити певні області безпеки, якщо ви хочете використовувати інші типи репозиторіїв, крім maven. Це за промовчанням false
Резервне копіювання не буде налаштовано, доки ви не перемкнете 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=<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'
Це не повинно бути змінено у playbook. Ця змінна заповнюється стандартним паролем адміністратора Nexus при першій установці та гарантує, що ми можемо змінити пароль адміністратора на nexus_admin_password.
Якщо ви хочете змінити пароль адміністратора після першої установки, ви можете тимчасово змінити його на старий пароль командного рядка. Після зміни nexus_admin_password у вашій ігровій книзі ви можете запустити: