Sonatype Nexus – inteqrasiya olunmuş bir platformadır ki, onunla proqramçılar Java (Maven), Docker görüntüləri, Python, Ruby, NPM, Bower, RPM paketləri, gitlfs, Apt, Go, Nuget asılılıqlarını proksiləşdirə, saxlaya və idarə edə bilərlər, eyni zamanda öz proqram təminatlarını yayımlaya bilərlər.
Sonatype Nexus-un məqsədi nədir?
- Şəxsi artefaktları saxlamaq üçün;
- İnternətdən yüklənən artefaktları keşləmək üçün;
Sonatype Nexus-un əsas təqdimatında dəstəklənən artefaktlar:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
İcma tərəfindən dəstəklənən artefaktlar:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Sonatype Nexus-u quraşdırmaq üçün
Tələblər
- Internetdə ansible istifadəsi haqqında oxuyun.
- ansible-i quraşdırın
pip install ansibleplaybook-un icra olunduğu iş stansiyasında. - Quraşdırın playbook-un icra olunduğu iş stansiyasında.
- Quraşdırın playbook-un icra olunduğu iş stansiyasında.
- Bu rol CentOS 7, Ubuntu Xenial (16.04) və Bionic (18.04), Debian Jessie və Stretch-də sınanmışdır.
jmespathkitabxana playbook-un icra olunduğu iş stansiyasında quraşdırılmalıdır. Quraşdırma üçünsudo pip install -r requirements.txt- playbook faylını (aşağıdakı nümunə) nexus.yml faylına saxlayın.
- nexus-un quraşdırılmasını başladın
ansible-playbook -i host nexus.yml
Nümunə ansible-playbook, LDAP olmadan kumarxana (java), Docker, Python, Ruby, NPM, Bower, RPM və gitlfs üçün quraşdırma üçün.
---
- name: Nexus
hosts: nexus
become: yes
vars:
nexus_timezone: 'Asiya/Omsk'
nexus_admin_password: "admin123"
nexus_public_hostname: 'apatsev-nexus-playbook'
httpd_setup_enable: false
nexus_privileges:
- name: all-repos-read
description: 'Bütün repolar üçün oxuma və araşdırma imkanı'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Şirkət projesinə yerləşdirmələr'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # LDAP qrupuna uyğun gəlir
name: developers
description: Bütün inkişaf etdiricilər
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # yeniləmək üçün açar kimi istifadə olunur
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # burada rol ID-si
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. Yum repositoriyası yaratmaq üçün nexus_config_yum-u true et
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. NPM repositoriyası yaratmaq üçün nexus_config_npm-u true et
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/
negative_cache_enabled: false
# Docker. Docker repositoriyası yaratmaq üçün nexus_config_docker-u true et
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. Bower repositoriyası yaratmaq üçün nexus_config_bower-u true et
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. Pypi repositoriyası yaratmaq üçün nexus_config_pypi-u true et
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. Rubygems repositoriyası yaratmaq üçün nexus_config_rubygems-u true et
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. Gitlfs repositoriyası yaratmaq üçün nexus_config_gitlfs-u true et
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu yalnız
# - { 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 yalnız
- { 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'] }Chess [şahmat]


Rol Dəyişənləri
Rol Dəyişənləri
Standart qiymətə malik dəyişənlər (baxın default/main.yml):
Ümumi dəyişənlər
nexus_version: ''
nexus_timezone: 'UTC'Varsayılan olaraq rol, mövcud son versiya olan Nexus-u quraşdıracaq. Versiyanı dəyişdirmək üçün dəyişəni düzəldə bilərsiniz nexus_version. Mövcud versiyaları baxın .
Əgər siz versiyanı daha yeni bir versiyaya dəyişdirsəniz, rol quraşdırılmış Nexus-unuzu yeniləməyi cəhd edəcək.
Əgər siz ən son versiyadan köhnə bir Nexus versiyasını istifadə edirsinizsə, quraşdırılıb olan buraxılışda mövcud olmayan funksiyaları istifadə etmədiyinizə əmin olmalısınız (məsələn, yum anbarlarının yerləşdirilməsi nexus versiyası 3.8.0-dan yuxarı, git lfs anbarı nexus versiyası 3.3.0-dan yuxarı üçün mövcuddur və s.)
nexus vaxt zonası — bu, Java-nın vaxt zonası adıdır ki, bu da aşağıda göstərilən cron ifadələri ilə nexus_təqvim tapşırıqları üçün faydalı ola bilər.
Nexus-nun portu və kontekst yolu
nexus_default_port: 8081
nexus_default_context_path: '"/'Java bağlantısı prosesi üçün port və kontekst yolu. nexus_default_context_path təyin edildikdə arxa görüş çıxarışını ehtiva etməlidir, məsələn: nexus_default_context_path: '"/nexus/"'.
Nexus üçün OS İstifadəçi və Qrupu
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'Nexus fayllarına sahibliyini və xidməti işə salmaq üçün istifadəçi və qrup, əgər yoxdursa, rolda yaradılacaq.
nexus_os_user_home_dir: '"/home/nexus"'nexus istifadəçisi üçün varsayılan ev kataloqunu dəyişməyə icazə verin
Nexus nümunələrinin kataloqları
nexus_installation_dir: '"/opt"'
nexus_data_dir: '"/var/nexus"'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('"/var/nexus-tmp"', '"/tmp/nexus"') }}"Nexus kataloqları.
nexus_installation_dirquraşdırılmış icra fayllarını ehtiva edirnexus_data_dirbütün konfiqurasiyaları, anbarları və yüklənmiş artefaktları ehtiva edir. Xüsusi blobstore yollarınexus_data_diraşağıda təsdiqlənə bilərnexus_blobstores.nexus_tmp_dirbütün müvəqqəti faylları ehtiva edir. Redhat üçün varsayılan yol/tmpmüəyyən avtomatlaşdırılmış təmizləmə prosedurlarının potensial problemlərini aşmaq məqsədi ilə dəyişdirilmişdir. Baxın #168.
Nexus JVM yaddaşını tənzimləmək
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Bunlar Nexus üçün varsayılan tənzimləmələrdir. Zəhmət olmasa, bu dəyərləri dəyişməyin Əgər siz baxmamısınızsa və onların nə etdiyini anlamırsınızsa.
İkinci xəbərdarlıq olaraq, yuxarıda qeyd olunan sənəddən birSeq:
Yaddaş JVM heap-i artırmaq, performansı artırmaq cəhdi ilə tövsiyə edilən dəyərlərdən daha çox olmur. Bu, həqiqətən əks təsir edə bilər, əməliyyat sisteminin qeyri-lazım işlərə yol verməsinə səbəb olur.
İdarəçi parolu
nexus_admin_password: 'changeme'Konfiqurasiya üçün «admin» hesabının parolu. Bu, yalnız varsayılan olaraq birinci quraşdırma zamanı işləyir. Parolu sonra rolda dəyişdirmək istəyirsinizsə, zəhmət olmasa [İlk quraşdırmadan sonra idarəçi parolunu dəyişmək](# change-admin-password-after-first-install) baxın.
Parolunuzu açıq mətndə playbook-da saxlamağınız qətiyyətlə tövsiyə edilmir, əvəzinə [ansible-vault şifrələməsi] istifadə edin () (ya daxildə, ya da include_vars vasitəsilə yüklənən ayrı bir faylda)
Default olaraq anonim giriş
nexus_anonymous_access: falseDefault olaraq anonim giriş deaktivdir. Daha ətraflı məlumat üçün .
İctimai host adı
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsTam domen adı və müştəriləri üçün Nexus instansiyasının müraciət edəcəyi sxema (https və ya http).
Bu rol üçün API giriş
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 }}"Bu dəyişənlər, rolun Nexus API-yə qoşulma tərzini idarə edir.
Yalnız təcrübəli istifadəçilər üçün. Bu standart parametrləri dəyişmək istəmirsiniz.
Geriyə proxy konfiqurasiyası
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: trueQuraşdırın .
Bunun üçün httpd quraşdırılmalıdır. Qeyd: httpd_setup_enable dəyişəni təyin edildikdə, nexus 127.0.0.1:8081 ilə bağlanır, bu şəkildətruexarici IP ünvanından HTTP portu 8081 vasitəsilə birbaşa erişilir. deyil Default host adı
nexus_public_hostname dır. Hər hansı bir səbəbdən fərqli adlar lazımdırsa, sizhttpd_server_name başqa dəyərlə təyin edə bilərsiniz. httpd_copy_ssl_files: true
olarq (default) yuxarıda qeyd olunan sertifikatlar sizin playbook direktoriyanızda mövcud olmalıdır və serverə köçürülüb apache-da konfiqurasiya olunacaq. Mövcud sertifikatlardan istifadə etmək istəyirsinizsə,
httpd_copy_ssl_files: false təyin edin və aşağıdakı dəyişənləri təqdim edin: httpd_ssl_cert_chain_file_location
# 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 }}"isteğe bağlıdır və əgər siz zəncir faylını konfiqurasiya etmək istəmirsinizsə, boş saxlanılmalıdır. httpd_default_admin_email: "admin@example.com"
Default administrator e-poçt ünvanını təyin edinLDAP konfiqurasiyası
LDAP bağlantıları və təhlükəsizlik sahəsi standart olaraq deaktivdir
nexus_ldap_realm: false ldap_connections: []
LDAP bağlantıları, hər bir element aşağıdakı kimi görünür:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'My Company 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: falseLDAP конфигурация для анонимной аутентификации (анонимная привязка), также это «минимальная» конфигурация:
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: falseLDAP конфигурация для простой аутентификации (с использованием учетной записи 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_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: falseLDAP конфигурация для простой аутентификации (с использованием учетной записи DSA) + группы, динамически сопоставленные как роли:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'LDAP konfiqurasiyası ilə 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 }}" # şifrələri ansible vault-da saxlamaq daha yaxşıdır
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'İcazələr
nexus_privileges:
- name: all-repos-read # icazəni yeniləmək üçün açar kimi istifadə olunur
# type: <biri tətbiq, repository-admin, repository-content-selector, repository-view, script və ya wildcard>
description: 'Bütün reposlara oxu və gəzinti giriş imkanı'
repository: '*'
actions: # əlavə etmək, gəzinti, yaratmaq, silmək, redaktə etmək, oxumaq və ya * (hamısı) ola bilər
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameSiyahı konfiqurasiya üçün. İcazə növünə görə hansı dəyişənlərin təyin olunmasını yoxlamaq üçün sənədlərə və qrafik interfeysinə baxın.
Bu elementlər aşağıdakı standart dəyərlərlə birləşdirilir:
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readRollar (Nexus daxilində nəzərdə tutulur)
nexus_roles:
- id: Developers # LDAP qrup ID-sinə uyğun gələ bilər, həmçinin rolu yeniləmək üçün açar kimi istifadə olunur
name: developers
description: Bütün proqramçılar
privileges:
- nx-search-read
- all-repos-read
roles: [] # digər rol adlarına istinadlarSiyahı konfiqurasiya üçün.
İstifadəçilər
nexus_local_users: []
# - username: jenkins # yeniləmək üçün açar kimi istifadə olunur
# state: present # varsa istifadə edilən varsayılan dəyər, istifadəçini silmək üçün 'absent' istifadə edin
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # rol IDNexus-da yaratmaq üçün yerli (LDAP olmayan) istifadəçilər/hesablar siyahısı.
Nexus-da yaratmaq üçün yerli (LDAP olmayan) istifadəçilər/hesablar siyahısı.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"Ldap istifadəçiləri/rolları üçün mapping. Hal-hazırda absent mövcud istifadəçidən rolları siləcək, əgər artıq varsa.
Ldap istifadəçiləri silinmir. Mövcud olmayan bir istifadəçi üçün rol təyin etməyə cəhd etmək səhv ilə nəticələnəcək.
Məzmun seçiciləri
nexus_content_selectors:
- name: docker-login
description: Docker giriş imkanı üçün seçici
search_expression: format=="docker" and path=~"/v2/"Məzmun seçicisi haqqında ətraflı məlumat üçün baxın: .
Məzmun seçicisini istifadə etmək üçün yeni bir icazə əlavə edin type: repository-content-selector və müvafiqcontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Docker registrinə giriş'
repository: '*'
actions:
- read
- browseBloblar və repositoriyalar
nexus_delete_default_repos: falseNexus quraşdırılmasının ilkin standart konfiqurasiyasından repoları silin. Bu addım yalnız ilk dəfə quraşdırıldıqda icra olunur (nümunə) nexus_data_dir standart konfiqurasiyasından silin. Bu addım yalnız ilk dəfə quraşdırıldıqda icra olunur (nümunə)
Nexus-un standart konfiqurasiyasından repoların silinməsi. Bu addım yalnız ilk quraşdırmada (nümunə) nexus_data_dir boşdur).
nexus_delete_default_blobstore: falseNexus quraşdırılmasının ilkin standart konfiqurasiyasından standart blobstore-u silin. Bu yalnız ola bilər nexus_delete_default_repos: true və bütün konfiqurasiya edilən repolar (aşağıda baxın) açıq şəkildə blob_store: custom. Bu addım yalnızca ilk quraşdırma zamanı icra edilir (həmin nexus_data_dir standart konfiqurasiyasından silin. Bu addım yalnız ilk dəfə quraşdırıldıqda icra olunur (nümunə)
Blob saxlama (ikili artefaktlar) açılışda deaktivdir. Blob saxlama (ikili artefaktlar) silmək üçün nexus_delete_default_repos: true. Bu addım yalnızca ilk quraşdırma zamanı icra edilir (həmin nexus_data_dir boşdur).
nexus_blobstores: []
# nümunə blobstore elementi:
# - name: ayrı-saxlama
# 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 }}"yaratmaq. Blobstore yolu və depo blobstore-u ilkin yaradıldıqdan sonra yeniləmək mümkün deyil (buradakı hər hansı bir yeniləmə təkrar təminat zamanı nəzərə alınmayacaq).
S3-də blobstore-u konfiqurasiya etmək rahatlıq üçün verilir və travis üzərində keçirdiyimiz avtomatlaşdırılmış testlərin bir hissəsi deyil. S3-də saxlama yalnız AWS-də yerləşdirilmiş instansiyalar üçün tövsiyə olunur.
Yaratma . Blob saxlama yolu və depo blobstore-u ilkin yaradıldıqdan sonra yenilənə bilməz (buradakı hər hansı bir yeniləmə təkrar təminat zamanı nəzərə alınmayacaq).
S3-də BLOB-obyektlərin saxlanması rahatlıq üçün təqdim olunur. S3-də saxlama yalnız AWS-də yerləşdirilmiş instansiyalar üçün tövsiyə olunur.
nexus_repos_maven_proxy:
- name: central
remote_url: 'https://repo1.maven.org/maven2/'
layout_policy: permissive
# maksimum_component_age: -1
# maksimum_metadata_age: 1440
# negativ_cache_enabled: true
# negativ_cache_ttl: 1440
- name: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
# maksimum_component_age: -1
# maksimum_metadata_age: 1440
# negativ_cache_enabled: true
# negativ_cache_ttl: 1440
# giriş/parol ilə nümunə:
# - name: secret-remote-repo
# remote_url: 'https://company.com/repo/secure/private/go/away'
# remote_username: 'username'
# remote_password: 'secret'
# # maksimum_component_age: -1
# # maksimum_metadata_age: 1440
# # negativ_cache_enabled: true
# # negativ_cache_ttl: 1440Yuxarıda konfiqurasiya nümunəsi Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # "allow", "allow_once" və ya "deny"-dən biriMaven konfiqurasiyası. Negativ keş konfiqurasiyası istəyə bağlıdır və əgər göstərilməzsə, yuxarıdakı dəyərlərə uyğun olacaq.
Konfiqurasiya Maven. Negativ keş konfiqurasiyası (-1) istəyə bağlıdır və əgər göstərilməzsə, yuxarıdakı dəyərlərə uyğun olacaq.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossKonfiqurasiya Maven.
Bu üç depo növü aşağıdakı standart dəyərlərlə birləşdirilir:
_nexus_repos_maven_defaults:
blob_store: default # Qeyd: depo yaradıldıqdan sonra yenilənə bilməz
strict_content_validation: true
version_policy: release # release, snapshot və ya mixed
layout_policy: strict # strict və ya permissive
write_policy: allow_once # "allow", "allow_once" və ya "deny"-dən biri
maksimum_component_age: -1 # Nexus gui standartı. Yalnız proksilər üçün
maksimum_metadata_age: 1440 # Nexus gui standartı. Yalnız proksilər üçün
negativ_cache_enabled: true # Nexus gui standartı. Yalnız proksilər üçün
negativ_cache_ttl: 1440 # Nexus gui standartı. Yalnız proksilər üçünDocker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS və yum depo növləri:
bax defaults/main.yml bu seçimlər üçün:
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS və yum depoları standart olaraq deaktivdir:
Baxın defaults/main.yml bu seçimlər üçün:
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: falseDiqqət edin ki, maven-dan başqa digər növ anbarlardan istifadə etmək istəyirsinizsə, müəyyən təhlükəsizlik sahələrini aktiv etmək lazım ola bilər. Bu, standart olaraq false-dur.
nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false # docker üçün anonim giriş tələb olunurUzaq İstifadəçi Aləmi də aktiv edilə bilər
nexus_rut_auth_realm: truevə başlıq müvafiq olaraq göstərilməsi ilə tənzimlənə bilər
nexus_rut_auth_header: "CUSTOM_HEADER"Təqvimli vəzifələr
nexus_scheduled_tasks: []
# # Blobstore-u sıxmaq üçün nümunə vəzifə :
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # isteğe bağlı
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # bütün vəzifə atributları nexus tərəfindən daxili olaraq stringlər kimi saxlanılır
# # Maven snapshot-larını təmizləmək üçün nümunə vəzifə
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # isteğe bağlı
# taskProperties:
# repositoryName: "*" # bütün repos üçün * . Müəyyən bir ad istədiyiniz təqdirdə bir anbar adı ilə dəyişdirin
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: true
# # İstifadə olunmamış docker manifestlər və şəkillərini təmizləmək üçün nümunə vəzifə
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # isteğe bağlı
# taskProperties:
# repositoryName: "*" # bütün repos üçün * . Müəyyən bir ad istədiyiniz təqdirdə bir anbar adı ilə dəyişdirin
# # Tamamlanmamış docker yükləmələrini təmizləmək üçün nümunə vəzifə
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # isteğe bağlı
# taskProperties:
# age: "24" konfiqurasiya üçün. typeId və vəzifəyə xastaskProperties/booleanTaskProperties təxmin edilə bilər ki, ya:
- Java tipleri iyerarxiyasından
org.sonatype.nexus.scheduling.TaskDescriptorSupport - şəklində HTML formunu yaradarkən
- vəzifəni əl ilə təyin edərkən brauzerinizdə AJAX sorğularına baxaraq.
Vəzifə xüsusiyyətləri onların növünə uyğun olaraq düzgün yaml blokunda müəyyən edilməlidir:
taskPropertiesbütün string xüsusiyyətləri (yəni anbar adları, saxlanma adları, zaman intervalları …).booleanTaskPropertiesbütün məntiqi xüsusiyyətlər (yəni, əsasən nexus yaratma vəzifəsinin qrafik interfeysindəki yoxlama qutusları).
Ehtiyat nüsxələri
nexus_backup_configure: false
nexus_backup_cron: '0 0 21 * * ?' # Nexus yaradın vəzifə gui-sində cron ifadələrinin tərifi
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 # Standart olaraq 4 ehtiyat nüsxə döngəsi saxlayın (hazırki + son 3)Ehtiyat nüsxə yaradılmayacaq, əgər siz dəyişdirmədən nexus_backup_configure daxilindədir. true.
Bu halda, təqvimli skript vəzifəsi Nexus-da göstərilən intervallarla yaradılacaq
nexus_backup_cron (standart olaraq hər gün saat 21:00). Bu vəzifənin [Groovy şablonuna baxın](templates / backup.groovy.j2) ətraflı məlumat üçün.
Bu planlı vəzifə digər
nexus_scheduled_tasks , dediyinizplaybook-da bəyan etməlisiniz.
Ehtiyat nüsxələri döngüsünü fırlatmaq/təmizləmək istəyirsinizsə,
nexus_backup_rotate: true və saxlayacağınız ehtiyat nüsxələrinin sayını tənzimləyin nexus_backup_keep_rotations nexus_backup_keep_rotations (standart 4).
Dövr etmə prosesində əlavə disk sahəsinə qənaət etmək istəyirsinizsə,
qura bilərsiniz nexus_backup_rotate_first: true. Bu, yedəkləmə prosesindən əvvəl dövr etmə/silinməyi tənzimləyəcək. Standart olaraq, dövr etmə yedəkləmə yaradıldıqdan sonra baş verir. Qeyd edin ki, bu halda köhnə yedəklər
mövcud yedəkləmə təsis edilməzdən əvvəl silinəcək.
Bərpa prosesi
Playbook'u -e nexus_restore_point=
(məsələn, 2017-12-17-21-00-00, 17 dekabr 2017 21:00 üçün
Nexus'u silmək
Xəbərdarlıq: bu, cari məlumatları tamamilə siləcək. Lazım olarsa, əvvəlcə yedəkləmə aparmağı unutmayın.
Verilənlərdən nexus_purge, əgər sıfırdan başlamaq və bütün məlumatların silinməsi ilə Nexus nümunəsini yenidən quraşdırmaq istəyirsinizsə.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueİlk quraşdırmadan sonra admin şifrəsini dəyişdirin
nexus_default_admin_password: 'admin123'Bu, sizin playbook'unuzda dəyişdirilməməlidir. Bu dəyişən, ilk quraşdırmada Nexus admininin standart şifrəsi ilə doldurulur və admin şifrəsini dəyişdirməyimizi təmin edir nexus_admin_password.
Əgər ilk quraşdırmadan sonra admin şifrəsini dəyişdirmək istəyirsinizsə, onu müvəqqəti olaraq köhnə şifre ilə komanda xəttindən dəyişə bilərsiniz. Dəyişdirdikdən sonra nexus_admin_password oplaybook'unuzda aşağıdakı əmri işə sala bilərsiniz:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordNexus Sonatype üçün Telegram kanalı:
Yalnız qeydiyyatdan keçmiş istifadəçilər sorğuda iştirak edə bilərlər. , xahiş edirəm.
Hansıl arifakt anbarlarından istifadə edirsiniz?
Sonatype Nexus pulsuz
Sonatype Nexus ödənişli
Artifactory pulsuz
Artifactory ödənişli
Harbor
Pulp
9 istifadəçi səs verib. 3 istifadəçi isə tərəddüd edib.
Mənbə: habr.com
