Inštalácia a konfigurácia Nexus Sonatype s využitím infraštruktúry ako kódového prístupu

Sonatype Nexus je integrovaná platforma, prostredníctvom ktorej môžu vývojári proxy, ukladať a spravovať závislosti Java (Maven), Docker, Python, Ruby, NPM, Bower obrázky, balíčky RPM, gitlfs, Apt, Go, Nuget a distribuovať svoje softvérové ​​zabezpečenie.

Prečo potrebujete Sonatype Nexus?

  • Na ukladanie súkromných artefaktov;
  • Pre ukladanie artefaktov, ktoré sú stiahnuté z internetu;

Artefakty podporované v základnom balíku Sonatype Nexus:

  • Java, Maven (jar)
  • prístavný robotník
  • Python (pip)
  • rubín (drahokam)
  • NPM
  • altánok
  • Mňam (ot./min.)
  • gitlfs
  • Surový
  • apt (deb)
  • Go
  • Nuget

Artefakty podporované komunitou:

  • Skladať
  • Conan
  • pchané
  • ELPA
  • kormidlo
  • P2
  • R

Inštalácia Sonatype Nexus pomocou https://github.com/ansible-ThoTeam/nexus3-oss

Požiadavky

  • Prečítajte si o používaní ansible na internete.
  • Nainštalujte ansible pip install ansible na pracovnej stanici, kde beží príručka.
  • Sada geerlingguy.java na pracovnej stanici, kde beží príručka.
  • Sada geerlingguy.apache na pracovnej stanici, kde beží príručka.
  • Táto rola bola testovaná na CentOS 7, Ubuntu Xenial (16.04) a Bionic (18.04), Debian Jessie a Stretch
  • jmespath Knižnica musí byť nainštalovaná na pracovnej stanici, na ktorej je spustený playbook. Inštalovať: sudo pip install -r requirements.txt
  • Uložte súbor playbooku (príklad nižšie) do súboru nexus.yml
  • Spustite inštaláciu nexus ansible-playbook -i host nexus.yml

Príklad ansible-playbooku na inštaláciu nexusu bez LDAP s úložiskami Maven (java), Docker, Python, Ruby, NPM, Bower, RPM a 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: 'Read & Browse access to all repos'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Deployments to company-project'
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # maps to the LDAP group
        name: developers
        description: All developers
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # used as key to update
        first_name: Jenkins
        last_name: CI
        email: [email protected]
        password: "s3cr3t"
        roles:
          - Developpers # role ID here
    nexus_blobstores:
      - name: company-artifacts
        path: /var/nexus/blobs/company-artifacts
    nexus_scheduled_tasks:
      - name: compact-blobstore
        cron: '0 0 22 * * ?'
        typeId: blobstore.compact
        taskProperties:
          blobstoreName: 'company-artifacts'

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

    # Yum. Change nexus_config_yum to true for create yum repository
    nexus_config_yum: true
    nexus_repos_yum_hosted:
      - name: private_yum_centos_7
        repodata_depth: 1
    nexus_repos_yum_proxy:
      - name: epel_centos_7_x86_64
        remote_url: http://download.fedoraproject.org/pub/epel/7/x86_64
        maximum_component_age: -1
        maximum_metadata_age: -1
        negative_cache_ttl: 60
      - name: centos-7-os-x86_64
        remote_url: http://mirror.centos.org/centos/7/os/x86_64/
        maximum_component_age: -1
        maximum_metadata_age: -1
        negative_cache_ttl: 60
    nexus_repos_yum_group:
      - name: yum_all
        member_repos:
          - private_yum_centos_7
          - epel_centos_7_x86_64

    # NPM. Change nexus_config_npm to true for create npm repository
    nexus_config_npm: true
    nexus_repos_npm_hosted: []
    nexus_repos_npm_group:
      - name: npm-public
        member_repos:
          - npm-registry
    nexus_repos_npm_proxy:
      - name: npm-registry
        remote_url: https://registry.npmjs.org/
        negative_cache_enabled: false

    # Docker. Change nexus_config_docker to true for create docker repository
    nexus_config_docker: true
    nexus_repos_docker_hosted:
      - name: docker-hosted
        http_port: "{{ nexus_docker_hosted_port }}"
        v1_enabled: True
    nexus_repos_docker_proxy:
      - name: docker-proxy
        http_port: "{{ nexus_docker_proxy_port }}"
        v1_enabled: True
        index_type: "HUB"
        remote_url: "https://registry-1.docker.io"
        use_nexus_certificates_to_access_index: false
        maximum_component_age: 1440
        maximum_metadata_age: 1440
        negative_cache_enabled: true
        negative_cache_ttl: 1440
    nexus_repos_docker_group:
      - name: docker-group
        http_port: "{{ nexus_docker_group_port }}"
        v1_enabled: True
        member_repos:
          - docker-hosted
          - docker-proxy

    # Bower. Change nexus_config_bower to true for create bower repository
    nexus_config_bower: true
    nexus_repos_bower_hosted:
      - name: bower-hosted
    nexus_repos_bower_proxy:
      - name: bower-proxy
        index_type: "proxy"
        remote_url: "https://registry.bower.io"
        use_nexus_certificates_to_access_index: false
        maximum_component_age: 1440
        maximum_metadata_age: 1440
        negative_cache_enabled: true
        negative_cache_ttl: 1440
    nexus_repos_bower_group:
      - name: bower-group
        member_repos:
          - bower-hosted
          - bower-proxy

    # Pypi. Change nexus_config_pypi to true for create pypi repository
    nexus_config_pypi: true
    nexus_repos_pypi_hosted:
      - name: pypi-hosted
    nexus_repos_pypi_proxy:
      - name: pypi-proxy
        index_type: "proxy"
        remote_url: "https://pypi.org/"
        use_nexus_certificates_to_access_index: false
        maximum_component_age: 1440
        maximum_metadata_age: 1440
        negative_cache_enabled: true
        negative_cache_ttl: 1440
    nexus_repos_pypi_group:
      - name: pypi-group
        member_repos:
          - pypi-hosted
          - pypi-proxy

    # rubygems. Change nexus_config_rubygems to true for create rubygems repository
    nexus_config_rubygems: true
    nexus_repos_rubygems_hosted:
      - name: rubygems-hosted
    nexus_repos_rubygems_proxy:
      - name: rubygems-proxy
        index_type: "proxy"
        remote_url: "https://rubygems.org"
        use_nexus_certificates_to_access_index: false
        maximum_component_age: 1440
        maximum_metadata_age: 1440
        negative_cache_enabled: true
        negative_cache_ttl: 1440
    nexus_repos_rubygems_group:
      - name: rubygems-group
        member_repos:
          - rubygems-hosted
          - rubygems-proxy

    # gitlfs. Change nexus_config_gitlfs to true for create gitlfs repository
    nexus_config_gitlfs: true
    nexus_repos_gitlfs_hosted:
      - name: gitlfs-hosted

  roles:
    - { role: geerlingguy.java }
    # Debian/Ubuntu only
    # - { role: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
    # RedHat/CentOS only
    - { role: geerlingguy.apache, apache_create_vhosts: no, apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] }
    - { role: ansible-thoteam.nexus3-oss, tags: ['ansible-thoteam.nexus3-oss'] }

screenshoty:

Inštalácia a konfigurácia Nexus Sonatype s využitím infraštruktúry ako kódového prístupu

Inštalácia a konfigurácia Nexus Sonatype s využitím infraštruktúry ako kódového prístupu

Variabilné roly

Premenné roly

Premenné s predvolenými hodnotami (pozri default/main.yml):

Všeobecné premenné

    nexus_version: ''
    nexus_timezone: 'UTC'

V predvolenom nastavení rola nainštaluje najnovšiu dostupnú verziu zariadenia Nexus. Verziu môžete opraviť zmenou premennej nexus_version. Pozrite si dostupné verzie na https://www.sonatype.com/download-oss-sonatype.

Ak prejdete na novšiu verziu, rola sa pokúsi aktualizovať vašu inštaláciu zariadenia Nexus.

Ak používate staršiu verziu zariadenia Nexus ako najnovšiu, mali by ste sa uistiť, že nepoužívate funkcie, ktoré nie sú dostupné v nainštalovanom vydaní (napríklad hosťovanie yum repozitárov je dostupné pre nexus väčšie ako 3.8.0, git lfs repo pre nexus väčšie ako 3.3.0 atď.)

nexus timezone je názov časovej zóny Java, ktorý môže byť užitočný v kombinácii s nasledujúcimi výrazmi cron pre úlohy nexus_scheduled.

Port Nexus a kontextová cesta

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Port a kontextová cesta procesu pripojenia Java. nexus_default_context_path musí obsahovať lomku, keď je nastavená, napr. nexus_default_context_path: '/nexus/'.

Používateľ a skupina operačného systému Nexus

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Používateľ a skupina, ktoré vlastnia súbory Nexus a spúšťajú službu, budú vytvorené rolou, ak jedna chýba.

    nexus_os_user_home_dir: '/home/nexus'

Povoliť zmenu predvoleného domovského adresára pre používateľa zariadenia Nexus

Adresáre inštancií Nexus

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

Katalógy zariadení Nexus.

  • nexus_installation_dir obsahuje nainštalované spustiteľné súbory
  • nexus_data_dir obsahuje všetku konfiguráciu, úložiská a stiahnuté artefakty. Vlastné cesty blobstore nexus_data_dir možno prispôsobiť, pozri nižšie nexus_blobstores.
  • nexus_tmp_dir obsahuje všetky dočasné súbory. Predvolená cesta pre redhat bola presunutá z /tmp na prekonanie potenciálnych problémov s automatickými čistiacimi postupmi. Pozri #168.

Konfigurácia využitia pamäte Nexus JVM

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

Toto sú predvolené nastavenia pre Nexus. Prosím, nemeňte tieto hodnoty Ak ste nečítali časť pamäťových požiadaviek na systém nexus a nerozumejú tomu, čo robia.

Ako druhé varovanie uvádzame úryvok z vyššie uvedeného dokumentu:

Neodporúča sa zvyšovať pamäť haldy JVM nad odporúčané hodnoty v snahe zlepšiť výkon. To môže mať v skutočnosti opačný efekt, výsledkom čoho je zbytočná práca pre operačný systém.

Heslo správcu

    nexus_admin_password: 'changeme'

Heslo účtu „admin“ pre nastavenie. Toto funguje len pri prvej predvolenej inštalácii. Ak ho chcete neskôr zmeniť pomocou roly, pozrite si časť [Zmeniť heslo správcu po prvej inštalácii](# change-admin-password-after-first-install).

Dôrazne sa odporúča neukladať svoje heslo v príručke ako čistý text, ale použiť [ansible-vault šifrovanie] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (buď vložený alebo v samostatnom súbore načítanom napr. include_vars)

Predvolene anonymný prístup

    nexus_anonymous_access: false

Anonymný prístup je predvolene zakázaný. Prečítajte si viac o anonymný prístup.

Verejný názov hostiteľa

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Plne kvalifikovaný názov domény a schéma (https alebo http), na základe ktorých bude inštancia zariadenia Nexus dostupná svojim klientom.

Prístup cez API pre túto rolu

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

Tieto premenné riadia, ako sa rola pripája k rozhraniu Nexus API na poskytovanie.
Len pre pokročilých používateľov. Tieto predvolené nastavenia pravdepodobne nebudete chcieť zmeniť

Nastavenie reverzného proxy

    httpd_setup_enable: false
    httpd_server_name: "{{ nexus_public_hostname }}"
    httpd_default_admin_email: "[email protected]"
    httpd_ssl_certificate_file: 'files/nexus.vm.crt'
    httpd_ssl_certificate_key_file: 'files/nexus.vm.key'
    # httpd_ssl_certificate_chain_file: "{{ httpd_ssl_certificate_file }}"
    httpd_copy_ssl_files: true

Sada SSL Reverzný proxy.
Ak to chcete urobiť, musíte nainštalovať httpd. Poznámka: kedy pre httpd_setup_enable nastavená hodnotatrue, nexus kontakty 127.0.0.1:8081, teda nie je priamo prístupný cez HTTP port 8081 z externej IP adresy.

Predvolený názov hostiteľa je nexus_public_hostname. Ak z nejakého dôvodu potrebujete iné mená, môžete ich nastaviť httpd_server_name s iným významom.

С httpd_copy_ssl_files: true (štandardne) vyššie uvedené certifikáty by mali existovať vo vašom adresári playbooku a budú skopírované na server a nakonfigurované v Apache.

Ak chcete použiť existujúce certifikáty na serveri, nainštalujte httpd_copy_ssl_files: false a uveďte nasledujúce premenné:

    # 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 je voliteľné a malo by byť ponechané nenastavené, ak nechcete upravovať reťazový súbor

    httpd_default_admin_email: "[email protected]"

Nastaviť predvolenú e-mailovú adresu správcu

Konfigurácia LDAP

Pripojenia LDAP a oblasť zabezpečenia sú predvolene vypnuté

    nexus_ldap_realm: false
    ldap_connections: []

pripojenia LDAP, každý prvok vyzerá takto:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'My Company LDAP' # used as a key to update the ldap config
        ldap_protocol: 'ldaps' # ldap or ldaps
        ldap_hostname: 'ldap.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false # Wether or not to use certs in the nexus trust store
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_auth: 'none' # or simple
        ldap_auth_username: 'username' # if auth = simple
        ldap_auth_password: 'password' # if auth = simple
        ldap_user_base_dn: 'ou=users'
        ldap_user_filter: '(cn=*)' # (optional)
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_subtree: false
        ldap_map_groups_as_roles: false
        ldap_group_base_dn: 'ou=groups'
        ldap_group_object_class: 'posixGroup'
        ldap_group_id_attribute: 'cn'
        ldap_group_member_attribute: 'memberUid'
        ldap_group_member_format: '${username}'
        ldap_group_subtree: false

Príklad konfigurácie LDAP pre anonymnú autentifikáciu (anonymná väzba), toto je tiež „minimálna“ konfigurácia:

    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'

Príklad konfigurácie LDAP pre jednoduchú autentifikáciu (pomocou účtu DSA):

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP config with DSA'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # better keep passwords in an ansible vault
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_subtree: false

Príklad konfigurácie LDAP pre jednoduchú autentifikáciu (pomocou účtu DSA) + skupiny mapované ako roly:

    nexus_ldap_realm: true
    ldap_connections
      - ldap_name: 'LDAP config with DSA'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # better keep passwords in an ansible vault
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_map_groups_as_roles: true
        ldap_group_base_dn: 'ou=groups'
        ldap_group_object_class: 'groupOfNames'
        ldap_group_id_attribute: 'cn'
        ldap_group_member_attribute: 'member'
        ldap_group_member_format: 'uid=${username},ou=users,dc=mycompany,dc=net'
        ldap_group_subtree: false

Príklad konfigurácie LDAP pre jednoduchú autentifikáciu (pomocou účtu DSA) + skupiny dynamicky mapované ako roly:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP config with DSA'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # better keep passwords in an ansible vault
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_map_groups_as_roles: true
        ldap_map_groups_as_roles_type: 'dynamic'
        ldap_user_memberof_attribute: 'memberOf'

Privilégium

    nexus_privileges:
      - name: all-repos-read # used as key to update a privilege
        # type: <one of application, repository-admin, repository-content-selector, repository-view, script or wildcard>
        description: 'Read & Browse access to all repos'
        repository: '*'
        actions: # can be add, browse, create, delete, edit, read or  * (all)
          - read
          - browse
        # pattern: pattern
        # domain: domain
        # script_name: name

Zoznam privilégiá pre nastavenia. Pozrite si dokumentáciu a GUI a skontrolujte, ktoré premenné je potrebné nastaviť v závislosti od typu oprávnenia.

Tieto prvky sú kombinované s nasledujúcimi predvolenými hodnotami:

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

Roly (v Nexuse to znamená)

    nexus_roles:
      - id: Developpers # can map to a LDAP group id, also used as a key to update a role
        name: developers
        description: All developers
        privileges:
          - nx-search-read
          - all-repos-read
        roles: [] # references to other role names

Zoznam rolí pre nastavenia.

Členovia

    nexus_local_users: []
      # - username: jenkins # used as key to update
      #   state: present # default value if ommited, use 'absent' to remove user
      #   first_name: Jenkins
      #   last_name: CI
      #   email: [email protected]
      #   password: "s3cr3t"
      #   roles:
      #     - developers # role ID

Zoznam miestnych (nie LDAP) používateľov/účtov na vytvorenie v zariadení Nexus.

Zoznam miestnych používateľov/účtov (nie LDAP), ktoré sa majú vytvoriť v zariadení Nexus.

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

Ldap mapovanie používateľov/rolí. Štát absent odstráni roly z existujúceho používateľa, ak už existuje.
Používatelia Ldap sa neodstránia. Pokus o nastavenie roly pre neexistujúceho používateľa bude mať za následok chybu.

Selektory obsahu

  nexus_content_selectors:
  - name: docker-login
    description: Selector for docker login privilege
    search_expression: format=="docker" and path=~"/v2/"

Ďalšie informácie o výbere obsahu nájdete v časti Dokumentácia.

Ak chcete použiť selektor obsahu, pridajte nové privilégium s type: repository-content-selector a relevantnécontentSelector

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

Blobstores a úložiská

    nexus_delete_default_repos: false

Odstráňte archívy z počiatočnej predvolenej konfigurácie inštalácie nexus. Tento krok sa vykoná len pri prvej inštalácii (keď nexus_data_dir bolo zistené prázdne).

Odstraňujú sa úložiská z predvolenej predvolenej konfigurácie pre Nexus. Tento krok sa vykonáva iba počas prvej inštalácie (keď nexus_data_dir prázdne).

    nexus_delete_default_blobstore: false

Odstráňte predvolený blobstore z počiatočnej predvolenej konfigurácie inštalácie zariadenia Nexus. To sa dá urobiť iba ak nexus_delete_default_repos: true a všetky nakonfigurované úložiská (pozri nižšie) majú explicitný blob_store: custom. Tento krok sa vykoná len pri prvej inštalácii (keď nexus_data_dir bolo zistené prázdne).

Odstraňovanie úložiska objektov blob (binárne artefakty) je predvolene zakázané z počiatočnej konfigurácie. Ak chcete odstrániť úložisko blob (binárne artefakty), vypnite nexus_delete_default_repos: true. Tento krok sa vykonáva iba počas prvej inštalácie (keď nexus_data_dir prázdne).

    nexus_blobstores: []
    # example blobstore item :
    # - name: separate-storage
    #   type: file
    #   path: /mnt/custom/path
    # - name: s3-blobstore
    #   type: S3
    #   config:
    #     bucket: s3-blobstore
    #     accessKeyId: "{{ VAULT_ENCRYPTED_KEY_ID }}"
    #     secretAccessKey: "{{ VAULT_ENCRYPTED_ACCESS_KEY }}"

Blobstores vytvárať. Cestu blobstore a úložisko blobstore úložiska nie je možné aktualizovať po prvom vytvorení (akákoľvek aktualizácia tu bude pri opätovnom poskytovaní ignorovaná).

Konfigurácia blobstore na S3 je poskytovaná ako pohodlie a nie je súčasťou automatických testov, ktoré spúšťame na travis. Upozorňujeme, že ukladanie na S3 sa odporúča iba pre inštancie nasadené na AWS.

Tvorba Blobstores. Cestu úložiska a úložisko úložiska nie je možné aktualizovať po prvom vytvorení (akákoľvek aktualizácia tu bude pri opätovnej inštalácii ignorovaná).

Nastavenie úložiska objektov blob na S3 je poskytované ako pohodlie. Upozorňujeme, že úložisko S3 sa odporúča iba pre inštancie nasadené na AWS.

    nexus_repos_maven_proxy:
      - name: central
        remote_url: 'https://repo1.maven.org/maven2/'
        layout_policy: permissive
        # maximum_component_age: -1
        # maximum_metadata_age: 1440
        # negative_cache_enabled: true
        # negative_cache_ttl: 1440
      - name: jboss
        remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
        # maximum_component_age: -1
        # maximum_metadata_age: 1440
        # negative_cache_enabled: true
        # negative_cache_ttl: 1440
    # example with a login/password :
    # - name: secret-remote-repo
    #   remote_url: 'https://company.com/repo/secure/private/go/away'
    #   remote_username: 'username'
    #   remote_password: 'secret'
    #   # maximum_component_age: -1
    #   # maximum_metadata_age: 1440
    #   # negative_cache_enabled: true
    #   # negative_cache_ttl: 1440

Vyššie je uvedený príklad konfigurácie proxy server Maven.

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

Maven hostované úložiská konfigurácia. Konfigurácia negatívnej vyrovnávacej pamäte je voliteľná a ak sa vynechá, predvolene sa použijú vyššie uvedené hodnoty.

konfigurácia hostované úložiská Maven. Záporná konfigurácia vyrovnávacej pamäte (-1) je voliteľná a ak nie je špecifikovaná, použije sa predvolene vyššie uvedené hodnoty.

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

konfigurácia skupiny Maven.

Všetky tri typy úložiska sú kombinované s nasledujúcimi predvolenými hodnotami:

    _nexus_repos_maven_defaults:
      blob_store: default # Note : cannot be updated once the repo has been created
      strict_content_validation: true
      version_policy: release # release, snapshot or mixed
      layout_policy: strict # strict or permissive
      write_policy: allow_once # one of "allow", "allow_once" or "deny"
      maximum_component_age: -1  # Nexus gui default. For proxies only
      maximum_metadata_age: 1440  # Nexus gui default. For proxies only
      negative_cache_enabled: true # Nexus gui default. For proxies only
      negative_cache_ttl: 1440 # Nexus gui default. For proxies only

Typy úložiska Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS a yum:
vidieť defaults/main.yml pre tieto možnosti:

Repozitáre Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS a yum sú predvolene vypnuté:
Vidieť defaults/main.yml pre tieto možnosti:

      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

Upozorňujeme, že možno budete musieť povoliť určité rozsahy zabezpečenia, ak chcete používať iné typy úložísk ako maven. Toto je predvolene nepravdivé

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

Vzdialená oblasť používateľov sa dá povoliť aj pomocou

nexus_rut_auth_realm: true

a názov je možné prispôsobiť definovaním

nexus_rut_auth_header: "CUSTOM_HEADER"

Plánované úlohy

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

Plánované úlohy pre nastavenia. typeId a špecifické pre danú úlohutaskProperties/booleanTaskProperties môžete hádať buď:

  • z hierarchie typov Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • kontrola formulára na vytvorenie úlohy HTML vo vašom prehliadači
  • z prezerania požiadaviek AJAX v prehliadači pri manuálnom nastavovaní úlohy.

Vlastnosti úlohy musia byť deklarované v správnom bloku yaml v závislosti od ich typu:

  • taskProperties pre všetky vlastnosti reťazcov (tj názvy úložísk, názvy úložísk, časové obdobia...).
  • booleanTaskProperties pre všetky logické vlastnosti (t. j. hlavne začiarkavacie políčka v GUI úlohy vytvorenia nexusu).

Zálohy

      nexus_backup_configure: false
      nexus_backup_cron: '0 0 21 * * ?'  # See cron expressions definition in nexus create task gui
      nexus_backup_dir: '/var/nexus-backup'
      nexus_restore_log: '{{ nexus_backup_dir }}/nexus-restore.log'
      nexus_backup_rotate: false
      nexus_backup_rotate_first: false
      nexus_backup_keep_rotations: 4  # Keep 4 backup rotation by default (current + last 3)

Zálohovanie nebude nakonfigurované, kým neprepnete nexus_backup_configure в true.
V tomto prípade bude naplánovaná úloha skriptu nakonfigurovaná na spustenie na zariadení Nexus
v intervale uvedenom v nexus_backup_cron (predvolene 21:00 každý deň).
Podrobnosti nájdete v [šablóna groovy pre túto úlohu] (templates/backup.groovy.j2).
Táto naplánovaná úloha je nezávislá od ostatných nexus_scheduled_tasksktoré si ty
oznámiť vo svojej príručke.

Ak chcete otočiť/vymazať zálohy, nainštalujte nexus_backup_rotate: true a nakonfigurujte počet záloh, ktoré chcete uložiť nexus_backup_keep_rotations (predvolené 4).

Ak pri používaní rotácie chcete ušetriť ďalšie miesto na disku počas procesu zálohovania,
Môžete nainštalovať nexus_backup_rotate_first: true. Týmto sa nakonfiguruje predbežné otočenie/vymazanie pred zálohovaním. Štandardne k rotácii dochádza po vytvorení zálohy. Upozorňujeme, že v tomto prípade staré zálohy
budú odstránené pred vytvorením aktuálnej zálohy.

Postup obnovy

Spustite príručku s parametrom -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(napríklad 2017-12-17-21-00-00 pre 17. decembra 2017 o 21:00

Odstraňuje sa nexus

Upozornenie: Týmto sa úplne vymažú vaše aktuálne údaje. V prípade potreby si vytvorte zálohu skôr

Použite premennú nexus_purgeak potrebujete reštartovať od začiatku a znova nainštalovať inštanciu nexus s odstránenými všetkými údajmi.

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

Po prvej inštalácii zmeňte heslo správcu

    nexus_default_admin_password: 'admin123'

Toto by sa nemalo meniť vo vašej príručke. Táto premenná sa pri prvej inštalácii vyplní predvoleným heslom správcu zariadenia Nexus a zaisťuje, že môžeme heslo správcu zmeniť na nexus_admin_password.

Ak chcete zmeniť heslo správcu po prvej inštalácii, môžete ho dočasne zmeniť na staré heslo z príkazového riadka. Po zmene nexus_admin_password vo svojej príručke môžete spustiť:

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

Telegramový kanál na Nexus Sonatype: https://t.me/ru_nexus_sonatype

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

Aké úložiská artefaktov používate?

  • Sonatype Nexus je zadarmo

  • Sonatype Nexus zaplatil

  • Artifactory je zadarmo

  • Umelo platené

  • Prístav

  • Dreň

Hlasovalo 9 užívateľov. 3 používatelia sa zdržali hlasovania.

Zdroj: hab.com

Pridať komentár