Kod altyapısı kullanarak Nexus Sonatype'in kurulumu ve yapılandırılması

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 https://github.com/ansible-ThoTeam/nexus3-oss

Tələblər

  • Internetdə ansible istifadəsi haqqında oxuyun.
  • ansible-i quraşdırın pip install ansible playbook-un icra olunduğu iş stansiyasında.
  • Quraşdırın geerlingguy.java playbook-un icra olunduğu iş stansiyasında.
  • Quraşdırın geerlingguy.apache 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.
  • jmespath kitabxana playbook-un icra olunduğu iş stansiyasında quraşdırılmalıdır. Quraşdırma üçün sudo 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]

Kod altyapısı kullanarak Nexus Sonatype'in kurulumu ve yapılandırılması

Kod altyapısı kullanarak Nexus Sonatype'in kurulumu ve yapılandırılması

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 https://www.sonatype.com/download-oss-sonatype.

Ə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_dir quraşdırılmış icra fayllarını ehtiva edir
  • nexus_data_dir bütün konfiqurasiyaları, anbarları və yüklənmiş artefaktları ehtiva edir. Xüsusi blobstore yolları nexus_data_dir aşağıda təsdiqlənə bilər nexus_blobstores.
  • nexus_tmp_dir bütün müvəqqəti faylları ehtiva edir. Redhat üçün varsayılan yol /tmp müə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 nexus sistem tələbləri üçün yaddaş bölməsi 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 (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (ya daxildə, ya da include_vars vasitəsilə yüklənən ayrı bir faylda)

Default olaraq anonim giriş

    nexus_anonymous_access: false

Default olaraq anonim giriş deaktivdir. Daha ətraflı məlumat üçün anonim giriş.

İctimai host adı

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Tam 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: true

Quraşdırın SSL geriyə proxy serveri.
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 edin

LDAP 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:, 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: false

LDAP конфигурация для анонимной аутентификации (анонимная привязка), также это «минимальная» конфигурация:

    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: false

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_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 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: name

Siyahı İcazələr 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:
        - read

Rollar (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 istinadlar

Siyahı Rollar 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 ID

Nexus-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: Sənəd.

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
  - browse

Bloblar və repositoriyalar

    nexus_delete_default_repos: false

Nexus 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: false

Nexus 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 }}"

Blobstore-lar 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 Blobstore-lar. 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: 1440

Yuxarıda konfiqurasiya nümunəsi proksi-server Maven.

    nexus_repos_maven_hosted:
      - name: private-release
        version_policy: release
        write_policy: allow_once  # "allow", "allow_once" və ya "deny"-dən biri

Maven yerləşdirilmiş (hosted) depo 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 yerləşdirilmiş (hosted) depo 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
          - jboss

Konfiqurasiya qrupları 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 üçün

Docker, 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: false

Diqqə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 olunur

Uzaq İstifadəçi Aləmi də aktiv edilə bilər

nexus_rut_auth_realm: true

və 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"

Təqvimli vəzifələr 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:

  • taskProperties bütün string xüsusiyyətləri (yəni anbar adları, saxlanma adları, zaman intervalları …).
  • booleanTaskProperties bü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=oldPassword

Nexus Sonatype üçün Telegram kanalı: https://t.me/ru_nexus_sonatype

Yalnız qeydiyyatdan keçmiş istifadəçilər sorğuda iştirak edə bilərlər. Daxil olun, 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

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster