ProHoster > Blog > башкаруу > Код мамилеси катары инфраструктураны колдонуу менен Nexus Sonatype орнотуу жана конфигурациялоо
Код мамилеси катары инфраструктураны колдонуу менен Nexus Sonatype орнотуу жана конфигурациялоо
Sonatype Nexus - бул интеграцияланган платформа, анын жардамы менен иштеп чыгуучулар Java (Maven) көз карандылыктарын, Docker, Python, Ruby, NPM, Bower сүрөттөрү, RPM пакеттерин, gitlfs, Apt, Go, Nuget проксисин, сактай жана башкара алышат жана алардын программалык коопсуздугун тарата алышат.
Эмне үчүн сизге Sonatype Nexus керек?
Жеке экспонаттарды сактоо үчүн;
Интернеттен жүктөлүп алынган артефакттарды кэштөө үчүн;
Негизги Sonatype Nexus топтомунда колдоого алынган артефакттар:
Демейки маанилери бар өзгөрмөлөр (караңыз 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 nexus_scheduled тапшырмалары үчүн төмөнкү cron туюнтмалары менен айкалышта пайдалуу боло турган Java убакыт алкагынын аталышы.
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_data_dir бардык конфигурацияларды, репозиторийлерди жана жүктөлүп алынган артефакттарды камтыйт. Ыңгайлаштырылган blobstore жолдору nexus_data_dir ылайыкташтырылышы мүмкүн, төмөндө карагыла nexus_blobstores.
nexus_tmp_dir бардык убактылуу файлдарды камтыйт. Redhat үчүн демейки жол жылдырылды /tmp автоматтык тазалоо жол-жоболору менен мүмкүн болгон көйгөйлөрдү жоюу үчүн. №168 караңыз.
Бул Nexus үчүн демейки жөндөөлөр. Сураныч, бул баалуулуктарды өзгөртпөңүзЭгер окуй элек болсоңуз nexus тутумунун талаптарынын эс тутум бөлүмү жана алардын эмне кылып жатканын түшүнбөйт.
Экинчи эскертүү катары, жогорудагы документтен үзүндү:
Иштин натыйжалуулугун жогорулатуу үчүн JVM үймөк эс тутумун сунуш кылынган маанилерден жогору көбөйтүү сунушталбайт. Бул иш жүзүндө тескери натыйжага алып келиши мүмкүн, натыйжада операциялык система үчүн керексиз жумуш пайда болот.
Администратордун сырсөзү
nexus_admin_password: 'changeme'
Орнотуу үчүн "администратор" аккаунтунун сырсөзү. Бул биринчи демейки орнотууда гана иштейт. Эгер сиз аны кийинчерээк роль аркылуу өзгөрткүңүз келсе, [Биринчи орнотуудан кийин администратордун сырсөзүн өзгөртүү](# change-admin-password-after-first-install) караңыз.
Бул өзгөрмөлөр роль камсыз кылуу үчүн Nexus API менен кантип туташа турганын көзөмөлдөйт. өнүккөн колдонуучулар үчүн гана. Сиз бул демейки жөндөөлөрдү өзгөрткүңүз келбейт окшойт
орнотуу SSL Reverse Proxy.
Бул үчүн сиз httpd орнотуу керек. Эскертүү: качан үчүн httpd_setup_enable маанини коюуtrue, Nexus контакттары 127.0.0.1:8081, ошентип жок тышкы IP даректен HTTP порт 8081 аркылуу түз жеткиликтүү болуу.
Демейки хост аты колдонулат 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_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
Nexus'та түзүү үчүн жергиликтүү (LDAP эмес) колдонуучулардын/каттоо эсебинин тизмеси.
Nexus'та түзүлө турган жергиликтүү (LDAP эмес) колдонуучулардын/каттоо эсептеринин тизмеси.
Колдонуучулардын/ролдордун 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
Nexus орнотуунун баштапкы демейки конфигурациясынан демейки blobstoreну жок кылыңыз. Бул учурда гана жасалышы мүмкүн nexus_delete_default_repos: true жана бардык конфигурацияланган репозиторийлер (төмөндө караңыз) ачыкка ээ blob_store: custom. Бул кадам биринчи жолу орнотулганда гана аткарылат (качан nexus_data_dir бош табылды).
Блоб сактагычты (экилик артефакттарды) алып салуу демейки боюнча баштапкы конфигурациядан өчүрүлгөн. Blob сактагычты (экилик артефакттарды) алып салуу үчүн, өчүрүңүз nexus_delete_default_repos: true. Бул кадам биринчи орнотуу учурунда гана аткарылат (качан nexus_data_dir бош).
Blobstores жаратуу. Blobstore жолу менен репозиторийдин blobstore баштапкы түзүлгөндөн кийин жаңыртылбайт (бул жердеги бардык жаңыртуулар кайра камсыздоодо этибарга алынбайт).
S3 боюнча blobstore конфигурациялоо ыңгайлуулук катары берилген жана биз трависте жүргүзгөн автоматташтырылган тесттердин бир бөлүгү эмес. S3'те сактоо AWSде орнотулган учурлар үчүн гана сунушталаарын эске алыңыз.
Жаратуу Blobstores. Сактоо жолу менен сактоо репозиторийин баштапкы түзүлгөндөн кийин жаңыртуу мүмкүн эмес (бул жердеги бардык жаңыртуулар кайра орнотулганда этибарга алынбайт).
S3 боюнча blob сактагычын орнотуу ыңгайлуулук катары берилген. S3 сактагычы AWSде орнотулган учурлар үчүн гана сунушталаарын эске алыңыз.
Жогоруда мисал конфигурация болуп саналат прокси сервер Maven.
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 бул параметрлер үчүн:
Мавенден башка репозиторийлердин башка түрлөрүн колдонгуңуз келсе, белгилүү бир коопсуздук чөйрөлөрүн иштетүү керек болушу мүмкүн экенин эске алыңыз. Бул демейки боюнча жалган
Сиз которулмайынча камдык көчүрмө конфигурацияланбайт nexus_backup_configure в true.
Бул учурда, пландаштырылган скрипт тапшырмасы Nexus'та иштөө үчүн конфигурацияланат
көрсөтүлгөн аралыкта nexus_backup_cron (демейки 21:00 күн сайын).
Чоо-жайын көрүү үчүн [бул тапшырма үчүн сонун шаблон](templates/backup.groovy.j2) караңыз.
Бул пландаштырылган тапшырма башкалардан көз каранды эмес nexus_scheduled_tasksкайсы сен
оюн китебиңизде жарыялаңыз.
Камдык көчүрмөлөрдү айлантууну/жок кылууну кааласаңыз, орнотуңуз nexus_backup_rotate: true жана колдонуу менен сактагыңыз келген камдык көчүрмөлөрдүн санын конфигурациялаңыз nexus_backup_keep_rotations (демейки 4).
Айланууну колдонууда, резервдик көчүрүү процессинде кошумча диск мейкиндигин үнөмдөөнү кааласаңыз,
Сиз орното аласыз nexus_backup_rotate_first: true. Бул камдык көчүрмөнү сактоого чейин алдын ала айлантууну/жок кылууну конфигурациялайт. Демейки боюнча, айлануу камдык көчүрмө түзүлгөндөн кийин пайда болот. Сураныч, бул учурда эски камдык көчүрмөлөр бар экенин эске алыңыз
учурдагы камдык көчүрмөсү жасалганга чейин жок кылынат.
Калыбына келтирүү процедурасы
Оюн китебин параметр менен иштетиңиз -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 оюн китебиңизде сиз иштете аласыз: