Sonatype Nexus – միացյալ հարթակ, որը թույլ տալիս է ծրագրավորողներին պրոքսի անել, պահպանել և կառավարել Java (Maven) կախվածությունները, Docker պատկերները, Python, Ruby, NPM, Bower, RPM փաթեթները, gitlfs, Apt, Go, Nuget և նաև տարածել իրենց ծրագրային ապահովումը:
Ինչու է անհրաժեշտ Sonatype Nexus՞
- Գաղտնի արվող արկղերի պահպանման համար;
- Արտեֆակտների պահեստավորում, որ ձեռք բերված են ինտերնետից;
Sonatype Nexus-ի հիմնական մատակարարման կողմից աջակցվող արկղեր:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Համmunity-ով աջակցվող արկղեր:
- Composer
- Conan
- CPAN
- ELPA
- Helm
- P2
- R
Sonatype Nexus-ի տեղադրում՝ օգտագործելով
Requirements
- Կարդացեք ինտերնետում ansible-ի օգտագործման մասին:
- Տեղադրեք ansible
pip install ansibleplaybook-ի վրա աշխատող աշխատանքային կայանում: - 安装 playbook-ի վրա աշխատող աշխատանքային կայանում:
- 安装 playbook-ի վրա աշխատող աշխատանքային կայանում:
- Այս դերակատարումն ապահովված է CentOS 7, Ubuntu Xenial (16.04) և Bionic (18.04), Debian Jessie և Stretch:
jmespathգրադարանն պետք է տեղադրվի playbook-ի վրա աշխատող աշխատանքային կայանում: Տեղադրելու համար կատարեքsudo pip install -r requirements.txt- Պահպանեք playbook ֆայլը (օրինակ ներքևում) nexus.yml ֆայլում
- Ուղեցույցը վարեք nexus-ի տեղադրում
ansible-playbook -i host nexus.yml
nexus-ի տեղադրման համար ansible-playbook-ի օրինակ, առանց LDAP-ով, Maven (java), Docker, Python, Ruby, NPM, Bower, RPM և gitlfs Repository-ներով:
---
- name: Nexus
hosts: nexus
become: yes
vars:
nexus_timezone: 'Ասիա/Օմսկ'
nexus_admin_password: "admin123"
nexus_public_hostname: 'apatsev-nexus-playbook'
httpd_setup_enable: false
nexus_privileges:
- name: all-repos-read
description: 'Կարդալ & Նայելու մուտք բոլոր հսկիչներին'
repository: '*'
actions:
- read
- browse
- name: company-project-deploy
description: 'Հիմնական նախագծերի տեղադրումներ'
repository: company-project
actions:
- add
- edit
nexus_roles:
- id: Developpers # համընկնում է LDAP խմբի
name: developers
description: Բոլոր ծրագրավորողները
privileges:
- nx-search-read
- all-repos-read
- company-project-deploy
roles: []
nexus_local_users:
- username: jenkins # օգտակար է որպես բանալին թարմացնելու համար
first_name: Jenkins
last_name: CI
email: support@company.com
password: "s3cr3t"
roles:
- Developpers # այստեղ դերում ID-ն
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. Ծանր ծրագիր nexus_config_yum-ի համար հաստատեք դուրս գալու կատալոգ
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. Ծանր ծրագիր nexus_config_npm-ի համար հաստատեք դուրս գալու կատալոգ
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. Ծանր ծրագիր nexus_config_docker-ի համար հաստատեք դուրս գալու կատալոգ
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. Ծանր ծրագիր nexus_config_bower-ի համար հաստատեք դուրս գալու կատալոգ
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. Ծանր ծրագիր nexus_config_pypi-ի համար հաստատեք դուրս գալու կատալոգ
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. Ծանր ծրագիր nexus_config_rubygems-ի համար հաստատեք դուրս գալու կատալոգ
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. Ծանր ծրագիր nexus_config_gitlfs-ի համար հաստատեք դուրս գալու կատալոգ
nexus_config_gitlfs: true
nexus_repos_gitlfs_hosted:
- name: gitlfs-hosted
roles:
- { role: geerlingguy.java }
# Debian/Ubuntu միայն
# - { 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 միայն
- { 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'] }Սկրինշոթներ:


Համակարգային դերեր
Դերի փոփոխականներ
Խմբանմուշի առանձին փոփոխականներ (տես. default/main.yml):
Ընդհանուր փոփոխականներ
nexus_version: ''
nexus_timezone: 'UTC'Ամենայն հավանականությամբ, դերը կհիմնի Nexus-ի վերջին հասանելի տարբերակը: Դուք կարող եք շտկել տարբերակը՝ փոխելով փոփոխականը nexus_version. Խնդրում եմ տեսեք հասանելի տարբերակները՝ .
Եթե դուք փոխեք տարբերակը նորից, ապա դերը կփորձի թարմացնել ձեր տեղադրած Nexus-ը:
Եթե դուք օգտագործում եք ավելի հին տարբերակ Nexus-ից, քան վերջինը, դուք պետք է համոզվեք, որ չօգտագործեք ֆունկցիաներ, որոնք չեն հասանելի տեղադրված թողարկման մեջ (օրինակ՝ yum ռեպոզիտորների տեղադրում հասանելի է Nexus-ից մեծ քան 3.8.0 համար, git lfs ռեպո՝ Nexus-ից մեծ քան 3.3.0 և այլն)
nexus_timezone — սա Java-ի ժամային գոտու անունն է, որը կարող է լինել օգտակար՝ ամբողջացած ստորև նշված cron արտահայտություններին nexus_scheduled tasks-ի համար:
Nexus-ի պորտն ու համատեքստի ուղի
nexus_default_port: 8081
nexus_default_context_path: ' / '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-ի օրինակների ուղիներ
nexus_installation_dir: '/opt'
nexus_data_dir: '/var/nexus'
nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"Nexus-ի ուղիները:
nexus_installation_dirպարունակում է տեղադրված կատարվող ֆայլերը:nexus_data_dirպարունակում է ամբողջ կոնֆիգուրացիան, ռեպոզիտորները և բեռնված արգասիքները։ Բլոբների անհատական ուղիներըnexus_data_dirերաշխավորված կարող են ձևավորվել, տեսեք ստորևnexus_blobstores.nexus_tmp_dirպարունակում է բոլոր ժամանակավոր ֆայլերը։ Redhat-ի համար ստանդարտ ուղին տեղափոխվել է/tmpպայմանական փաշինքների Ձեռնարկների համար: տեսեք #168.
Nexus JVM հիշողության կարգավորում
nexus_min_heap_size: "1200M"
nexus_max_heap_size: "{{ nexus_min_heap_size }}"
nexus_max_direct_memory: "2G"Այս կարգավորումները Nexus-ի ստանդարտ կարգավորումներ են: Խնդրում եմ, մի՛ փոխեք այս արժեքները Եթե դուք չեք կարդացել և չեք հասկանում, թե ինչ են անում:
Երկրորդ նախազգուշություն, սա հանելուկը վերոհիշյալ փաստաթղթից:
Նախագծում է որպես նախատեսվող մակարդակներում գերազանցելու գումարը `տա՛ դեռ ավարտին`:
Երևակայակի գաղտնաբառ
nexus_admin_password: 'changeme'Արդյունավետ, տեղադրման համար admin-ի գրանցման գաղտնաբառը: Սա աշխատում է միայն առաջին տեղադրման ժամանակ. Խնդրում եմ տեսեք [Գրանցման գաղտնաբառը փոխել առաջին տեղադրման հետո](# change-admin-password-after-first-install), եթե ցանկանում եք փոխել այն ավելի ուշ դերի միջոցով:
Հստակ չի խորհուրդ տրվում պահել ձեր գաղտնաբառը բաց տեքստով playbook-ում, այլ օգտագործել [անաֆիլային վարձակալություն] () (կամ միացման միջոցով կամ առանձին ֆայլում, որը կարող է բեռնվել, օրինակ, օգտագործելով include_vars)
Անվանումը默认
nexus_anonymous_access: falseԱնանուն մուտք ապահովված չէ: Մանրամասներ՝ .
Հ публичное имя хоста
nexus_public_hostname: 'nexus.vm'
nexus_public_scheme: httpsԼրիվ դոմենի անուն և схема (https կամ http), ըստ որի Nexus-ը հասանելի կլինի իր հաճախորդների համար:
API մուտք այս դերի համար
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 }}"Այս փոփոխականները կառավարում են, թե ինչպես է դերը միանում Nexus API-ին մատուցման համար:
Միայն փորձառու օգտագործողների համար: Սահմաններում փոփոխություն կատարելը մոտոհետախուզման խոչընդոտ է:
Հետադարձ պրոքսի կարգավորումները
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: true安装 .
Այս ամենը պահանջում է httpd տեղադրել: Նշում՝ երբ httpd_setup_enable կարգավորումն իրագործված է, nexus-ը կապվում է 127.0.0.1:8081, այդպիսովճշմարիտուղիղ հասանելի է HTTP-порт 8081-ի միջոցով արտաքին IP հասցեից: не Օգտվողի անվանDefault անունը՝
nexus_public_hostname ։ Եթե ձեզ անհրաժեշտ են տարբեր անուններ որևէ պատճառով, կարող եք կարգավորելhttpd_server_name համաձայն այլ արժեքի: httpd_copy_ssl_files: true
Ս (մանրամասով) վերոնշյալ վկայագրերը նախնական կանոնավոր ձևատեղի մեջ պետք է լինեն և կփոխանցվեն սերվեր և կկարգավորվեն apache-ում: Եթե ցանկանում եք օգտագործել արդեն գոյություն ունեցող վկայագրեր սերվերում, կարգավորվեք
httpd_copy_ssl_files: false և մատուցեք հետևյալ փոփոխականները: 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 }}"ամրացված չի, և պետք է մնա անսահման, եթե ցանկանում եք կոնլեֆիլացիայի ֆայլ սահմանել: httpd_default_admin_email: "admin@example.com"
Անցքemail адрес администратор по умолчаниюLDAP կարգավորում
LDAP միացումներն և անվտանգություն թիմերը по умолчанию отключены
nexus_ldap_realm: false ldap_connections: []
LDAP միացումներ՝ յուրաքանչյուր տարրը տեսք ունի այսպես:
nexus_ldap_realm: true
ldap_connections:
- ldap_name: 'Իմ ընկերության 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' # կամ պարզ
ldap_auth_username: 'username' # եթե auth = պարզ
ldap_auth_password: 'password' # եթե auth = պարզ
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 vault-ում
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 vault-ում
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 կարգավորում 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 vault-ում
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'Իրավունքներ
nexus_privileges:
- name: all-repos-read # օգտագործվում է որպես բանալի իրավունքի թարմացման համար
# type: <մի aplikasi, repository-admin, repository-content-selector, repository-view, script կամ wildcard>
description: 'Կարդալ & Որոնում հասանելիություն բոլոր ռեպոզիտորիաների համար'
repository: '*'
actions: # կարող է լինել ավելացնել, դիտել, ստեղծել, ջնջել, խմբագրել, կարդալ կամ * (բոլորը)
- read
- browse
# pattern: pattern
# domain: domain
# script_name: nameՀրապարակումը միավորելու համար։ Ուշադրություն դարձրեք փաստաթղթերին և գրաֆիկական ինտերֆեյսին՝ ստուգելու համար, թե որոնք են փոփոխականները, որոնք պետք է սահմանվեն իրավունքի տեսակին համապատասխան:
Այս տարրերը միանում են հետևյալ հնարավորությունների չափանիշներին.
_nexus_privilege_defaults:
type: repository-view
format: maven2
actions:
- readՊորտֆոլիոն (Nexus-ի ներսում)
nexus_roles:
- id: Developpers # կարող է համապատասխանել LDAP խմբի ID-ին, նույնպես օգտագործվում է որպես բանալի զանգվածում մեկ փոխելու համար
name: developers
description: Բոլոր ծրագրավորողները
privileges:
- nx-search-read
- all-repos-read
roles: [] # այլ դերերի անունների հղումներՀրապարակումը հավաստագրերի համար.
Օգտագործողներ
nexus_local_users: []
# - username: jenkins # օգտագործվում է որպես բանալի թարմացման համար
# state: present # ենթադրյալ արժեք, եթե բացակայում է, օգտագործել 'absent'՝ օգտատիրոջ ջնջման համար
# first_name: Jenkins
# last_name: CI
# email: support@company.com
# password: "s3cr3t"
# roles:
# - developers # դեր IDLocals (չ-LDAP) օգտագործողների/հաշվեհամարների ցուցակ, որոնք պետք է ստեղծվեն Nexus-ում.
Nexus-ում ստեղծվելիք տեղական (չ-LDAP) օգտվողների/հաշվեհամարների ցուցակը.
nexus_ldap_users: []
# - username: j.doe
# state: present
# roles:
# - "nx-admin"LDAP օգտագործողների/դերի մապինգը: Ստիճան absent ջնջում է դերեր գոյություն ունեցող օգտվողից, եթե նա արդեն առկա է:
LDAP օգտողները չեն ջնջվում: Դեր սահմանելու փորձը գոյություն չունեցող օգտվողի համար կբերի خطا:
Բովանդակության ընտրիչներ
nexus_content_selectors:
- name: docker-login
description: Docker մուտքի իրավունքի ընտրիչ
search_expression: format=="docker" and path=~"/v2/"Հավելյալ տեղեկությունների համար ընտրության ընտրիչի մասին տեսե՛ք. .
Օգտակարություն ապրելու համար ընտրության ընտրիչի մասին, ավելացրեք նոր իրավունք՝ type: repository-content-selector և համապատասխանcontentSelector
- name: docker-login-privilege
type: repository-content-selector
contentSelector: docker-login
description: 'Մուտք բաժնում Docker գրանցում'
repository: '*'
actions:
- read
- browseBlobstore-ներ և ռեպոզիտորիաներ
nexus_delete_default_repos: falseՋնջեք ռեպոզիտորիաները Nexus-ի սկզբնական նախասիրական կառուցվածքից: Այս քայլը իրականանում է միայն առաջին instal-ի ժամանակ (երբ nexus_data_dir արդյունաբերություն է հանդիսանում)
Նեքսուսի սկզբնական նախասիրական կառուցվածքից ջնջել ռեպոզիտորիաները: Այս փուլը կատարվում է միայն առաջին անգամ տեղադրելու ժամանակ (երբ nexus_data_dir պատրաստ է լինելու).
nexus_delete_default_blobstore: falseՋնջեք սկզբնական blobstore-ը Nexus-ի սկզբնական նախասիրական կառուցվածքից: Սա կարող է կատարվել միայն եթե nexus_delete_default_repos: true և բոլոր կժովեկավորված ռեպոզիտորիաներն (տեսք ներքևում) ունեն բացատրական: blob_store: custom. Այս քայլը իրականացվում է միայն առաջին անգամ տեղադրելու ժամանակ (երբ nexus_data_dir արդյունաբերություն է հանդիսանում)
Բլոբերի (բինարային արխիվների) պահեստի ջնջումը ի սկզբանե անջատված է ենթակա կարգավորումից: Բլոբերի պահեստը (բինարային արխիվները) ջնջելու համար անջատեք nexus_delete_default_repos: true. Այս փուլը իրականացվում է միայն առաջին տեղադրման ժամանակ (երբ nexus_data_dir պատրաստ է լինելու).
nexus_blobstores: []
# օրինակ բլոբային պահեստի տարր :
# - name: separate-storage
# 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 }}"շինելու համար: Բլոբային պահեստի ճանապարհն ու ռեպոզիտորի բլոբային պահեստը չեն կարող թարմացվել սկզբնական ստեղծմանց հետո (այստեղ ցանկացած թարմացում կIgnored կլինի վերահաստատման ժամանակ):
S3-ի վրա բլոբային պահեստի կարգավորումը տրամադրվում է որպես հարմարություն և չի հանդիսանում ավտոմատացված թեստերի մի մասը, որոնք մենք կատարում ենք travis-ում: Ծանոթացեք, որ S3-ում պահելը խորհուրդ է տրվում միայն AWS-ում տեղակայված օրինակների համար:
Ստեղծում . Պահեստի ճանապարհն ու ռեպոզիտորիայի պահեստը չեն կարող թարմացվել սկզբնական ստեղծողից հետո (այստեղ ցանկացած թարմացում կIgnored կլինի նորից տրամադրման դեպքում):
BLOB օբյեկտների պահեստի կարգավորումը S3-ի վրա տրամադրվում է հարմարության համար: Խնդրում ենք նկատի ունենալ, որ S3-ում պահելը խորհուրդ է տրվում միայն AWS-ում տեղակայված օրինակների համար:
nexus_repos_maven_proxy:
- name: central
remote_url: 'https://repo1.maven.org/maven2/'
layout_policy: permissive
# maximum_component_age: -1
# maximum_metadata_age: 1440
# negative_cache_enabled: true
# negative_cache_ttl: 1440
- name: jboss
remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
# maximum_component_age: -1
# maximum_metadata_age: 1440
# negative_cache_enabled: true
# negative_cache_ttl: 1440
# օրինակ մուտքերի անուն/գաղտնաբառով :
# - name: secret-remote-repo
# remote_url: 'https://company.com/repo/secure/private/go/away'
# remote_username: 'username'
# remote_password: 'secret'
# # maximum_component_age: -1
# # maximum_metadata_age: 1440
# # negative_cache_enabled: true
# # negative_cache_ttl: 1440Ուղղակի օրինակից կոնֆիգուրացիան Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # մեկը "թույլտվություն", "թույլտվություն մեկ անգամ" կամ "արտադրություն"Maven կոնֆիգուրացիա: Արտաքին կաղապարն ընտրական է և զուգահեռվում է վերոնշյալ արժեքներին, եթե բացակայեն:
Կոնֆիգուրացիա Maven: Արտաքին կաղապարի կոնֆիգուրացիան (-1) ընտրական է և արտադրվելու է վերոնշյալ արժեքներով, եթե բացակայեն。
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jbossԿոնֆիգուրացիա Maven.
Բոլոր երեք ռեպոզիտորիայի տեսակները համակցվում են հետևյալ արժեքներով:
_nexus_repos_maven_defaults:
blob_store: default # Անշուշտ չի կարող թարմացվել, երբ ռեպոզիտորիան ստեղծվել է
strict_content_validation: true
version_policy: release # թողարկում, ենթադրություն կամ խառնուրդ
layout_policy: strict # խիստ կամ թույլատրելու
write_policy: allow_once # մեկը "թույլատրություն", "թույլատրություն մեկ անգամ" կամ "արգելել"
maximum_component_age: -1 # Nexus.gui-ի դեֆարմնի: Մկրատի դեֆարմնի միայն
maximum_metadata_age: 1440 # Nexus.gui-ի դեֆարմնի: Մկրատի դեֆարմնի միայն
negative_cache_enabled: true # Nexus.gui-ի դեֆարմնի: Մկրատի դեֆարմնի միայն
negative_cache_ttl: 1440 # Nexus.gui-ի դեֆարմնի: Մկրատի դեֆարմնի միայնDocker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS և yum ռեպոզիտորիայի տեսակներ:
see defaults/main.yml այս հաստատությունների համար:
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS և yum պահեստները ստորոգան անջատված են:
Տեսեք defaults/main.yml այս հաստատությունների համար:
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: falseԽնդրում ենք նկատի ունենալ, որ հարկավոր է ակտիվացնել որոշակի անվտանգության ոլորտներ, եթե ցանկանում եք օգտագործել այլ տիպի ռեպոզիտորիաներ, բացի maven-ից: Սա ընդհանուր առմամբ կեղծ է
nexus_nuget_api_key_realm: կեղծ
nexus_npm_bearer_token_realm: կեղծ
nexus_docker_bearer_token_realm: կեղծ # պահանջվում է docker անանուն մուտքի համարՀեռակա օգտվողի ոլորտը նույնպես կարող է ակտիվացվել միջոցով
nexus_rut_auth_realm: ճշգրիտև վերտառությունը կարող է կարգավորվել ի զուգահեռ
nexus_rut_auth_header: "CUSTOM_HEADER"Հաշվետվություններ
nexus_scheduled_tasks: []
# # Օրինակային առաջադրանք՝ blobs-ների խթանման համար:
# - name: compact-docker-blobstore
# cron: '0 0 22 * * ?'
# typeId: blobstore.compact
# task_alert_email: alerts@example.org # համաձայն ցանկությամբ
# taskProperties:
# blobstoreName: {{ nexus_blob_names.docker.blob }} # բոլոր առաջադրանքի հատկությունները թաքնված են որպես տողեր nexus-ի ներսում
# # Օրինակային առաջադրանք maven-նկարագրվածների մաքրման համար
# - name: Purge-maven-snapshots
# cron: '0 50 23 * * ?'
# typeId: repository.maven.remove-snapshots
# task_alert_email: alerts@example.org # համաձայն ցանկությամբ
# taskProperties:
# repositoryName: "*" # * բոլոր ռեպոզիտորիաների համար։ Դարձեք ռեպոզիտի անվանում, եթե ցանկանում եք միայն հատուկ մեկը
# minimumRetained: "2"
# snapshotRetentionDays: "2"
# gracePeriodInDays: "2"
# booleanTaskProperties:
# removeIfReleased: ճշգրիտ
# # Օրինակային առաջադրանք անօգտագործվող docker մանիֆեստների և պատկերների մաքրում
# - name: Purge unused docker manifests and images
# cron: '0 55 23 * * ?'
# typeId: "repository.docker.gc"
# task_alert_email: alerts@example.org # համաձայն ցանկությամբ
# taskProperties:
# repositoryName: "*" # * բոլոր ռեպոզիտորիաների համար։ Դարձեք ռեպոզիտի անվանում, եթե ցանկանում եք միայն հատուկ մեկը
# # Օրինակային առաջադրանք անավարտ docker բեռնման մաքրում
# - name: Purge incomplete docker uploads
# cron: '0 0 0 * * ?'
# typeId: "repository.docker.upload-purge"
# task_alert_email: alerts@example.org # համաձայն ցանկությամբ
# taskProperties:
# age: "24" հավաստագրերի համար. typeId և առաջադրանքի համար յուրահատուկtaskProperties/booleanTaskProperties հնարավոր է գուշակել կամ հետևյալ կերպ՝
- Java տիպերի ինհերիտացիայից
org.sonatype.nexus.scheduling.TaskDescriptorSupport - ստուգելով ձեր բրաուզերում առաջադրանքի ստեղծման HTML ձևը
- AJAX հարցումների դիտարկմամբ ձեր բրաուզերում՝ ձեռքով առաջադրանքը կարգավորելու ժամանակ:
Աջակցության հատկությունները պետք է հայտարարեն ճիշտ yaml բլոկում՝ կախված դրանց տիպից:
taskPropertiesբոլոր ստրինգային հատկությունների համար (например, ռեպոզիտորիաների անուններ, хранилищեր, ժամանակահատվածներ…)։booleanTaskPropertiesբոլոր տրամաբանական հատկությունների համար (например, հիմնական հնարավորությունները նեքսուսի ստեղծման ինտերֆեյսում։
Պաշտպանություններ
nexus_backup_configure: կեղծ
nexus_backup_cron: '0 0 21 * * ?' # Տեսեք cron արտահայտությունների սահմանումը նեքսուսի ստեղծել առաջադրանքի GUI-ում
nexus_backup_dir: '\/var\/nexus-backup'
nexus_restore_log: '{{ nexus_backup_dir }}\/nexus-restore.log'
nexus_backup_rotate: կեղծ
nexus_backup_rotate_first: կեղծ
nexus_backup_keep_rotations: 4 # Ֆիքսեք 4 պաշտպանված հերթափոխ՝ ըստ կարգի (current + last 3)Պաշտպանություն չի լինի սահմանված դեռ այն ժամանակ, երբ չգիտակցեք nexus_backup_configure մեջ ճշմարիտ.
Այդ դեպքում ծրագրված առաջադրանք ...
կանխիկ տարածքում՝ նշված nexus_backup_cron (ընդհանուր առմամբ 21:00 ամեն օր):
Տեսեք [Groovy ձևանմուշը այս առաջադրանքի համար](templates \/ backup.groovy.j2) մանրամասն տեղեկությունների համար։
Այս ծրագրված առաջադրանքը կախված չէ այլ nexus_scheduled_tasks, որոնք դուք
հայտարարել եք ձեր խաղատոմսում:
Եթե ցանկանում եք շրջապատել/մաքրել պաշտպանությունները, սահմանեք nexus_backup_rotate: ճշգրիտ և սահմանել ցանկալի պաշտպանության քանակությունը, որը ցանկանում եք պահպանել միջոցով nexus_backup_keep_rotations (հանուն 4)
Քանի որ օգտագործվում է շրջադարձ, եթե ցանկանում եք խնայել լրացուցիչ սկավառակի տարածություն սրսկման գործընթացի ժամանակ,
Դուք կարող եք սահմանել nexus_backup_rotate_first: true. Սա կարգ կհանի նախնական շրջադարձի/ջնջման առաջ բեկման առաջ: Հանուն 4, շրջադարձը տեղի է ունենում բեկման ստեղծմանց հետո: Կազի դա, հին բեկումները
ջնջվելու են, մինչդեռ ներկայիս բեկումը կարվի:
Վերականգնման գործընթաց
Թողնել խաղային գիրքը պարամետրով -e nexus_restore_point=
(օրինակ, 2017-12-17-21-00-00 17 դեկտեմբերի 2017-ին 21:00-ին):
nexus-ի ջնջում
Զգուշացում: Սա ամբողջությամբ ջնջելու է huidige տվյալները: Կատարեք նախկինում բեկում, եթե դա անհրաժեշտ է:
Օգտագործեք փոփոխական nexus_purge, եթե ձեզ հարկավոր է սկսել նորից և վերատեղադրել nexus-ի օրինակին բոլոր տվյալները ջնջելով:
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=trueՓոխել ադմինիստրատորի գաղտնաբառը առաջին տեղադրումից հետո
nexus_default_admin_password: 'admin123'Սա չպետք է փոխվի ձեր խաղավում:. Այս փոփոխականը լիաթափման պահին լցնում է Nexus-ի ադմինիստրատորի ստանդարտ գաղտնաբառը և ապահովում է, որ կարողանանք փոխել ադմինիստրատորի գաղտնաբառը nexus_admin_password.
Եթե ցանկանում եք փոխել ադմինիստրատորի գաղտնաբառը առաջին տեղադրումից հետո, կարող եք ժամանակավորապես փոխել այն հին գաղտնաբառով հրամանային գծից: Փոխելուց հետո nexus_admin_password դուք կարող եք սկսել ձեր խաղային գրքում:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPasswordTelegram ալիք Nexus Sonatype-ի համար:
Պատասխանելու համար պետք է գրանցված օգտվող լինել։ , խնդրում եմ։
Ի՞նչ արկածներ եք օգտագործում:
Sonatype Nexus անվճար է
Sonatype Nexus վճարովի է
Artifactory անվճար է
Artifactory վճարովի է
Harbor
Pulp
9 օգտագործողն են քվեարկել: 3 օգտագործողը խուսափել են:
Ընտանիք: habr.com
