A Nexus Sonatype telepítése és konfigurálása az infrastructure as code megközelítése segítségével

A Sonatype Nexus egy integrált platform, amellyel a fejlesztők képesek Java (Maven) függőségeket, Docker képeket, Python, Ruby, NPM, Bower, RPM csomagokat, gitlfs, Apt, Go, Nuget tárolni és kezelni, valamint szoftverük terjesztését végezni.

Miért van szükség a Sonatype Nexusra?

  • Privát artefaktumok tárolására;
  • Az internetből letöltött artefaktumok gyorsítótárazására;

A Sonatype Nexus alapértelmezett csomagjában támogatott artefaktumok:

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

Közösség által támogatott artefaktumok:

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

A Sonatype Nexus telepítése az alábbiak segítségével https://github.com/ansible-ThoTeam/nexus3-oss

Követelmények

  • Olvassa el az Ansible használatáról szóló anyagokat az interneten.
  • Telepítse az Ansible-t pip install ansible arra a munkaállomásra, ahol a playbookot futtatni fogják.
  • Telepítse geerlingguy.java arra a munkaállomásra, ahol a playbookot futtatni fogják.
  • Telepítse geerlingguy.apache arra a munkaállomásra, ahol a playbookot futtatni fogják.
  • Ez a szerep CentOS 7, Ubuntu Xenial (16.04) és Bionic (18.04), Debian Jessie és Stretch rendszerekre lett tesztelve.
  • jmespath a könyvtárat telepíteni kell arra a munkaállomásra, ahol a playbookot futtatni fogják. A telepítéshez futtassa sudo pip install -r requirements.txt
  • Mentse el a playbook fájlt (példa lásd alább) nexus.yml néven
  • Indítsa el a nexus telepítését ansible-playbook -i host nexus.yml

Példa ansible-playbook a nexus LDAP nélküli telepítéséhez Maven (java), Docker, Python, Ruby, NPM, Bower, RPM és gitlfs tárolókkal.

---
- 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: 'Olvasási és böngészési hozzáférés minden tárolóhoz'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Telepítések a company-project-hez'
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # LDAP csoporthoz kapcsolódik
        name: fejlesztők
        description: Minden fejlesztő
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # kulcsként használva a frissítéshez
        first_name: Jenkins
        last_name: CI
        email: support@company.com
        password: "s3cr3t"
        roles:
          - Developpers # szerepkód itt
    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. A nexus_config_yum változtatásával hozzon létre yum tárolót
    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. A nexus_config_npm változtatásával hozzon létre npm tárolót
    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. A nexus_config_docker változtatásával hozzon létre docker tárolót
    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. A nexus_config_bower változtatásával hozzon létre bower tárolót
    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. A nexus_config_pypi változtatásával hozzon létre pypi tárolót
    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. A nexus_config_rubygems változtatásával hozzon létre rubygems tárolót
    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. A nexus_config_gitlfs változtatásával hozzon létre gitlfs tárolót
    nexus_config_gitlfs: true
    nexus_repos_gitlfs_hosted:
      - name: gitlfs-hosted

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

Képernyőképek:

A Nexus Sonatype telepítése és konfigurálása az infrastructure as code megközelítése segítségével

A Nexus Sonatype telepítése és konfigurálása az infrastructure as code megközelítése segítségével

Szerepváltozók

Role Variables

Alapértelmezett értékű változók (lásd: default/main.yml):

Általános változók

    nexus_version: ''
    nexus_timezone: 'UTC'

Alapértelmezés szerint a szerep telepíti a legújabb elérhető Nexus verziót. A verzió helyesbítéséhez módosítsa a nexus_versionváltozót. Az elérhető verziókat itt találja: https://www.sonatype.com/download-oss-sonatype.

Ha újabb verzióra módosítja a verziót, a szerep megpróbálja frissíteni a telepített Nexus-t.

Ha régebbi Nexus verziót használ, mint a legújabb, győződjön meg arról, hogy nem használ olyan funkciókat, amelyek nem érhetők el a telepített kiadásban (például a yum repós tárolók elérhetők a Nexus 3.8.0-ánál nagyobb verziókban, a git lfs repo a Nexus 3.3.0-nál nagyobb verziókban, stb.)

nexus timezone — ez a Java időzóna neve, amely hasznos lehet az alább felsorolt cron kifejezésekkel a nexus_scheduled feladatokhoz.

A Nexus portja és kontextusútvonala

    nexus_default_port: 8081
    nexus_default_context_path: ' /'

A Java kapcsolódás portja és kontextusútvonala. nexus_default_context_path tartalmaznia kell egy perjelet, amikor be van állítva, például: nexus_default_context_path: '/nexus/'.

Nexus fájlokhoz használt OS felhasználó és csoport

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

A fájlok tulajdonlására és a szolgáltatás indítására használt felhasználó és csoport a szerep által kerül létrehozásra, ha nem létezik.

    nexus_os_user_home_dir: '/home/nexus'

Engedélyezze a nexus felhasználó alapértelmezett otthoni könyvtárának módosítását

Nexus példányok könyvtárai

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

Nexus könyvtárak.

  • nexus_installation_dir tartalmazza a telepített végrehajtható fájlokat
  • nexus_data_dir tartalmazza az összes konfigurációt, tárolót és letöltött artefaktumokat. A blobstore-ok egyedi útvonalai nexus_data_dir beállíthatók, lásd lent nexus_blobstores.
  • nexus_tmp_dir tartalmazza az összes ideiglenes fájlt. Az alapértelmezett útvonal RedHat esetén átkerült /tmp a potenciális automatikus tisztítási problémák elkerülése érdekében. Lásd: #168.

A Nexus JVM memóriahasználatának beállítása

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

Ezek a Nexus alapértelmezett beállításai. Kérjük, ne módosítsa ezeket az értékeket Ha nem olvasta el a nexus rendszerkövetelmények memóriafejezetét és nem érti, mit csinálnak.

Mint második figyelmeztetés, íme egy részlet a fent említett dokumentumból:

Nem ajánlott a JVM heap memória méretének növelése a javasolt értékek fölé a teljesítmény javítása érdekében. Ez valóban az ellenkező hatást érheti el, felesleges munkát okozva az operációs rendszer számára.

Adminisztrátori jelszó

    nexus_admin_password: 'changeme'

A 'admin' fiók jelszava a beállításhoz. Ez csak az alapértelmezett első telepítéskor működik. Kérjük, nézze meg a [Adminisztrátori jelszó megváltoztatása az első telepítés után](# change-admin-password-after-first-install) című részt, ha később szeretné megváltoztatni a szerepkör segítségével.

Fokozottan nem ajánlott a jelszó nyílt szövegként való tárolása a playbookban; inkább a [ansible-vault titkosítást] használja (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (vagy beépített, vagy egy különálló fájl, amely például az include_vars segítségével lett betöltve)

Alapértelmezés szerint engedélyezett a névtelen hozzáférés

    nexus_anonymous_access: false

Alapértelmezés szerint a névtelen hozzáférés le van tiltva. További információ a névtelen hozzáférésről.

Nyilvános hoszt neve

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

A teljes domain név és a séma (https vagy http), amelyen keresztül a Nexus példány elérhető lesz az ügyfelei számára.

API hozzáférés ehhez a szerepkörhöz

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

Ezek a változók szabályozzák, hogyan csatlakozik a szerepkör a Nexus API-hoz a szolgáltatások nyújtásához.
Csak haladó felhasználók számára. Valószínűleg nem szeretné módosítani ezeket az alapértelmezett beállításokat.

Visszamenőleges proxy beállítása

    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

Telepítse SSL visszamenőleges proxy.
Ehhez az httpd telepítése szükséges. Megjegyzés: amikor a httpd_setup_enable értéke be van állítvaigaz, a nexus csatlakozik a 127.0.0.1:8081-hez, így nem lesz közvetlenül elérhető a 8081-es HTTP porton külső IP-címről.

Az alapértelmezett hoszt név a következő: nexus_public_hostname. Ha bármilyen okból különböző nevekre van szüksége, beállíthatja a httpd_server_name másik értékkel.

Késleltetett streaming replikációt is beállíthatunk, de van néhány csapda, amelyek a replikációs slotokkal, a forró tartalék visszajelzésével stb. kapcsolatosak. A WAL archívum lehetővé teszi, hogy elkerüljük ezeket. httpd_copy_ssl_files: true (alapértelmezett) a fent említett tanúsítványoknak létezniük kell a playbook mappájában, és fel lesznek másolva a szerverre, majd beállítva az apache-ban.

Ha már meglévő tanúsítványokat szeretne használni a szerveren, állítsa be a httpd_copy_ssl_files: false és adja meg a következő változókat:

    # 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 nem kötelező, és üresen kell hagyni, ha nem szeretné beállítani a láncfájlt

    httpd_default_admin_email: "admin@example.com"

A rendszeradminisztrátor alapértelmezett e-mail címének beállítása

LDAP konfiguráció

Az LDAP kapcsolatok és a biztonsági terület alapértelmezés szerint le vannak tiltva

    nexus_ldap_realm: false
    ldap_connections: []

LDAP kapcsolatok, minden elem a következőképpen néz ki:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'My Company LDAP' # a kulcs a LDAP konfiguráció frissítéséhez
        ldap_protocol: 'ldaps' # ldap vagy ldaps
        ldap_hostname: 'ldap.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false # Használja-e a tanúsítványokat a nexus bizalmi tárolójában
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_auth: 'none' # vagy egyszerű
        ldap_auth_username: 'username' # ha az auth = egyszerű
        ldap_auth_password: 'password' # ha az auth = egyszerű
        ldap_user_base_dn: 'ou=users'
        ldap_user_filter: '(cn=*)' # (opcionális)
        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 konfiguráció példa anonim hitelesítéshez (anonim kikötés), ez egyben "minimalista" konfiguráció:

    nexus_ldap_realm: true
    ldap_connection:
      - ldap_name: 'Simplest LDAP config'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_object_class: 'inetOrgPerson'

LDAP konfiguráció példa egyszerű hitelesítéshez (DSA fiók használatával):

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP config with DSA'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # jobb, ha a jelszavakat ansible vaultban tartja
        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 konfiguráció példa egyszerű hitelesítéshez (DSA fiók használatával) + csoportok szerepként kezelve:

    nexus_ldap_realm: true
    ldap_connections
      - ldap_name: 'LDAP konfiguráció DSA-val'
        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 }}" # a jelszavakat jobb az ansible vault-ban tartani
        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

Példa LDAP konfigurációra egyszerű hitelesítéssel (DSA fiókot használva) + csoportok, dinamikusan hozzárendelve szerepként:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP konfiguráció DSA-val'
        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 }}" # a jelszavakat jobb az ansible vault-ban tartani
        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'

Jogosultságok

    nexus_privileges:
      - name: all-repos-read # kulcsként használva a jogosultság frissítéséhez
        # type: 
        description: 'Olvasási & Böngészési hozzáférés minden repóhoz'
        repository: '*'
        actions: # lehet add, browse, create, delete, edit, read vagy  * (mind)
          - read
          - browse
        # pattern: pattern
        # domain: domain
        # script_name: név

Lista jogosultságok a beállításhoz. Kérjük, nézze meg a dokumentációt és a grafikus felhasználói felületet, hogy ellenőrizze, mely változók állíthatók be a jogosultság típusa szerint.

Ezek az elemek a következő alapértelmezett értékekkel egyesülnek:

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

Szerepek (a Nexus-ban értendő)

    nexus_roles:
      - id: Developpers # hozzárendelhető egy LDAP csoport azonosítóhoz, szintén kulcsként használva a szerep frissítéséhez
        name: developers
        description: Minden fejlesztő
        privileges:
          - nx-search-read
          - all-repos-read
        roles: [] # hivatkozások más szerepnévhez

Lista szerepek a beállításhoz.

Felhasználók

    nexus_local_users: []
      # - username: jenkins # kulcsként használva a frissítéshez
      #   state: present # alapértelmezett érték, ha kihagyják, használja az 'absent'-t a felhasználó eltávolításához
      #   first_name: Jenkins
      #   last_name: CI
      #   email: support@company.com
      #   password: "s3cr3t"
      #   roles:
      #     - developers # szerep azonosító

Helyi (nem LDAP) felhasználók/fiókok listája a nexusban történő létrehozáshoz.

A lokális (nem LDAP) felhasználók/fiókok listája, amelyeket létre kell hozni a Nexusban.

      nexus_ldap_users: []
      # - felhasználónév: j.doe
      #   állapot: jelen
      #   szerepek:
      #     - "nx-admin"

Az LDAP felhasználók/szerepek leképezése. Állapot nem létezik eltávolítja a szerepeket a meglévő felhasználóból, ha már létezik.
Az LDAP felhasználók nem törlődnek. A szerep beállítása egy nem létező felhasználónál hibához vezet.

Tartalomválasztók

  nexus_content_selectors:
  - név: docker-login
    leírás: Jelölő a Docker bejelentkezési jogosultsághoz
    keresési kifejezés: format=="docker" and path=~"/v2/"

További információk a tartalomválasztóról: Dokumentáció.

A tartalomválasztó használatához adj hozzá új jogosultságot a következővel: type: repository-content-selector és a megfelelőcontentSelector

- név: docker-login-jogosultság
  típus: repository-content-selector
  contentSelector: docker-login
  leírás: 'Bejelentkezés a Docker registry-be'
  repository: '*'
  műveletek:
  - olvasás
  - böngészés

Blobtárak és tárolók

    nexus_delete_default_repos: false

Törölje a tárolókat a nexus telepítés kezdeti alapértelmezett konfigurációjából. Ez a lépés csak az első telepítéskor végrehajtott (amikor nexus_data_dir üresnek bizonyult).

A tárolók eltávolítása a Nexus alapértelmezett konfigurációs beállításaiból. Ez a lépés csak az első telepítés során hajtható végre (amikor nexus_data_dir üres).

    nexus_delete_default_blobstore: false

Törölje az alapértelmezett blobtárat a nexus telepítés kezdeti alapértelmezett konfigurációjából. Ez csak akkor lehetséges, ha nexus_delete_default_repos: true és az összes konfigurált tároló (lásd alább) egyértelmű blob_store: custom. Ez a lépés csak az első telepítéskor hajtható végre (amikor nexus_data_dir üresnek bizonyult).

A blobtár (binaris artefaktumok) eltávolítása alapértelmezés szerint le van tiltva az alapértelmezett konfigurációból. A blobtár (binaris artefaktumok) eltávolításához tiltsa le nexus_delete_default_repos: true. Ez a lépés csak az első telepítésre vonatkozik (amikor nexus_data_dir üres).

    nexus_blobstores: []
    # példa blobtár elem:
    # - név: külön tárolás
    #   típus: fájl
    #   útvonal: /mnt/custom/path
    # - név: s3-blobtár
    #   típus: S3
    #   konfiguráció:
    #     bucket: s3-blobtár
    #     accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
    #     secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"

Blobtárak létrehozásához. A blobtár útvonala és a tároló blobtára nem frissíthető az első létrehozás után (bármilyen frissítés itt figyelmen kívül lesz hagyva a későbbi telepítéskor).

A blobtár S3-on történő konfigurálása kényelmi szolgáltatásként van biztosítva, és nem része az automatizált teszteknek, amelyeket a travison végzünk. Kérjük, vegye figyelembe, hogy az S3-on történő tárolás csak az AWS-en telepített példányokra ajánlott.

Létrehozás Blobtárak. A blobtárhoz és a tárolókhoz vezető útvonalak nem frissíthetők az első létrehozás után (bármilyen frissítés figyelmen kívül lesz hagyva a későbbi újratelepítéskor).

A BLOB-objektum tárolásának S3-on történő beállítása kényelmi szolgáltatásként kerül bemutatásra. Vegye figyelembe, hogy az S3-on való tárolás csak AWS-en telepített példányok számára ajánlott.

    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
    # példa bejelentkezéssel/jelszóval:
    # - 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

Fent a konfigurációs példa proxy-szerver Maven.

    nexus_repos_maven_hosted:
      - name: private-release
        version_policy: release
        write_policy: allow_once  # "allow", "allow_once" vagy "deny" közül választható

Maven hostolt tárolók konfiguráció. A negatív gyorsítótár beállítása opcionális, és az alapértelmezett értékek lesznek érvényben, ha elhagyják.

Konfiguráció hostolt (hosted) tárolók Maven. A negatív gyorsítótár konfiguráció (-1) opcionális, és alapértelmezés szerint az előzőleg megadott értékeket használja, ha nem adták meg.

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

Konfiguráció csoportok Maven.

Mindhárom tárolótípus az alábbi alapértelmezett értékekkel összevonva:

    _nexus_repos_maven_defaults:
      blob_store: default # Megjegyzés: nem frissíthető, miután a tároló létrejött
      strict_content_validation: true
      version_policy: release # release, snapshot vagy mixed
      layout_policy: strict # strict vagy permissive
      write_policy: allow_once # "allow", "allow_once" vagy "deny" közül választható
      maximum_component_age: -1  # Nexus gui alapértelmezett. Csak proxyk esetén
      maximum_metadata_age: 1440  # Nexus gui alapértelmezett. Csak proxyk esetén
      negative_cache_enabled: true # Nexus gui alapértelmezett. Csak proxyk esetén
      negative_cache_ttl: 1440 # Nexus gui alapértelmezett. Csak proxyk esetén

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS és yum tárolótípusok:
lásd defaults/main.yml ezekhez a lehetőségekhez:

A Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS és yum tárolók alapértelmezés szerint ki vannak kapcsolva:
Lásd defaults/main.yml ezekhez a lehetőségekhez:

      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

Kérjük, vegye figyelembe, hogy szükség lehet egyes biztonsági területek engedélyezésére, ha más tárolótípusokat is szeretne használni, nem csak a mavent. Ez alapértelmezés szerint false

nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false  # szükséges a docker névtelen hozzáféréshez

A Remote User Realm szintén engedélyezhető

nexus_rut_auth_realm: true

és a fejléc beállítható a megadott

nexus_rut_auth_header: "CUSTOM_HEADER"

Ütemezett feladatok

    nexus_scheduled_tasks: []
    #  #  Példafeladat a blobstore tömörítésére:
    #  - név: compact-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: alerts@example.org  # opcionális
    #    taskProperties:
    #      blobstoreName: {{ nexus_blob_names.docker.blob }} # minden feladatattribútumot szövegesen tárol a nexus
    #  #  Példafeladat a maven snapshotok törlésére
    #  - név: Purge-maven-snapshots
    #    cron: '0 50 23 * * ?'
    #    typeId: repository.maven.remove-snapshots
    #    task_alert_email: alerts@example.org  # opcionális
    #    taskProperties:
    #      repositoryName: "*"  # * mindkét repository számára. Válts egy repository névre, ha csak egy adottat szeretnél
    #      minimumRetained: "2"
    #      snapshotRetentionDays: "2"
    #      gracePeriodInDays: "2"
    #    booleanTaskProperties:
    #      removeIfReleased: true
    #  #  Példafeladat a nem használt docker manifeszt és képek törlésére
    #  - név: Purge unused docker manifests and images
    #    cron: '0 55 23 * * ?'
    #    typeId: "repository.docker.gc"
    #    task_alert_email: alerts@example.org  # opcionális
    #    taskProperties:
    #      repositoryName: "*"  # * mindkét repo számára. Válts repository névre, ha csak egy adottat szeretnél
    #  #  Példafeladat a befejezetlen docker feltöltések törlésére
    #  - név: Purge incomplete docker uploads
    #    cron: '0 0 0 * * ?'
    #    typeId: "repository.docker.upload-purge"
    #    task_alert_email: alerts@example.org  # opcionális
    #    taskProperties:
    #      age: "24"

Ütemezett feladatok a beállításhoz. typeId és feladatspecifikustaskProperties/booleanTaskProperties kitalálható vagy:

  • a Java típusok hierarchiájából org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • ellenőrizve a feladat létrehozási űrlapját az ön böngészőjében
  • az AJAX kérések megtekintésével a böngészőben, a feladat kézi konfigurálásakor.

A feladat tulajdonságait a megfelelő yaml blokkban kell megadni a típusuknak megfelelően:

  • taskProperties minden szöveges tulajdonság esetén (pl. repository nevek, blob nevek, időtartamok…).
  • booleanTaskProperties minden logikai tulajdonság esetén (pl. alapvetően a jelölőnégyzetek a nexus feladat létrehozó grafikus felhasználói felületében).

Biztonsági mentések

      nexus_backup_configure: false
      nexus_backup_cron: '0 0 21 * * ?'  # Lásd a cron kifejezések definícióját a nexus feladat létrehozó GUI-jában
      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  # Alapértelmezés szerint 4 biztonsági mentés megtartása (jelenlegi + utolsó 3)

A biztonsági mentés nem lesz beállítva, amíg nem vált át a nexus_backup_configure be. igaz.
Ebben az esetben a tervezett feladatsorozat be lesz állítva a Nexus futtatására
a megadott időközönként, nexus_backup_cron (alapértelmezés szerint naponta 21:00-kor).
Lásd [groovy sablon ezen feladathoz](templates / backup.groovy.j2) a részletes információkért.
Ez a tervezett feladat nem függ a többitől nexus_scheduled_tasks, amelyeket
a playbook-jában kell bejelentened.

Ha forgatni / törölni akarod a biztonsági mentéseket, állítsd be a nexus_backup_rotate: true és állítsa be a biztonsági mentések számát, amelyet meg szeretne tartani nexus_backup_keep_rotations (alapértelmezés szerint 4).

Rotáció használatakor, ha szeretne megtakarítani további lemezterületet a biztonsági mentési folyamat során,
beállíthatja nexus_backup_rotate_first: true. Ez előzetes rotációt/eltávolítást fog beállítani a biztonsági mentés előtt. Alapértelmezés szerint a rotáció a biztonsági mentés befejezése után történik. Kérjük, vegye figyelembe, hogy ebben az esetben a régi biztonsági mentések
eltávolításra kerülnek, mielőtt a jelenlegi biztonsági mentés elkészülne.

Helyreállítási eljárás

Futtassa a playbook-ot a következő paraméterrel: -e nexus_restore_point=
(például 2017-12-17-21-00-00 a 2017. december 17-én 21:00-kor

nexus eltávolítása

Figyelmeztetés: ez teljesen eltávolítja a jelenlegi adatokat. Feltétlenül készítsen biztonsági másolatot korábban, ha szükséges.

Használja a következő változót: nexus_purge, ha nulláról szeretne újraindítani és újratelepíteni a nexus példányt minden adat eltávolításával.

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

A jelszó megváltoztatása az adminisztrátor számára az első telepítés után

    nexus_default_admin_password: 'admin123'

Ezt nem szabad megváltoztatni a playbook-jában.Ez a változó a Nexus adminisztrátor alapértelmezett jelszavával tölti ki az első telepítéskor, és garantálja, hogy meg tudjuk változtatni az adminisztrátor jelszavát nexus_admin_password.

Ha meg szeretné változtatni az adminisztrátor jelszavát az első telepítés után, ideiglenesen megváltoztathatja régi jelszóra a parancssorból. A változtatás után nexus_admin_password a játék könyvében futtathatja:

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

Telegram csatorna a Nexus Sonatype-hoz: https://t.me/ru_nexus_sonatype

Csak a regisztrált felhasználók vehetnek részt a szavazáson. Kérem, jelentkezzen be., kérem.

Milyen artefaktum tárakat használ?

  • Sonatype Nexus ingyenes

  • Sonatype Nexus fizetős

  • Artifactory ingyenes

  • Artifactory fizetős

  • Harbor

  • Pulp

9 felhasználó szavazott. 3 felhasználó tartózkodott.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster