Instalimi dhe konfigurimi i Nexus Sonatype duke përdorur qasjen infrastructure as code

Sonatype Nexus – njĂ« platformĂ« e integruar qĂ« lejon zhvilluesit tĂ« proksinojnĂ«, ruajnĂ« dhe menaxhojnĂ« varĂ«sitĂ« Java (Maven), imazhet Docker, Python, Ruby, NPM, Bower, RPM paketat, gitlfs, Apt, Go, Nuget, si dhe tĂ« shpĂ«rndajnĂ« softuerin e tyre.

Pse nevojitet Sonatype Nexus?

  • PĂ«r ruajtjen e artefakteve private;
  • PĂ«r pĂ«rkohĂ«simin e artefakteve qĂ« shkarkohen nga interneti;

Artefaktet e mbështetura në paketën bazë të Sonatype Nexus:

  • Java, Maven (jar)
  • Docker
  • Python (pip)
  • Ruby (gem)
  • NPM
  • Bower
  • Yum (rpm)
  • gitlfs
  • Raw
  • Apt (deb)
  • Go
  • Nuget

Artefaktet e mbështetura nga komuniteti:

  • Composer
  • Conan
  • CPAN
  • ELPA
  • Helm
  • P2
  • R

Instalimi i Sonatype Nexus duke përdorur https://github.com/ansible-ThoTeam/nexus3-oss

Kërkesat

  • Lexoni pĂ«r pĂ«rdorimin e ansible nĂ« internet.
  • Instaloni ansible pip install ansible nĂ« stacionin e punĂ«s ku ekzekutohet playbook.
  • Instaloni geerlingguy.java nĂ« stacionin e punĂ«s ku ekzekutohet playbook.
  • Instaloni geerlingguy.apache nĂ« stacionin e punĂ«s ku ekzekutohet playbook.
  • Kjo rol Ă«shtĂ« testuar nĂ« CentOS 7, Ubuntu Xenial (16.04) dhe Bionic (18.04), Debian Jessie dhe Stretch
  • jmespath biblioteka duhet tĂ« instalohet nĂ« stacionin e punĂ«s ku ekzekutohet playbook. PĂ«r ta instaluar kryeni sudo pip install -r requirements.txt
  • Ruani skedarin e playbook (shembulli mĂ« poshtĂ«) nĂ« skedarin nexus.yml
  • Nisni instalimin e nexus ansible-playbook -i host nexus.yml

Shembulli ansible-playbook për instalimin e nexus pa LDAP me repozitoret Maven (java), Docker, Python, Ruby, NPM, Bower, RPM dhe gitlfs.

---
- 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: 'Lexo & shfleto në të gjitha repos'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Zbatimet për projektin e kompanisë'
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # përshtatet me grupin LDAP
        name: developers
        description: Të gjithë zhvilluesit
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # përdoret si çelës për përditësim
        first_name: Jenkins
        last_name: CI
        email: support@company.com
        password: "s3cr3t"
        roles:
          - Developpers # ID e rolit këtu
    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. Ndryshoni nexus_config_yum në true për krijimin e depozitës 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. Ndryshoni nexus_config_npm në true për krijimin e depozitës 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. Ndryshoni nexus_config_docker në true për krijimin e depozitës 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. Ndryshoni nexus_config_bower në true për krijimin e depozitës 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. Ndryshoni nexus_config_pypi në true për krijimin e depozitës 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. Ndryshoni nexus_config_rubygems në true për krijimin e depozitës 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. Ndryshoni nexus_config_gitlfs në true për krijimin e depozitës gitlfs
    nexus_config_gitlfs: true
    nexus_repos_gitlfs_hosted:
      - name: gitlfs-hosted

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

Capturat:

Instalimi dhe konfigurimi i Nexus Sonatype duke përdorur qasjen infrastructure as code

Instalimi dhe konfigurimi i Nexus Sonatype duke përdorur qasjen infrastructure as code

Variablat e rolit

Variablat e Rolit

Variablat me vlera të paracaktuara (shih. default/main.yml):

Variablat e përgjithshme

    nexus_version: ''
    nexus_timezone: 'UTC'

Në tërësi, roli do të vendosë versionin më të fundit të disponueshëm të Nexus. Ju mund ta korrigjoni versionin duke ndryshuar variablën nexus_version. Shihni versionet e disponueshme në https://www.sonatype.com/download-oss-sonatype.

Nëse ndryshoni versionin në një më të ri, roli do të përpiqet të përditësojë Nexus-in tuaj të instaluar.

Nëse po përdorni një version më të vjetër të Nexus-it se ai më i fundit, duhet të siguroheni që të mos përdorni funksione që nuk janë të disponueshme në versionin e instaluar (për shembull, vendosja e depozitarëve yum është e disponueshme për nexus më të lartë se 3.8.0, depo git lfs për nexus më të lartë se 3.3.0 etj.)

nexus timezone — Ă«shtĂ« emri i zonĂ«s sĂ« kohĂ«s Java, e cila mund tĂ« jetĂ« e dobishme nĂ« lidhje me shprehjet cron tĂ« dhĂ«na pĂ«r detyrat e planifikuara tĂ« nexus.

Porti dhe rruga kontekstuale e Nexus-it

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Porti dhe rruga kontekstuale e procesit të lidhjes Java. nexus_default_context_path duhet të përmbajë një slash, kur është vendosur, për shembull: nexus_default_context_path: '/nexus/'.

Këndi dhe grupi i OS për Nexus

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Përdoruesi dhe grupi të cilët do të përdoren për të zotëruar skedarët e Nexus-it dhe për të ekzekutuar shërbimin do të krijohen nga roli, nëse mungojnë.

    nexus_os_user_home_dir: '/home/nexus'

Lejo të ndryshohet katalogu i shtëpisë për përdoruesin nexus

Katalogët e instancave të Nexus

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

Katalogët e Nexus.

  • nexus_installation_dir pĂ«rmban skedarĂ«t ekzekutivĂ« tĂ« instaluar
  • nexus_data_dir pĂ«rmban tĂ« gjithĂ« konfigurimin, depozitat dhe artefaktet e ngarkuara. RrugĂ«t e personalizuara pĂ«r blobstores nexus_data_dir mund tĂ« konfigurohen, shih mĂ« poshtĂ« nexus_blobstores.
  • nexus_tmp_dir pĂ«rmban tĂ« gjithĂ« skedarĂ«t e pĂ«rkohshĂ«m. Rruga e parazgjedhur pĂ«r redhat Ă«shtĂ« zhvendosur nga /tmp pĂ«r tĂ« tejkaluar problemet e mundshme me procedurat automatike tĂ« pastrimit. Shihni #168.

Konfigurimi i përdorimit të memories Nexus JVM

    nexus_min_heap_size: "1200M"
    nexus_max_heap_size: "{{ nexus_min_heap_size }}"
    nexus_max_direct_memory: "2G"

Këto janë cilësimet e paracaktuara për Nexus. Ju lutem, mos ndryshoni këto vlera Nëse nuk e keni lexuar seksionin e kërkesave të sistemit për memory-në e nexus-it dhe nuk kuptoni se çfarë bëjnë ato.

Si një paralajmërim të dytë, ja një shfletim nga dokumenti të lartpërmendur:

Nuk është e rekomanduar të rritet memoria JVM heap përtej vlerave të rekomanduara në një përpjekje për të rritur performancën. Kjo në të vërtetë mund të ketë efektin e kundërt, duke sjellë punë të panevojshme për sistemin operativ.

Fjalëkalimi i administratorit

    nexus_admin_password: 'changeme'

Fjalëkalimi i llogarisë 'admin' për konfigurim. Kjo funksionon vetëm në instalimin e parë sipas parazgjedhjes. Ju lutemi, shihni [Ndrysho fjalëkalimin e administratorit pas instalimit të parë](# change-admin-password-after-first-install), nëse dëshironi ta ndryshoni më vonë me rolin.

Rrënjësisht nuk rekomandohet të ruani fjalëkalimin tuaj në tekst të hapur në playbook, por të përdorni [enkriptimin ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (ose të integruar ose në një skedë të veçantë, e ngarkuar për shembull me include_vars)

Qasje anonime sipas parazgjedhjes

    nexus_anonymous_access: false

Qasja anonime sipas parazgjedhjes është e çaktivizuar. Më shumë për qasje anonime.

Emri publik i hostit

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Emri i plotë i domain-it dhe skema (https ose http), nëpërmjet të cilës instanca e Nexus do të jetë e aksesueshme për klientët e saj.

Qasja API për këtë rol

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

Këto variabla kontrollojnë se si roli lidhet me API-në e Nexus për ofrim.
Vetëm për përdoruesit e avancuar. Ndërsa, ka të ngjarë që të mos dëshironi të ndryshoni këto konfigurime sipas parazgjedhjes

Konfigurimi i proxy-ut të kthyer

    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

Instaloni Proxy i kthyer SSL.
Për këtë duhet të instaloni httpd. Shënim: kur httpd_setup_enable është vendosur nëtrue, nexus lidhet me 127.0.0.1:8081, kështu që jo duke qenë direkt e aksesueshme përmes portit HTTP 8081 me adresën IP të jashtme.

Emri i hostit i përdorur sipas parazgjedhjes është nexus_public_hostname. Nëse ju nevojiten emra të ndryshëm për ndonjë arsye, mund të vendosni httpd_server_name me një vlerë tjetër.

D httpd_copy_ssl_files: true (sipas parazgjedhjes) certifikatat e përmendura më sipër duhet të ekzistojnë në direktorinë tuaj të playbook dhe do të kopjohen në server dhe do të konfigurohen në apache.

Nëse dëshironi të përdorni certifikatat ekzistuese në server, vendosni httpd_copy_ssl_files: false dhe ofroni variablat e mëposhtme:

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

lokacioni_i_certifikatit_ssl_httpd është opsional dhe duhet të lëshohet pa vendosje nëse nuk dëshironi të konfiguroni skedarin e zinxhirit

    httpd_default_admin_email: "admin@example.com"

Vendosni adresën e emailit të administratorit si të paracaktuar

Konfigurimi LDAP

Lidhjet LDAP dhe zona e sigurisë janë të çaktivizuara për parazgjedhje

    nexus_ldap_realm: false
    ldap_connections: []

Lidhjet LDAP, çdo element duket si më poshtë:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'My Company LDAP' # përdoret si një çelës për të përditësuar konfigurimin e ldap
        ldap_protocol: 'ldaps' # ldap ose ldaps
        ldap_hostname: 'ldap.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false # Nëse do të përdoren certifikata në dyqanin e besueshëm të nexus
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_auth: 'none' # ose simple
        ldap_auth_username: 'username' # nëse auth = simple
        ldap_auth_password: 'password' # nëse auth = simple
        ldap_user_base_dn: 'ou=users'
        ldap_user_filter: '(cn=*)' # (opsionale)
        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

Shembulli i konfigurimit LDAP për autentifikim anonim (për lidhje të anonimit), është gjithashtu një konfigurim "minimal":

    nexus_ldap_realm: true
    ldap_connection:
      - ldap_name: 'Konfigurimi më i thjeshtë 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'

Shembulli i konfigurimit LDAP për autentifikim të thjeshtë (duke përdorur një llogari DSA):

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'Konfigurimi LDAP me 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 }}" # është më mirë të ruani fjalëkalimet në një vault 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

Shembulli i konfigurimit LDAP për autentifikim të thjeshtë (duke përdorur një llogari DSA) + grupe, të mapuara si role:

    nexus_ldap_realm: true
    ldap_connections
      - ldap_name: 'LDAP konfigurimi me 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 }}" # më mirë të mbani fjalëkalimet në një 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

Shembulli i konfigurimit LDAP për autentifikim të thjeshtë (duke përdorur llogarinë DSA) + grupe, të caktuara dinamikisht si role:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP konfigurimi me 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 }}" # më mirë të mbani fjalëkalimet në një 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'

Privilegjet

    nexus_privileges:
      - name: all-repos-read # përdoret si çelësi për të përditësuar një privilegj
        # type: 
        description: 'Qasje për Të Lexuar & Shfletuar në të gjitha repo'
        repository: '*'
        actions: # mund të jetë add, browse, create, delete, edit, read ose  * (të gjitha)
          - read
          - browse
        # pattern: pattern
        # domain: domain
        # script_name: emri

Lista privilegje për konfigurim. Shikoni dokumentacionin dhe ndërfaqen grafike për të verifikuar cilat variabla duhet të vendosen në varësi të llojit të privilegjit.

Këto elemente bashkohen me vlerat e mëposhtme si të dhëna:

    _nexus_privilege_defaults:
      type: repository-view
      format: maven2
      actions:
        - read

Rolet (brenda Nexus nënkuptohet)

    nexus_roles:
      - id: Developpers # mund të mapohet në një id grupi LDAP, gjithashtu përdoret si çelësi për të përditësuar një rol
        name: developers
        description: Të gjithë zhvilluesit
        privileges:
          - nx-search-read
          - all-repos-read
        roles: [] # referenca për emra të tjerë rolesh

Lista rolet për konfigurim.

Përdoruesit

    nexus_local_users: []
      # - username: jenkins # përdoret si çelësi për të përditësuar
      #   state: present # vlera e paracaktuar nëse mungon, përdorni 'absent' për të hequr përdorues
      #   first_name: Jenkins
      #   last_name: CI
      #   email: support@company.com
      #   password: "s3cr3t"
      #   roles:
      #     - developers # id roli

Lista e përdoruesve/llogarive lokale (jo-LDAP) për t'u krijuar në nexus.

Lista e përdoruesve/llogarive lokale (jo LDAP) për krijimin në Nexus.

      nexus_ldap_users: []
      # - username: j.doe
      #   state: present
      #   roles:
      #     - "nx-admin"

Duke mapuar përdoruesit/rolet Ldap. Gjendja mungon heq rolet nga një përdorues ekzistues, nëse ai tashmë ekziston.
Përdoruesit Ldap nuk hiqen. Një përpjekje për të caktuar një rol për një përdorues që nuk ekziston do të çojë në një gabim.

Seletorët e përmbajtjes

  nexus_content_selectors:
  - name: docker-login
    description: Selector për privilegjin e hyrjes Docker
    search_expression: format=="docker" and path=~"/v2/"

Për më shumë informacion rreth selektorit të përmbajtjes shih Dokumentacionin.

Për të përdorur selektorin e përmbajtjes, shtoni një privilegj të ri me type: repository-content-selector dhe përkatësincontentSelector

- name: docker-login-privilege
  type: repository-content-selector
  contentSelector: docker-login
  description: 'Hyrje në regjistrin Docker'
  repository: '*'
  actions:
  - read
  - browse

Blobstore dhe repo

    nexus_delete_default_repos: false

Fshij repo nga konfigurimi fillestar default i instalimit të nexus. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është zbuluar i zbrazët).

Fshirja e repo nga konfigurimi fillestar default për Nexus. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është i zbrazët).

    nexus_delete_default_blobstore: false

Fshij blobstore-në e default nga konfigurimi fillestar i instalimit të nexus. Kjo mund të bëhet vetëm nëse nexus_delete_default_repos: true dhe të gjitha repo të konfiguruara (shih më poshtë) kanë një blob_store: custom. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është zbuluar i zbrazët).

Fshirja e blobstore (artifakteve binare) është e çaktivizuar siç parashihet nga konfigurimi fillestar. Për të fshirë blobstore (artifakte binare) çaktivizoni nexus_delete_default_repos: true. Ky hap ekzekutohet vetëm gjatë instalimit për herë të parë (kur nexus_data_dir është i zbrazët).

    nexus_blobstores: []
    # shembull i blobstore-it :
    # - 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 për të krijuar. Një rrugë për blobstore dhe një blobstore repo nuk mund të përditësohen pas krijimit fillestar (çdo përditësim këtu do të injorohet gjatë riprovizionimit).

Konfigurimi i blobstore në S3 ofrohet si një lehtësi dhe nuk është pjesë e testeve automatike që ne realizojmë në travis. Ju lutem vini re se ruajtja në S3 rekomandohet vetëm për instancat e shpërndara në AWS.

Krijimi Blobstore. Rrugët për blobstore dhe repo nuk mund të përditësohen pas krijimit fillestar (çdo përditësim këtu do të injorohet gjatë riprovizionimit).

Konfigurimi i blobstore të BLOB-obiektave në S3 ofrohet për lehtësi. Ju lutem vini re se ruajtja në S3 rekomandohet vetëm për instancat e shpërndara në AWS.

    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/'

Më sipër është një shembull konfigurimi server proxy Maven.

    nexus_repos_maven_hosted:
      - name: private-release
        version_policy: release
        write_policy: allow_once  # një nga "allow", "allow_once" ose "deny"

Maven repozitorët e hostuar konfigurimi. Konfigurimi i keshit negativ është opcional dhe do të përdorë vlerat e mësipërme nëse lihet pa të.

Konfigurimi repozitorët e hostuar Maven. Konfigurimi i keshit negativ (-1) është opcional dhe do të përdorë automatikisht vlerat e mësipërme, nëse nuk specifikohet.

    nexus_repos_maven_group:
      - name: public
        member_repos:
          - central
          - jboss

Konfigurimi grupi Maven.

Të tre llojet e repo-it kombinohen me këto vlera të paracaktuara:

    _nexus_repos_maven_defaults:
      blob_store: default # Shënim: nuk mund të përditësohet pasi repo të jetë krijuar
      strict_content_validation: true
      version_policy: release # release, snapshot ose mixed
      layout_policy: strict # strict ose permissive
      write_policy: allow_once # një nga "allow", "allow_once" ose "deny"
      maximum_component_age: -1  # standart i GUI Nexus. Vetëm për proxy
      maximum_metadata_age: 1440  # standart i GUI Nexus. Vetëm për proxy
      negative_cache_enabled: true # standart i GUI Nexus. Vetëm për proxy
      negative_cache_ttl: 1440 # standart i GUI Nexus. Vetëm për proxy

Llojet e depozitave Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dhe yum:
shih defaults/main.yml për këto opsione:

Depozitat Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dhe yum të paracaktuara janë të çaktivizuara:
Shikoni defaults/main.yml për këto opsione:

      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

Vini re se mund të nevojitet të aktivizoni disa zona sigurie nëse dëshironi të përdorni lloje të tjera depozitash përveç maven. Kjo është e çaktivizuar nga e drejta.

nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false  # e kërkuar për aksesin anonim në docker

Realm-i i përdoruesit të largët gjithashtu mund të aktivizohet nga

nexus_rut_auth_realm: true

dhe kreu mund të konfigurohet duke përcaktuar

nexus_rut_auth_header: "CUSTOM_HEADER"

Detyrat e planifikuara

    nexus_scheduled_tasks: []
    #  #  Shembuj detyre për të kompaktuar blobstore:
    #  - emri: compact-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: alerts@example.org  # opsionale
    #    taskProperties:
    #      blobstoreName: {{ nexus_blob_names.docker.blob }} # të gjitha atributet e detyrës ruhen si strings nga nexus brenda
    #  #  Shembuj detyre për të pastruar snapshot-ët maven
    #  - emri: Pastroni-snapshot-ët-maven
    #    cron: '0 50 23 * * ?'
    #    typeId: repository.maven.remove-snapshots
    #    task_alert_email: alerts@example.org  # opsionale
    #    taskProperties:
    #      repositoryName: "*"  # * për të gjitha repos. Ndryshoni në emrin e një repository nëse dëshironi vetëm një të caktuar
    #      minimumRetained: "2"
    #      snapshotRetentionDays: "2"
    #      gracePeriodInDays: "2"
    #    booleanTaskProperties:
    #      removeIfReleased: true
    #  #  Shembuj detyre për të pastruar manifestet dhe imazhet e pa përdorura docker
    #  - emri: Pastroni manifestet dhe imazhet e pa përdorura docker
    #    cron: '0 55 23 * * ?'
    #    typeId: "repository.docker.gc"
    #    task_alert_email: alerts@example.org  # opsionale
    #    taskProperties:
    #      repositoryName: "*"  # * për të gjitha repos. Ndryshoni në emrin e një repository nëse dëshironi vetëm një të caktuar
    #  #  Shembuj detyre për të pastruar ngarkesat docker të papërfunduara
    #  - emri: Pastroni ngarkesat docker të papërfunduara
    #    cron: '0 0 0 * * ?'
    #    typeId: "repository.docker.upload-purge"
    #    task_alert_email: alerts@example.org  # opsionale
    #    taskProperties:
    #      age: "24"

Detyrat e planifikuara për konfigurim. typeId dhe specifike për detyrëntaskProperties/booleanTaskProperties mund të supozohet ose:

  • nga hierarkia e llojeve Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • duke verifikuar formularin HTML pĂ«r krijimin e detyrĂ«s nĂ« shfletuesin tuaj
  • nga shikimi i kĂ«rkesave AJAX nĂ« shfletues gjatĂ« konfigurimit manual tĂ« detyrĂ«s.

Atributet e detyrës duhet të shpallen në blokun e duhur yaml në varësi të llojit të tyre:

  • taskProperties pĂ«r tĂ« gjitha atributet e tipit string (p.sh. emrat e repos, emrat e blobstore, periudhat e kohĂ«s 
).
  • booleanTaskProperties pĂ«r tĂ« gjitha atributet logjike (p.sh. kryesisht kutitĂ« e kontrollit nĂ« ndĂ«rfaqen grafike pĂ«r krijimin e detyrĂ«s nexus).

Kopje të sigurisë

      nexus_backup_configure: false
      nexus_backup_cron: '0 0 21 * * ?'  # Shikoni definimin e shprehjeve cron në ndërfaqen e krijimit të detyrës nexus
      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  # Ruani 4 rotacione të kopjeve siç është standard (aktuale + 3 të fundit)

Kopjimi i sigurisë nuk do të configurehet derisa të kaloni nexus_backup_configure në true.
Në këtë rast, detyra e planifikuar do të configurehet për të ekzekutuar në Nexus
në intervalin e specifikuar në nexus_backup_cron (në mënyrë të parazgjedhur 21:00 çdo ditë).
Shihni [Shablloni groovy për këtë detyrë](templates \/ backup.groovy.j2) për detaje të tjera.
Ky caktim i detyrës nuk varet nga të tjerët nexus_scheduled_tasks, që ju
shpallni në playbook tuaj.

Nëse dëshironi të rrotulloni\/fshini kopjet, vendosni nexus_backup_rotate: true dhe vendosni numrin e kopjeve që dëshironi të ruani me nexus_backup_keep_rotations (në mënyrë standarde 4).

Kur përdorni rrotullimin, nëse dëshironi të kurseni hapësirë shtesë disku gjatë procesit të kopjimit,
Mund të vendosni nexus_backup_rotate_first: true. Kjo do të konfigurojë rrotullimin e parakohshëm/faqen përpara kopjimit. Në mënyrë standarde, rrotullimi ndodh pas krijimit të kopjes rezervë. Kujdes, në këtë rast, kopjet e vjetra
do të fshihen para se të bëhet kopja aktuale.

Procedura e rikuperimit

Nisni playbook me parametrin -e nexus_restore_point=
(p.sh., 2017-12-17-21-00-00 për 17 dhjetor 2017 në 21:00

Fshirja e nexus

Kujdes: kjo do të fshijë plotësisht të dhënat aktuale. Sigurohuni që të bëni një kopje rezervë më parë, nëse është e nevojshme

Përdorni variablën nexus_purge, nëse ju nevojitet të rinisni nga fillimi dhe të rinstaloni instancën e nexus me fshirjen e të dhënave të gjitha.

ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=true

Ndryshoni fjalëkalimin e administratorit pas instalimit të parë

    nexus_default_admin_password: 'admin123'

Kjo nuk duhet të ndryshohet në playbook-in tuaj. Ky variabël mbushet me fjalëkalim standard të administratorit të Nexus gjatë instalimit të parë dhe garanton që ne mund të ndryshojmë fjalëkalimin e administratorit në nexus_admin_password.

Nëse dëshironi të ndryshoni fjalëkalimin e administratorit pas instalimit të parë, mund ta ndryshoni përkohësisht në fjalëkalimin e vjetër nga komandat e linjës. Pas ndryshimit nexus_admin_password në playbook-un tuaj mund të nisni:

ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPassword

Kanal Telegram për Nexus Sonatype: https://t.me/ru_nexus_sonatype

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, ju lutem.

Cilat depo artefaktesh po përdorni?

  • Sonatype Nexus falas

  • Sonatype Nexus me pagesĂ«

  • Artifactory falas

  • Artifactory me pagesĂ«

  • Harbur

  • Pulp

Kanë votuar 9 përdorues. Shtyhën 3 përdorues.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster