انسٽال ڪرڻ ۽ ترتيب ڏيڻ Nexus Sonatype انفراسٽرڪچر استعمال ڪندي ڪوڊ اپروچ جي طور تي

Sonatype Nexus هڪ مربوط پليٽ فارم آهي جنهن ذريعي ڊولپرز جاوا (Maven) انحصار، Docker، Python، Ruby، NPM، Bower تصويرون، RPM پيڪيجز، gitlfs، Apt، Go، Nuget، پراکسي، اسٽور ۽ منظم ڪري سگهن ٿا ۽ انهن جي سافٽ ويئر سيڪيورٽي کي ورهائي سگهن ٿا.

توهان کي Sonatype Nexus جي ضرورت ڇو آهي؟

  • خانگي نوادرات کي محفوظ ڪرڻ لاء؛
  • ڪيشنگ آرٽيڪلز لاءِ جيڪي انٽرنيٽ تان ڊائون لوڊ ڪيا ويا آهن؛

بنيادي Sonatype Nexus پيڪيج ۾ مدد ڪيل آرٽيڪل:

  • جاوا، ماون (جر)
  • Docker
  • پٿون (پائپ)
  • روبي (جيم)
  • اين پي ايم
  • ٻرندڙ
  • يوم (rpm)
  • gitlfs
  • را
  • اپٽ (ڊيب)
  • Go
  • نانگ

ڪميونٽي جي مدد ڪيل آرٽيڪل:

  • موسيقار
  • Conan
  • CPAN
  • ايل پي اي
  • هيلمٽ
  • P2
  • R

Sonatype Nexus استعمال ڪندي انسٽال ڪرڻ https://github.com/ansible-ThoTeam/nexus3-oss

گه

  • انٽرنيٽ تي جوابي استعمال ڪرڻ بابت پڙهو.
  • انسٽال ڪريو قابل قبول pip install ansible ورڪ اسٽيشن تي جتي راند جو ڪتاب هلندو آهي.
  • سيٽ geerlingguy.java ورڪ اسٽيشن تي جتي راند جو ڪتاب هلندو آهي.
  • سيٽ geerlingguy.apache ورڪ اسٽيشن تي جتي راند جو ڪتاب هلندو آهي.
  • اهو ڪردار CentOS 7، Ubuntu Xenial (16.04) ۽ Bionic (18.04)، Debian Jessie ۽ Stretch تي آزمايو ويو آهي.
  • jmespath لائبريري کي لازمي طور تي ڪم اسٽيشن تي نصب ڪيو وڃي جتي پلي بڪ هلندي آهي. انسٽال ڪرڻ لاءِ: sudo pip install -r requirements.txt
  • پلي بڪ فائل محفوظ ڪريو (هيٺ ڏنل مثال) nexus.yml فائل ۾
  • Nexus تنصيب کي هلائڻ ansible-playbook -i host nexus.yml

مثال طور جوابي-پلي بڪ انسٽال ڪرڻ لاءِ Nexus بغير LDAP سان Maven (java)، Docker، Python، Ruby، NPM، Bower، RPM ۽ gitlfs repositories.

---
- name: Nexus
  hosts: nexus
  become: yes

  vars:
    nexus_timezone: 'Asia/Omsk'
    nexus_admin_password: "admin123"
    nexus_public_hostname: 'apatsev-nexus-playbook'
    httpd_setup_enable: false
    nexus_privileges:
      - name: all-repos-read
        description: 'Read & Browse access to all repos'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Deployments to company-project'
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # maps to the LDAP group
        name: developers
        description: All developers
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # used as key to update
        first_name: Jenkins
        last_name: CI
        email: [email protected]
        password: "s3cr3t"
        roles:
          - Developpers # role ID here
    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. Change nexus_config_yum to true for create yum repository
    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. Change nexus_config_npm to true for create npm repository
    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. Change nexus_config_docker to true for create docker repository
    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. Change nexus_config_bower to true for create bower repository
    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. Change nexus_config_pypi to true for create pypi repository
    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. Change nexus_config_rubygems to true for create rubygems repository
    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. Change nexus_config_gitlfs to true for create gitlfs repository
    nexus_config_gitlfs: true
    nexus_repos_gitlfs_hosted:
      - name: gitlfs-hosted

  roles:
    - { role: geerlingguy.java }
    # Debian/Ubuntu only
    # - { 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 only
    - { 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'] }

اسڪرين شاٽس

انسٽال ڪرڻ ۽ ترتيب ڏيڻ Nexus Sonatype انفراسٽرڪچر استعمال ڪندي ڪوڊ اپروچ جي طور تي

انسٽال ڪرڻ ۽ ترتيب ڏيڻ Nexus Sonatype انفراسٽرڪچر استعمال ڪندي ڪوڊ اپروچ جي طور تي

متغير ڪردار

ڪردار متغير

ڊفالٽ قدرن سان متغير (ڏسو default/main.yml):

عام متغير

    nexus_version: ''
    nexus_timezone: 'UTC'

ڊفالٽ طور، ڪردار Nexus جو جديد دستياب ورزن انسٽال ڪندو. توهان متغير کي تبديل ڪندي نسخي کي درست ڪري سگھو ٿا nexus_version. ڏسو دستياب نسخن تي https://www.sonatype.com/download-oss-sonatype.

جيڪڏهن توهان نئين ورزن ۾ تبديل ڪندا آهيو، ڪردار توهان جي Nexus تنصيب کي اپڊيٽ ڪرڻ جي ڪوشش ڪندو.

جيڪڏهن توهان Nexus جو جديد نسخو استعمال ڪري رهيا آهيو، توهان کي پڪ ڪرڻ گهرجي ته توهان خاصيتون استعمال نه ڪري رهيا آهيو جيڪي نصب ٿيل رليز ۾ موجود نه آهن (مثال طور، 3.8.0 کان وڌيڪ Nexus لاءِ yum repositories جي ميزباني موجود آهي، git lfs repo 3.3.0 کان وڌيڪ نيڪس لاءِ وغيره)

nexus timezone جاوا ٽائم زون جو نالو آهي، جيڪو nexus_scheduled ڪمن لاءِ هيٺين ڪرون ايڪسپريسشن سان گڏ ڪارائتو ٿي سگهي ٿو.

Nexus بندرگاهن ۽ حوالي سان رستو

    nexus_default_port: 8081
    nexus_default_context_path: '/'

جاوا ڪنيڪشن جي عمل جو بندرگاھ ۽ حوالو رستو. 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 مثال جي ڊائريڪٽري

    nexus_installation_dir: '/opt'
    nexus_data_dir: '/var/nexus'
    nexus_tmp_dir: "{{ (ansible_os_family == 'RedHat') | ternary('/var/nexus-tmp', '/tmp/nexus') }}"

Nexus Catalogs.

  • nexus_installation_dir انسٽال ٿيل executable فائلن تي مشتمل آهي
  • nexus_data_dir سڀني ترتيبن، مخزن ۽ ڊائون لوڊ ڪيل نمونن تي مشتمل آهي. ڪسٽم blobstore رستا 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 سسٽم گهرجون ميموري سيڪشن ۽ نه سمجھندا آھن ڇا ڪري رھيا آھن.

ٻي ڊيڄاريندڙ طور، هتي مٿي ڏنل دستاويز مان هڪ اقتباس آهي:

ڪارڪردگي بهتر ڪرڻ جي ڪوشش ۾ تجويز ڪيل قدرن کان وڌيڪ JVM هيپ ميموري کي وڌائڻ جي سفارش نه ڪئي وئي آهي. اهو ٿي سگهي ٿو اصل ۾ مخالف اثر، نتيجي ۾ آپريٽنگ سسٽم لاء غير ضروري ڪم.

ايڊمنسٽريٽر پاسورڊ

    nexus_admin_password: 'changeme'

سيٽ اپ لاءِ ”منتظم“ کاتي جو پاسورڊ. اهو صرف پهرين ڊفالٽ تنصيب تي ڪم ڪري ٿو. مھرباني ڪري ڏسو [منتظم پاسورڊ تبديل ڪريو پھرين انسٽاليشن کان پوءِ](# change-admin-password-after-first-install) جيڪڏھن توھان ان کي تبديل ڪرڻ چاھيو ٿا بعد ۾ ڪردار استعمال ڪندي.

اها سختي سان صلاح ڏني وئي آهي ته توهان جو پاسورڊ پلي بڪ ۾ صاف متن ۾ محفوظ نه ڪريو، پر استعمال ڪرڻ لاء [اننسيبل-واٽ انڪريپشن] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (يا ته ان لائن يا هڪ الڳ فائل ۾ لوڊ ٿيل آهي مثال طور 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: "[email protected]"
    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

سيٽ 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 (ڊفالٽ طور) مٿي ڏنل سرٽيفڪيٽن کي توهان جي راند بڪ ڊاريڪٽري ۾ موجود هجڻ گهرجي ۽ سرور ڏانهن نقل ڪيو ويندو ۽ اپاچي ۾ ترتيب ڏنو ويندو.

جيڪڏهن توهان سرور تي موجود سرٽيفڪيٽ استعمال ڪرڻ چاهيو ٿا، انسٽال ڪريو 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 اختياري آھي ۽ جيڪڏھن توھان چاھيو ٿا ته زنجير فائل کي ڪسٽمائيز ڪرڻ نٿا چاھيو ته ڇڏي ڏنو وڃي

    httpd_default_admin_email: "[email protected]"

مقرر ڪريو ڊفالٽ منتظم اي ميل پتو

LDAP ترتيب

LDAP ڪنيڪشن ۽ سيڪيورٽي ريم ڊفالٽ طور بند ٿيل آهن

    nexus_ldap_realm: false
    ldap_connections: []

LDAP ڪنيڪشن، هر عنصر هن طرح نظر اچي ٿو:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'My Company LDAP' # used as a key to update the ldap config
        ldap_protocol: 'ldaps' # ldap or ldaps
        ldap_hostname: 'ldap.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false # Wether or not to use certs in the nexus trust store
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_auth: 'none' # or simple
        ldap_auth_username: 'username' # if auth = simple
        ldap_auth_password: 'password' # if auth = simple
        ldap_user_base_dn: 'ou=users'
        ldap_user_filter: '(cn=*)' # (optional)
        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: false

مثال LDAP تشڪيل لاءِ گمنام تصديق (گمنام پابند)، هي پڻ هڪ "گهٽ ۾ گهٽ" ترتيب آهي:

    nexus_ldap_realm: true
    ldap_connection:
      - ldap_name: 'Simplest LDAP config'
        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 config with 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 }}" # better keep passwords in an 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: false

مثال LDAP ٺاھ جوڙ لاءِ سادي تصديق (DSA اڪائونٽ استعمال ڪندي) + ڪردارن جي طور تي ميپ ٿيل گروپ:

    nexus_ldap_realm: true
    ldap_connections
      - ldap_name: 'LDAP config with 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 }}" # better keep passwords in an 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: false

مثال LDAP ٺاھ جوڙ لاءِ سادي تصديق (DSA اڪائونٽ استعمال ڪندي) + گروپن کي متحرڪ طور نقشي طور ڪردارن جي طور تي:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP config with 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 }}" # better keep passwords in an 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 # 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_privilege_defaults:
      type: repository-view
      format: maven2
      actions:
        - read

ڪردار (اندر Nexus هن جو مطلب آهي)

    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

مقامي (غير 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: Selector for docker login privilege
    search_expression: format=="docker" and path=~"/v2/"

مواد چونڊيندڙ جي باري ۾ وڌيڪ معلومات لاء، ڏسو دستاويزي.

مواد چونڊيندڙ کي استعمال ڪرڻ لاء، شامل ڪريو نئون استحقاق سان type: repository-content-selector ۽ لاڳاپيلcontentSelector

- name: docker-login-privilege
  type: repository-content-selector
  contentSelector: docker-login
  description: 'Login to Docker registry'
  repository: '*'
  actions:
  - read
  - browse

Blobstores ۽ repositories

    nexus_delete_default_repos: false

Nexus Install جي شروعاتي ڊفالٽ ترتيبن مان ذخيرو ختم ڪريو. اهو قدم صرف پهريون ڀيرو انسٽال ڪرڻ تي عمل ڪيو ويندو آهي (جڏهن nexus_data_dir خالي معلوم ڪيو ويو آهي).

Nexus لاءِ ڊفالٽ ڊفالٽ ترتيبن مان مخزن کي هٽائڻ. اهو قدم صرف پهرين انسٽاليشن دوران ڪيو ويندو آهي (جڏهن nexus_data_dir خالي).

    nexus_delete_default_blobstore: false

ڊفالٽ blobstore کي ختم ڪريو Nexus install جي شروعاتي ڊفالٽ ترتيب مان. اهو صرف ڪري سگهجي ٿو جيڪڏهن nexus_delete_default_repos: true ۽ سڀئي ترتيب ڏنل مخزن (هيٺ ڏسو) هڪ واضح آهي blob_store: custom. اهو قدم صرف پهريون ڀيرو انسٽال ڪرڻ تي عمل ڪيو ويندو آهي (جڏهن nexus_data_dir خالي معلوم ڪيو ويو آهي).

بلب اسٽوريج کي هٽائڻ (بائنري آرٽيڪل) کي ڊفالٽ طور تي شروعاتي ترتيب کان غير فعال ڪيو ويو آهي. بلب اسٽوريج (بائنري آرٽيڪل) کي هٽائڻ لاء، بند ڪريو nexus_delete_default_repos: true. اهو قدم صرف پهرين انسٽاليشن دوران ڪيو ويندو آهي (جڏهن nexus_data_dir خالي).

    nexus_blobstores: []
    # example blobstore item :
    # - 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 }}"

بلب اسٽورز تخليق ڪرڻ. هڪ blobstore رستو ۽ هڪ repository blobstore شروعاتي ٺاھڻ کان پوءِ اپڊيٽ نه ٿي ڪري سگھجي (هتي ڪنھن به تازه ڪاري کي ٻيهر فراهم ڪرڻ تي نظرانداز ڪيو ويندو).

S3 تي بلب اسٽور کي ترتيب ڏيڻ هڪ سهولت جي طور تي مهيا ڪيو ويو آهي ۽ اهو حصو نه آهي خودڪار ٽيسٽن جو اسان ٽريوس تي هلون ٿا. مهرباني ڪري نوٽ ڪريو ته S3 تي اسٽوريج صرف AWS تي ترتيب ڏنل مثالن لاءِ سفارش ڪئي وئي آهي.

تخليق بلب اسٽورز. اسٽوريج جو رستو ۽ اسٽوريج ريپوزٽري شروعاتي تخليق کان پوءِ اپڊيٽ نه ٿي ڪري سگھجي (هتي ڪا به تازه ڪاري نظر انداز ڪئي ويندي جڏهن ٻيهر نصب ڪيو ويندو).

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
    # example with a login/password :
    # - 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

مٿي هڪ مثال جي تشڪيل آهي پراکسي سرور ميون.

    nexus_repos_maven_hosted:
      - name: private-release
        version_policy: release
        write_policy: allow_once  # one of "allow", "allow_once" or "deny"

ماٿي ميزباني ڪيل ذخيرو تشڪيل. ناڪاري ڪيش config اختياري آهي ۽ ڊفالٽ ٿي ويندي مٿين قدرن کي جيڪڏهن ختم ڪيو وڃي.

ڪنفگريشن ميزباني ڪيل ذخيرو ميون. منفي ڪيش جي ترتيب (-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 repositories ڊفالٽ طور بند ٿيل آھن:
ڏسو 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

مهرباني ڪري نوٽ ڪريو ته توهان کي ڪجهه حفاظتي اسڪوپس کي فعال ڪرڻ جي ضرورت پوندي جيڪڏهن توهان استعمال ڪرڻ چاهيو ٿا ٻين قسمن جا ذخيرا ميون کان سواءِ. اهو ڊفالٽ طور غلط آهي

nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false  # required for docker anonymous access

Remote User Realm پڻ استعمال ڪندي فعال ٿي سگھي ٿو

nexus_rut_auth_realm: true

۽ عنوان وضاحت سان ترتيب ڏئي سگهجي ٿو

nexus_rut_auth_header: "CUSTOM_HEADER"

مقرر ڪيل ڪم

    nexus_scheduled_tasks: []
    #  #  Example task to compact blobstore :
    #  - name: compact-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      blobstoreName: {{ nexus_blob_names.docker.blob }} # all task attributes are stored as strings by nexus internally
    #  #  Example task to purge maven snapshots
    #  - name: Purge-maven-snapshots
    #    cron: '0 50 23 * * ?'
    #    typeId: repository.maven.remove-snapshots
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      repositoryName: "*"  # * for all repos. Change to a repository name if you only want a specific one
    #      minimumRetained: "2"
    #      snapshotRetentionDays: "2"
    #      gracePeriodInDays: "2"
    #    booleanTaskProperties:
    #      removeIfReleased: true
    #  #  Example task to purge unused docker manifest and images
    #  - name: Purge unused docker manifests and images
    #    cron: '0 55 23 * * ?'
    #    typeId: "repository.docker.gc"
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      repositoryName: "*"  # * for all repos. Change to a repository name if you only want a specific one
    #  #  Example task to purge incomplete docker uploads
    #  - name: Purge incomplete docker uploads
    #    cron: '0 0 0 * * ?'
    #    typeId: "repository.docker.upload-purge"
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      age: "24"

مقرر ڪيل ڪم سيٽنگون لاء. typeId ۽ مخصوص ڪمtaskProperties/booleanTaskProperties توهان اندازو لڳائي سگهو ٿا يا ته:

  • جاوا قسم جي درجه بندي کان org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • توھان جي برائوزر ۾ HTML ٽاسڪ ٺاھڻ جو فارم چيڪ ڪريو
  • برائوزر ۾ AJAX درخواستن کي ڏسڻ کان جڏهن دستي طور تي هڪ ڪم کي ترتيب ڏيو.

ٽاسڪ پراپرٽيز کي ان جي قسم جي لحاظ سان صحيح يامل بلاڪ ۾ اعلان ڪيو وڃي:

  • taskProperties سڀني اسٽرنگ ملڪيتن لاءِ (يعني مخزن جا نالا، مخزن جا نالا، وقت جا عرصو...).
  • booleanTaskProperties سڀني منطقي ملڪيتن لاءِ (يعني خاص طور تي چيڪ بڪسس جي GUI ۾ گنج ٺاھڻ واري ڪم).

بيڪ اپ

      nexus_backup_configure: false
      nexus_backup_cron: '0 0 21 * * ?'  # See cron expressions definition in nexus create task gui
      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  # Keep 4 backup rotation by default (current + last 3)

بيڪ اپ ترتيب نه ڏنو ويندو جيستائين توھان سوئچ ڪريو nexus_backup_configure в true.
انهي صورت ۾، مقرر ڪيل اسڪرپٽ ڪم کي Nexus تي هلائڻ لاء ترتيب ڏني ويندي
۾ بيان ڪيل وقفي تي nexus_backup_cron (ڊفالٽ 21:00 هر روز).
تفصيل لاءِ ڏسو [هن ڪم لاءِ گرووي ٽيمپليٽ](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 مثال کي ٻيهر انسٽال ڪريو.

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=oldPassword

Nexus Sonatype تي ٽيليگرام چينل: https://t.me/ru_nexus_sonatype

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

توهان ڪهڙن آثارن جا ذخيرا استعمال ڪندا آهيو؟

  • Sonatype Nexus مفت آهي

  • سونيٽائپ Nexus ادا ڪيو

  • مصنوعي مفت آهي

  • فني ادائگي

  • بندر

  • پل

9 صارفين ووٽ ڪيو. 3 استعمال ڪندڙن کي روڪيو ويو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو