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/18.04) and Bionic (XNUMX/XNUMX), 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.
Як другое папярэджанне, вось вытрымка з вышэйзгаданага дакумента:
Не рэкамендуецца павялічваць памяць 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
Вылучыце рэпазітары ад nexus install initial default configuration. Гэта step есць толькі executed on first-time install (when nexus_data_dir has been detectated empty).
Выдаленне рэпазітароў з зыходнай канфігурацыі па змаўчанні для Nexus. Гэты крок выконваецца толькі пры першай усталёўцы (калі nexus_data_dir пусты).
nexus_delete_default_blobstore: false
Вылучыце некаторую blobstore з nexus install initial default configuration. Гэта можа быць толькі калі nexus_delete_default_repos: true and all configured repositories (by below) have an explicit blob_store: custom. Гэта step есць толькі executed on first-time install (when nexus_data_dir has been detectated empty).
Выдаленне сховішчы блобаў (бінарных артэфактаў) выключана па змаўчанні з зыходнай канфігурацыі. Для выдалення сховішчы блобаў (бінарных артэфактаў) выключыце nexus_delete_default_repos: true. Гэты крок выконваецца толькі пры першай усталёўцы (калі nexus_data_dir пусты).
Blobstores to create. Кропкавая палавая канструкцыя і рэпазітарная кніжная крама не павінна быць пабудавана пасля пачатковай генерацыі (как пачатак яе можна было б не заўважыць на выкананні).
Сістэма Blobstore на S3 з'яўляецца паслугай і не з'яўляецца часткай аўтаматычных выпрабаванняў, якія бяруць па трэві. Звярніце ўвагу, што вяртанне на S3 з'яўляецца толькі recommended для instances deployed on 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"
Спецыяліст 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 і памяшканне рэпазітарных тыпаў:
убачыць 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 у вашай гульнявой кнізе вы можаце запусціць: