Nexus Sonatype'i paigaldamine ja seadistamine kasutades infrastruktuuri kui koodi lÀhenemist

Sonatype Nexus on integreeritud platvorm, mille abil saavad arendajad Java (Maven) sÔltuvusi, Docker'i pilte, Python'i, Ruby, NPM, Bower'i, RPM-pakette, gitlfs'i, Apt'i, Go'd, Nugetit vahepeal hoida ja hallata ning oma tarkvara jagada.

Miks on Sonatype Nexus vajalik?

  • Privaatsete artefaktide hoidmiseks;
  • Artefaktide vahemĂ€llu salvestamiseks, mis allalaaditakse internetist;

Sonatype Nexus'i pÔhiversiooniga toetatavad artefaktid:

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

Kogukonna toetatavad artefaktid:

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

Sonatype Nexus'i paigaldamine kasutades https://github.com/ansible-ThoTeam/nexus3-oss

NÔuded

  • Lugege ansible'i kasutamisest internetis.
  • Installige ansible pip install ansible töölauale, kus playbook kĂ€ivitatakse.
  • Installige geerlingguy.java töölauale, kus playbook kĂ€ivitatakse.
  • Installige geerlingguy.apache töölauale, kus playbook kĂ€ivitatakse.
  • See roll on testitud CentOS 7, Ubuntu Xenial (16.04) ja Bionic (18.04), Debian Jessie ja Stretch'il
  • jmespath raamatukogu tuleb installida töölauale, kus playbook kĂ€ivitatakse. Paigaldamiseks kĂ€ivitage sudo pip install -r requirements.txt
  • Salvestage playbooki fail (nĂ€ide allpool) failiks nexus.yml
  • KĂ€ivitage nexus'i paigaldamine ansible-playbook -i host nexus.yml

NĂ€ide ansible-playbook'ist nexus'i paigaldamiseks ilma LDAP'ita Maven (java), Docker'i, Python'i, Ruby, NPM, Bower'i, RPM'i ja gitlfs'i hoidlate jaoks.

---
- 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: 'Lugege ja sirvige pÀÀsu kÔikidele repodele'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Kohandamised company-project'  
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # kaardistub LDAP grupile
        name: developers
        description: KÔik arendajad
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # kasutatud uuendamiseks
        first_name: Jenkins
        last_name: CI
        email: support@company.com
        password: "s3cr3t"
        roles:
          - Developpers # siin on rolli ID
    nexus_blobstores:
      - name: company-artifacts
        path: /var/nexus/blobs/company-artifacts
    nexus_scheduled_tasks:
      - name: compact-blobstore
        cron: '0 0 22 * * ?'
        typeId: blobstore.compact
        taskProperties:
          blobstoreName: 'company-artifacts'

    nexus_repos_maven_proxy:
      - name: central
        remote_url: 'https://repo1.maven.org/maven2/'
        layout_policy: permissive
      - name: jboss
        remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
      - name: vaadin-addons
        remote_url: 'https://maven.vaadin.com/vaadin-addons/'
      - name: jaspersoft
        remote_url: 'https://jaspersoft.artifactoryonline.com/jaspersoft/jaspersoft-repo/'
        version_policy: mixed
    nexus_repos_maven_hosted:
      - name: company-project
        version_policy: mixed
        write_policy: allow
        blob_store: company-artifacts
    nexus_repos_maven_group:
      - name: public
        member_repos:
          - central
          - jboss
          - vaadin-addons
          - jaspersoft

    # Yum. Muutke nexus_config_yum tÔeks, et luua 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. Muutke nexus_config_npm tÔeks, et luua 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. Muutke nexus_config_docker tÔeks, et luua 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. Muutke nexus_config_bower tÔeks, et luua 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. Muutke nexus_config_pypi tÔeks, et luua 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. Muutke nexus_config_rubygems tÔeks, et luua 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. Muutke nexus_config_gitlfs tÔeks, et luua gitlfs-repository
    nexus_config_gitlfs: true
    nexus_repos_gitlfs_hosted:
      - name: gitlfs-hosted

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

Ekraanipildid:

Nexus Sonatype'i paigaldamine ja seadistamine kasutades infrastruktuuri kui koodi lÀhenemist

Nexus Sonatype'i paigaldamine ja seadistamine kasutades infrastruktuuri kui koodi lÀhenemist

Muutujad rollid

Rolli muutujad

Vaikese vÀÀrtusega muutujad (vt. default/main.yml):

Üldised muutujad

    nexus_version: ''
    nexus_timezone: 'UTC'

Vaikimisi roll seab viimase saadaval oleva Nexus versiooni. Saate versiooni parandada, muutes muutuja nexus_version. Vaadake saadaval olevaid versioone aadressil https://www.sonatype.com/download-oss-sonatype.

Kui muudate versiooni uuemaks, proovib roll teie installitud Nexusit vÀrskendada.

Kui kasutate vanemat Nexus versiooni, kui viimane, peate veenduma, et te ei kasuta funktsioone, mis pole installitud versioonis saadaval (nt yum repode majutamine on saadaval Nexus versioonis suurem kui 3.8.0, git lfs repo Nexus versioonis suurem kui 3.3.0 jne.)

nexus timezone on Java ajavööndi nimi, mis vÔib olla kasulik koos allpool toodud cron avaldistega nexus_scheduled tasks jaoks.

Nexuse port ja konteksti tee

    nexus_default_port: 8081
    nexus_default_context_path: ' / '

Port ja konteksti tee Java ĂŒhenduse protsessile. nexus_default_context_path peab sisaldama kaldkirja, kui see on seadistatud, nĂ€iteks: nexus_default_context_path: ' /nexus/ '.

Nexuse OS kasutaja ja grupp

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Kasutaja ja grupp, mida kasutatakse Nexuse failide omamise ja teenuse kÀitamise jaoks, luuakse rolliga, kui neid pole.

    nexus_os_user_home_dir: ' /home/nexus '

Lubage muuta vaikimisi kodukaust Nexus kasutajale

Nexuse instantside kataloogid

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

Nexuse kataloogid.

  • nexus_installation_dir sisaldab paigaldatud kĂ€ivitatavaid faile
  • nexus_data_dir sisaldab kogu konfiguratsiooni, hoidlaid ja ĂŒles laaditud artefakte. Kohandatud blobstore’i teed nexus_data_dir vĂ”ivad olla seadistatud, vt allpool nexus_blobstores.
  • nexus_tmp_dir sisaldab kĂ”iki ajutisi faile. Vaikimisi tee RedHat jaoks viidi ĂŒle /tmp potentsiaalsete probleemide ĂŒletamiseks automaatsete puhastusprotseduuride korral. Vaadake #168.

Nexuse JVM mÀlu kasutuse seadistamine

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

Need on Nexuse vaikeseadistused. Palun Ă€rge muutke neid vÀÀrtusi kui te pole lugenud Nexuse sĂŒsteeminĂ”uete mĂ€lu jaotust ja ei mĂ”ista, mida need teevad.

Teise hoiatuse korras on siin vÀljavÔte eespool mainitud dokumendist:

JVM heap'i mĂ€lu suurendamine ĂŒle soovitatavate vÀÀrtuste töötamise parandamiseks ei ole soovitatav. See vĂ”ib tegelikult saavutada vastupidise efekti, pĂ”hjustades operatsioonisĂŒsteemi liigset tööd.

Administraatori parool

    nexus_admin_password: 'changeme'

Administraatori konto „admin” parool seadistamiseks. See kehtib ainult esmakordsel vaikeseadistusel.. Palun vaadake [Muuda administraatori parooli pĂ€rast esimest installimist](# change-admin-password-after-first-install), kui soovite seda hiljem muuta rolli kaudu.

Soovitame tungivalt mitte hoida oma parooli avatud tekstina playbook'is, vaid kasutada [ansible-vault'i krĂŒpteerimist](https://docs.ansible.com/ansible/latest/user_guide/vault.html) (kas sisse ehitatud vĂ”i eraldi failis, mille laadite nĂ€iteks include_vars'i abil)

AnonĂŒĂŒmne juurdepÀÀs vaikevaikesena

    nexus_anonymous_access: false

VaikeanonĂŒĂŒmi juurdepÀÀs on keelatud. Lisateave anonĂŒĂŒmse juurdepÀÀsu kohta: anonĂŒĂŒmne juurdepÀÀs.

Avalik hostinimi

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

TÀielik domeeninimi ja skeem (https vÔi http), mille kaudu Nexus'i eksemplar on klientide jaoks kergesti kÀttesaadav.

API juurdepÀÀs selle rolli jaoks

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

Need muutujad kontrollivad, kuidas roll ĂŒhendub Nexus API-ga teenuse osutamiseks.
Ainult edasijÔudnud kasutajatele. TÔenÀoliselt ei soovi te neid vaikehÀÀlestusi muuta.

Tagasipöördeproksi seadistamine

    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

Installige SSL tagasipöördeproksi.
Selleks peab olema installitud httpd. MÀrkus: kui httpd_setup_enable on seatudtrue, nexus suhtub 127.0.0.1:8081, seega ei on otseselt kÀtte saadav HTTP-porti 8081 kaudu vÀlisest IP-aadressist.

Vaikeolekuna kasutatav hostinimi on nexus_public_hostname. Kui vajate erinevaid nimesid mÔnede pÔhjuste tÔttu, saate seadistada httpd_server_name teise vÀÀrtusega.

A httpd_copy_ssl_files: true (vaikimisi) ĂŒlaltoodud sertifikaadid peavad olema olemas teie playbook'i kataloogis ja need kopeeritakse serverisse ning konfigureeritakse apache'is.

Kui soovite kasutada olemasolevaid sertifikaate serveris, seadistage httpd_copy_ssl_files: false ja esitage jÀrgmised muutujad:

    # 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 on ei ole kohustuslik ja see tuleks jÀtta seadistamata, kui te ei soovi ketifaili seadistada

    httpd_default_admin_email: "admin@example.com"

Seadista vaikimisi administraatori e-posti aadress

LDAP konfiguratsioon

LDAP ĂŒhendused ja turvaala on vaikimisi vĂ€lja lĂŒlitatud

    nexus_ldap_realm: false
    ldap_connections: []

LDAP ĂŒhendused, iga element nĂ€eb vĂ€lja jĂ€rgmine:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'Minu EttevÔtte LDAP' # kasutatakse vÔtmena ldap konfiguratsiooni uuendamiseks
        ldap_protocol: 'ldaps' # ldap vÔi ldaps
        ldap_hostname: 'ldap.minuettevÔte.com'
        ldap_port: 636
        ldap_use_trust_store: false # Kas kasutada sertifikaate nexus usalduspoes
        ldap_search_base: 'dc=minuettevÔte,dc=net'
        ldap_auth: 'none' # vÔi lihtne
        ldap_auth_username: 'kasutajanimi' # kui auth = lihtne
        ldap_auth_password: 'parool' # kui auth = lihtne
        ldap_user_base_dn: 'ou=users'
        ldap_user_filter: '(cn=*)' # (valikuline)
        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

NĂ€idis LDAP konfiguratsioon anonĂŒĂŒmseks autentimiseks (anonĂŒĂŒmne sidumine), see on samuti "minimaalne" konfiguratsioon:

    nexus_ldap_realm: true
    ldap_connection:
      - ldap_name: 'Lihtsaim LDAP konfiguratsioon'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.minuettevÔte.com'
        ldap_search_base: 'dc=minuettevÔte,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'

NĂ€idis LDAP konfiguratsioon lihtsaks autentimiseks (kasutades DSA kontot):

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP konfiguratsioon DSA-ga'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.minuetvÔte.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=minuettevÔte,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # parem hoida paroolid ansible vaultis
        ldap_search_base: 'dc=minuettevÔte,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

NĂ€idis LDAP konfiguratsioon lihtsaks autentimiseks (kasutades DSA kontot) + rĂŒhmad, mis on seotud rollidega:

    nexus_ldap_realm: true
    ldap_connections
      - ldap_name: 'LDAP seadme 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 }}" # parem hoida paroolid ansible varjatud
        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 konfiguratsiooni nĂ€ide lihtsaks autentimiseks (kasutades DSA kontot) + grupid, mis on dĂŒnaamiliselt kaardistatud rollideks:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP seadme 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 }}" # parem hoida paroolid ansible varjatud
        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'

Privileegid

    nexus_privileges:
      - name: all-repos-read # kasutatud privileegi uuendamiseks
        # type: <ĂŒks rakendusest, repository-admin, repository-content-selector, repository-view, script vĂ”i wildcard>
        description: 'Lugemis- ja sirvimisÔigus kÔikidele repos'
        repository: '*'
        actions: # vÔib olla add, browse, create, delete, edit, read vÔi  * (kÔik)
          - read
          - browse
        # pattern: patterns
        # domain: domeen
        # script_name: nimi

Loend privileegide seadistamiseks. Vaadake dokumentatsiooni ja graafilist kasutajaliidest, et teada saada, millised muutujad peavad olema seadistatud vastavalt privileegi tĂŒĂŒbile.

Need elemendid on ĂŒhendatud jĂ€rgmiste vaikevÀÀrtustega:

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

Rollid (Nexus sees mÔeldud)

    nexus_roles:
      - id: Development # vÔib kaardistada LDAP grupi ID-le, samuti kasutatakse seda rolli uuendamise vÔtmena
        name: arendajad
        description: KÔik arendajad
        privileges:
          - nx-search-read
          - all-repos-read
        roles: [] # viidatud teiste rollide nimedele

Loend rolle seadistamiseks.

Kasutajad

    nexus_local_users: []
      # - kasutajanimi: jenkins # kasutatud vÔtmena uuendamiseks
      #   state: present # vaikevÀÀrtus, kui jÀetakse vahele, kasuta 'absent', et eemaldada kasutaja
      #   eesnimi: Jenkins
      #   perekonnanimi: CI
      #   email: support@company.com
      #   parool: "s3cr3t"
      #   rollid:
      #     - arendajad # rolli ID

Kohalik (mitte-LDAP) kasutajate/kontode loend nexus'e loomiseks.

Nexuse loomade (mitte LDAP) kasutajate/konto loendi loomine.

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

LDAP kasutajate/rollide kaardistamine. Seisund absent eemaldab rollid olemasolevalt kasutajalt, kui ta juba eksisteerib.
LDAP kasutajaid ei eemaldata. Rolli mÀÀramine mitteeksisteerivale kasutajale toob kaasa vea.

Sisu valikud

  nexus_content_selectors:
  - name: docker-login
    description: Docker sisselogimise Ôiguse valija
    search_expression: format=="docker" and path=~"/v2/"

Lisainformatsiooni sisu valija kohta leiate Dokumentatsioonist.

Sisu valija kasutamiseks lisage uus privileeg koos type: repository-content-selector ja vastavacontentSelector

- name: docker-login-privilege
  type: repository-content-selector
  contentSelector: docker-login
  description: 'Sisselogimine Docker registreerimisse'
  repository: '*'
  actions:
  - read
  - browse

Blobs ja repod

    nexus_delete_default_repos: false

Kustuta repod Nexus installi algsest vaikimisi konfiguratsioonist. See samm tĂ€idetakse ainult esmakordsel installimisel (kui nexus_data_dir on tuvastatud tĂŒhi).

Repode eemaldamine Nexus vaikimisi konfiguratsioonist. See samm tĂ€idetakse ainult esmakordsel installimisel (kui nexus_data_dir on tĂŒhi).

    nexus_delete_default_blobstore: false

Kustuta vaikimisi blobide salvestus Nexus installi algsest vaikimisi konfiguratsioonist. Seda saab teha ainult juhul kui nexus_delete_default_repos: true ja kĂ”ik konfigureeritud repod (vt allpool) on selgelt blob_store: custom. See samm tĂ€idetakse ainult esmakordsel installimisel (kui nexus_data_dir on tuvastatud tĂŒhi).

Blobide (binaarartefaktide) salvestuse eemaldamine on vaikimisi keelatud algsest konfiguratsioonist. Blobide salvestuse eemaldamiseks keelake nexus_delete_default_repos: true. See samm tĂ€idetakse ainult esmakordsel installimisel (kui nexus_data_dir on tĂŒhi).

    nexus_blobstores: []
    # nÀidis blobide salvestuse element :
    # - 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 }}"

Blobide salvestused loo. Blobide salvestuse teed ja repode blobide salvestused ei saa pÀrast esmase loomise lÔpetamist vÀrskendada (kÔik vÀrskendused siinkohal ignoreeritakse korduvkasutamisel).

Blobide salvestuse konfigureerimine S3-l pakutakse mugavuse huvides ja ei kuulu automaatsetesse testidesse, mida me Travis'il jooksutame. Palun pidage meeles, et S3-l salvestamine on soovitatav ainult AWS'is juurutatud instantside jaoks.

Loomine Blobide salvestused. Blobide ja repode salvestuste teed ei saa pÀrast esmase loomise lÔpetamist vÀrskendada (kÔik vÀrskendused siinkohal ignoreeritakse korduvkasutamisel).

Blobide salvestuse konfigureerimine S3-l pakutakse mugavuse huvides. Pange tÀhele, et S3-l salvestamine on soovitatav ainult AWS'is juurutatud instantside jaoks.

    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

Ülalolev on konfigureerimise nĂ€ide proksi-server Maven.

    nexus_repos_maven_hosted:
      - name: private-release
        version_policy: release
        write_policy: allow_once  # ĂŒks "allow", "allow_once" vĂ”i "deny"

Maven hostitud hoidlad konfiguratsioon. Negatiivne vahemĂ€lu konfiguratsioon on valikuline ja vaikimisi kasutatakse ĂŒlaltoodud vÀÀrtusi, kui see on vahele jĂ€etud.

Konfiguratsioon hostitud (hosted) hoidlad Maven. Negatiivse vahemĂ€lu konfiguratsioon (-1) on valikuline ja vaikimisi kasutatakse ĂŒlaltoodud vÀÀrtusi, kui see ei ole mÀÀratud.

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

Konfiguratsioon grupp Maven.

KĂ”ik kolm tĂŒĂŒpi hoidlaid ĂŒhendatakse jĂ€rgmiste vaikimisi vÀÀrtustega:

    _nexus_repos_maven_defaults:
      blob_store: default # MÀrkus: seda ei saa pÀrast hoidla loomist vÀrskendada
      strict_content_validation: true
      version_policy: release # release, snapshot vÔi mixed
      layout_policy: strict # strict vÔi permissive
      write_policy: allow_once # ĂŒks "allow", "allow_once" vĂ”i "deny"
      maksimum_component_age: -1  # Nexus gui vaikeseade. Ainult proksi
      maximum_metadata_age: 1440  # Nexus gui vaikeseade. Ainult proksi
      negative_cache_enabled: true # Nexus gui vaikeseade. Ainult proksi
      negative_cache_ttl: 1440 # Nexus gui vaikeseade.

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS ja yum hoidlatĂŒĂŒbid:
vaata defaults/main.yml selle valikute jaoks:

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS ja yum hoidlad on vaikimisi vĂ€lja lĂŒlitatud:
Vaata defaults/main.yml selle valikute jaoks:

      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

MĂ€rkus: vĂ”ib osutuda vajalikuks aktiveerida teatud turvapiirkonnad, kui soovite kasutada muid hoidlatĂŒĂŒpe peale maven. Vaikimisi on vale

nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false  # vajalik docker anonĂŒĂŒmseks juurdepÀÀsuks

Kaugkasutaja domeen saab ka aktiveerida

nexus_rut_auth_realm: true

ja pealkirja saab seadistada mÀÀrates

nexus_rut_auth_header: "CUSTOM_HEADER"

Planeeritud ĂŒlesanded

    nexus_scheduled_tasks: []
    #  #  NĂ€ide ĂŒlesandest blobstore'i tihendamiseks:
    #  - nimi: compact-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      blobstoreName: {{ nexus_blob_names.docker.blob }} # kĂ”ik ĂŒlesande atribuudid on nexus-es salvestatud stringidena
    #  #  NĂ€ide ĂŒlesandest maven'i seeriate puhastamiseks
    #  - nimi: Purge-maven-snapshots
    #    cron: '0 50 23 * * ?'
    #    typeId: repository.maven.remove-snapshots
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      repositoryName: "*"  # * kĂ”igi hoidlate jaoks. Muuda kindlaks hoidla nime, kui soovid ainult ĂŒhte
    #      minimumRetained: "2"
    #      snapshotRetentionDays: "2"
    #      gracePeriodInDays: "2"
    #    booleanTaskProperties:
    #      removeIfReleased: true
    #  #  NĂ€ide ĂŒlesandest mittevajalike docker'i manifestide ja piltide puhastamiseks
    #  - nimi: Purge unused docker manifests and images
    #    cron: '0 55 23 * * ?'
    #    typeId: "repository.docker.gc"
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      repositoryName: "*"  # * kĂ”igi hoidlate jaoks. Muuda kindlaks hoidla nime, kui soovid ainult ĂŒhte
    #  #  NĂ€ide ĂŒlesandest lĂ”petamata docker'i ĂŒles laadimise puhastamiseks
    #  - nimi: Purge incomplete docker uploads
    #    cron: '0 0 0 * * ?'
    #    typeId: "repository.docker.upload-purge"
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      age: "24"

Planeeritud ĂŒlesanded seadistamiseks. typeId ja ĂŒlesande spetsiifilisedtaskProperties/booleanTaskProperties vĂ”ib arvata vĂ”i:

  • Java tĂŒĂŒpi hierarhiast org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • kontrollides HTML-i ĂŒlesande loomise vormi teie brauseris
  • vaadates brauseris AJAX-pĂ€ringute jĂ€lgi kĂ€sitsi ĂŒlesande seadistamisel.

Ülesande omadused peavad olema deklareeritud Ă”igesse YAML-blokki sĂ”ltuvalt nende tĂŒĂŒbist:

  • taskProperties kĂ”igi stringi omaduste jaoks (st hoidlate nimed, blobstore nimed, ajavahemikud
).
  • booleanTaskProperties kĂ”igi loogiliste omaduste jaoks (st peamiselt mĂ€rkeruudud nexus'e ĂŒlesande loomise graafilises liideses).

Varukoopiad

      nexus_backup_configure: false
      nexus_backup_cron: '0 0 21 * * ?'  # Vaata cron'i vĂ€ljendite mÀÀratlust nexus'i ĂŒlesande loomise GUI-s
      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  # Hoia vaikimisi 4 varukoopia rotatsiooni (praegune + viimased 3)

Varundamine ei ole seadistatud, kuni te ei lĂŒlita sisse nexus_backup_configure ja true.
Sel juhul on planeeritud skriptiĂŒlesanne seadistatud kĂ€ivituma Nexus's
vahemikus, mis on mÀÀratud nexus_backup_cron (vaikimisi iga pÀev kell 21:00).
Vaata [groovy'i mall sellele ĂŒlesandele](templates / backup.groovy.j2) ĂŒksikasjaliku teabe saamiseks.
See planeeritud ĂŒlesanne ei sĂ”ltu teistest nexus_scheduled_tasks, mida sa
oma playbook'is deklareerivad.

Kui soovite rotatsiooni/varukoopiate kustutamist, seadke nexus_backup_rotate: true ja seadistage varukoopiate arv, mida soovite hoida, kasutades nexus_backup_keep_rotations (vaikimisi 4).

Rotaatsiooni kasutamisel, kui soovite varukoopia protsessi ajal kokku hoida lisanduvat kettaruumi,
Saate seadistada nexus_backup_rotate_first: true. See seadistab eelarvitamise/kustutamise enne varukoopia tegemist. Vaikimisi toimub rotatsioon pÀrast varukoopia loomist. Pange tÀhele, et sel juhul kustutatakse vanad varukoopiad
enne, kui praegune varukoopia tehakse.

Taasteprotseduur

KĂ€itage playbook'i parameetriga -e nexus_restore_point=
(nt 2017-12-17-21-00-00 17. detsembril 2017 kell 21:00

Nexus kustutamine

Hoiatus: see eemaldab tÀielikult praegused andmed. Soovitav on eelnevalt varukoopia teha, kui see on vajalik

Kasutage muutujat nexus_purge, kui soovite nullist alustada ja uuesti Nexus eksemplari installida, kustutades kÔik andmed.

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

Muuda administraatori parooli pÀrast esmakordset installimist

    nexus_default_admin_password: 'admin123'

Seda ei tohiks teie playbook'is muuta. See muutuja tÀidetakse Nexus'i vaikimisi administraatori parooliga esmakordsel installimisel ja tagab, et me saame muuta administraatori parooli nexus_admin_password.

Kui soovite muuta administraatori parooli pÀrast esmakordset installimist, saate selle ajutiselt muuta vanaks parooliks kÀsurealt. PÀrast muutmist nexus_admin_password teie mÀngu raamatus saate kÀivitada:

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

Telegraafikanal Nexus Sonatype: https://t.me/ru_nexus_sonatype

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Milliseid artefaktide ladustamisi te kasutate?

  • Sonatype Nexus tasuta

  • Sonatype Nexus tasuline

  • Artifactory tasuta

  • Artifactory tasuline

  • Harbor

  • Pulp

HÀÀletas 9 kasutajat. 3 kasutajat pidurdusid.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster