Installation og konfiguration af Nexus Sonatype ved hjælp af infrastrukturen som kodetilgang

Sonatype Nexus er en integreret platform, hvorigennem udviklere kan proxy, gemme og administrere Java (Maven) afhængigheder, Docker, Python, Ruby, NPM, Bower images, RPM-pakker, gitlfs, Apt, Go, Nuget og distribuere deres softwaresikkerhed.

Hvorfor har du brug for Sonatype Nexus?

  • Til opbevaring af private artefakter;
  • Til cachelagring af artefakter, der er downloadet fra internettet;

Artefakter understøttet i den grundlæggende Sonatype Nexus-pakke:

  • Java, Maven (krukke)
  • Docker
  • Python (pip)
  • Ruby (perle)
  • NPM
  • Bower
  • Yum (rpm)
  • gitlfs
  • Raw
  • Apt (deb)
  • Go
  • nuget

Fællesskabsunderstøttede artefakter:

  • Komponere
  • Conan
  • CPAN
  • ELPA
  • Helm
  • P2
  • R

Installation af Sonatype Nexus vha https://github.com/ansible-ThoTeam/nexus3-oss

Krav

  • Læs om brug af ansible på internettet.
  • Installer ansible pip install ansible på den arbejdsstation, hvor spillebogen kører.
  • Indstil geerlingguy.java på den arbejdsstation, hvor spillebogen kører.
  • Indstil geerlingguy.apache på den arbejdsstation, hvor spillebogen kører.
  • Denne rolle er blevet testet på CentOS 7, Ubuntu Xenial (16.04) og Bionic (18.04), Debian Jessie og Stretch
  • jmespath Biblioteket skal være installeret på den arbejdsstation, hvor afspilningsbogen kører. At installere: sudo pip install -r requirements.txt
  • Gem playbook-filen (eksempel nedenfor) i filen nexus.yml
  • Kør nexus installation ansible-playbook -i host nexus.yml

Eksempel ansible-playbook til installation af nexus uden LDAP med Maven (java), Docker, Python, Ruby, NPM, Bower, RPM og gitlfs repositories.

---
- 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'] }

Skærmbilleder:

Installation og konfiguration af Nexus Sonatype ved hjælp af infrastrukturen som kodetilgang

Installation og konfiguration af Nexus Sonatype ved hjælp af infrastrukturen som kodetilgang

Variable roller

Rollevariabler

Variabler med standardværdier (se default/main.yml):

Generelle variabler

    nexus_version: ''
    nexus_timezone: 'UTC'

Som standard vil rollen installere den seneste tilgængelige version af Nexus. Du kan rette versionen ved at ændre variablen nexus_version. Se tilgængelige versioner på https://www.sonatype.com/download-oss-sonatype.

Hvis du skifter til en nyere version, vil rollen forsøge at opdatere din Nexus-installation.

Hvis du bruger en ældre version af Nexus end den seneste, bør du sikre dig, at du ikke bruger funktioner, der ikke er tilgængelige i den installerede udgivelse (f.eks. er hosting af yum-lagre tilgængelig for nexus større end 3.8.0, git lfs repo for nexus større end 3.3.0 osv.)

nexus timezone er navnet på Java-tidszonen, som kan være nyttig i kombination med følgende cron-udtryk for nexus_scheduled-opgaver.

Nexus-port og kontekststi

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Porten og kontekststien til Java-forbindelsesprocessen. nexus_default_context_path skal indeholde en skråstreg, når den er indstillet, f.eks.: nexus_default_context_path: '/nexus/'.

Nexus OS bruger og gruppe

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Brugeren og gruppen, der bruges til at eje Nexus-filer og køre tjenesten, oprettes af rollen, hvis der mangler en.

    nexus_os_user_home_dir: '/home/nexus'

Tillad ændring af standardhjemmebiblioteket for nexus-brugeren

Nexus-forekomstmapper

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

Nexus-kataloger.

  • nexus_installation_dir indeholder installerede eksekverbare filer
  • nexus_data_dir indeholder alle konfigurationer, repositories og downloadede artefakter. Tilpassede blobstore-stier nexus_data_dir kan tilpasses, se nedenfor nexus_blobstores.
  • nexus_tmp_dir indeholder alle midlertidige filer. Standardstien til redhat er blevet flyttet fra /tmp at overvinde potentielle problemer med automatiske rengøringsprocedurer. Se #168.

Konfiguration af Nexus JVM-hukommelsesbrug

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

Dette er standardindstillingerne for Nexus. Ændr venligst ikke disse værdier Hvis du ikke har læst nexus systemkrav hukommelse sektion og forstår ikke hvad de laver.

Som en anden advarsel er her et uddrag fra ovenstående dokument:

Det anbefales ikke at øge JVM-heap-hukommelsen ud over de anbefalede værdier i et forsøg på at forbedre ydeevnen. Dette kan faktisk have den modsatte effekt, hvilket resulterer i unødvendigt arbejde for operativsystemet.

Administratoradgangskode

    nexus_admin_password: 'changeme'

"admin"-kontoens adgangskode til opsætning. Dette virker kun på den første standardinstallation. Se venligst [Skift admin-adgangskode efter første installation](# change-admin-password-after-first-install), hvis du vil ændre det senere med en rolle.

Det anbefales kraftigt ikke at gemme din adgangskode som klar tekst i spillebogen, men at bruge [ansible-vault-kryptering] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (enten inline eller i en separat fil indlæst med f.eks. include_vars)

Anonym adgang som standard

    nexus_anonymous_access: false

Anonym adgang er som standard deaktiveret. Læs mere om anonym adgang.

Offentligt værtsnavn

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Det fuldt kvalificerede domænenavn og skema (https eller http), under hvilket Nexus-instansen vil være tilgængelig for sine kunder.

API-adgang for denne rolle

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

Disse variabler styrer, hvordan rollen opretter forbindelse til Nexus API til klargøring.
Kun for avancerede brugere. Du ønsker sandsynligvis ikke at ændre disse standardindstillinger

Opsætning af en omvendt 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

Indstil SSL omvendt proxy.
For at gøre dette skal du installere httpd. Bemærk: hvornår for httpd_setup_enable indstillet værditrue, nexus-kontakter 127.0.0.1:8081, således nej være direkte tilgængelig via HTTP-port 8081 fra den eksterne IP-adresse.

Det anvendte standardværtsnavn er nexus_public_hostname. Hvis du af en eller anden grund har brug for forskellige navne, kan du indstille httpd_server_name med en anden betydning.

С httpd_copy_ssl_files: true (som standard) skal ovenstående certifikater eksistere i din playbook-mappe og vil blive kopieret til serveren og konfigureret i apache.

Hvis du vil bruge eksisterende certifikater på serveren, skal du installere httpd_copy_ssl_files: false og angiv følgende variable:

    # 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 er valgfri og bør ikke indstilles, hvis du ikke ønsker at tilpasse kædefilen

    httpd_default_admin_email: "[email protected]"

Indstil standard administrator-e-mailadresse

LDAP-konfiguration

LDAP-forbindelser og sikkerhedsområdet er som standard deaktiveret

    nexus_ldap_realm: false
    ldap_connections: []

LDAP-forbindelser, hvert element ser således ud:

    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

Eksempel på LDAP-konfiguration til anonym godkendelse (anonym binding), dette er også en "minimal" konfiguration:

    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'

Eksempel på LDAP-konfiguration til simpel godkendelse (ved hjælp af DSA-konto):

    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

Eksempel på LDAP-konfiguration til simpel godkendelse (ved hjælp af DSA-konto) + grupper kortlagt som roller:

    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

Eksempel på LDAP-konfiguration til simpel godkendelse (ved hjælp af DSA-konto) + grupper dynamisk kortlagt som roller:

    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'

Privilegium

    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

liste privilegier for indstillinger. Se i dokumentationen og GUI for at kontrollere, hvilke variabler der skal indstilles afhængigt af privilegietypen.

Disse elementer er kombineret med følgende standardværdier:

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

Roller (inde i Nexus betyder det)

    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

liste roller for indstillinger.

Medlemmer

    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

Liste over lokale (ikke-LDAP) brugere/konti, der skal oprettes i nexus.

Liste over lokale (ikke-LDAP) brugere/konti, der skal oprettes i Nexus.

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

Ldap kortlægning af brugere/roller. Stat absent vil fjerne roller fra en eksisterende bruger, hvis en allerede eksisterer.
Ldap-brugere slettes ikke. Forsøg på at indstille en rolle for en ikke-eksisterende bruger vil resultere i en fejl.

Indholdsvælgere

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

For mere information om indholdsvælgeren, se Dokumentation.

For at bruge indholdsvælgeren skal du tilføje et nyt privilegium med type: repository-content-selector og relevantcontentSelector

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

Blobstores og repositories

    nexus_delete_default_repos: false

Slet lagrene fra den oprindelige standardkonfiguration for nexus-installation. Dette trin udføres kun ved førstegangsinstallation (hvornår nexus_data_dir er fundet tom).

Fjernelse af lagre fra standardstandardkonfigurationen for Nexus. Dette trin udføres kun under den første installation (hvornår nexus_data_dir tom).

    nexus_delete_default_blobstore: false

Slet standard blobstore fra den oprindelige standardkonfiguration for nexus install. Dette kan kun gøres hvis nexus_delete_default_repos: true og alle konfigurerede repositories (se nedenfor) har en eksplicit blob_store: custom. Dette trin udføres kun ved førstegangsinstallation (hvornår nexus_data_dir er fundet tom).

Fjernelse af blob-lagring (binære artefakter) er deaktiveret som standard fra den oprindelige konfiguration. Sluk for at fjerne klatlagring (binære artefakter). nexus_delete_default_repos: true. Dette trin udføres kun under den første installation (hvornår nexus_data_dir tom).

    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 at skabe. En blobstore-sti og en repository-blobstore kan ikke opdateres efter den første oprettelse (enhver opdatering her vil blive ignoreret ved re-provisioning).

Konfiguration af blobstore på S3 er tilvejebragt som en bekvemmelighed og er ikke en del af de automatiske test, vi kører på travis. Bemærk venligst, at lagring på S3 kun anbefales for forekomster implementeret på AWS.

Skabelse Blobstores. Lagerstien og lagerdepotet kan ikke opdateres efter den første oprettelse (enhver opdatering her vil blive ignoreret, når den installeres igen).

Opsætning af blob-opbevaring på S3 er tilvejebragt som en bekvemmelighed. Bemærk venligst, at S3-lagring kun anbefales til forekomster, der er implementeret på 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

Ovenfor er et eksempel på konfiguration proxyserver Maven.

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

Maven hostede depoter konfiguration. Negativ cache-konfiguration er valgfri og vil som standard have ovenstående værdier, hvis den udelades.

Konfiguration hostede depoter Maven. Den negative cache-konfiguration (-1) er valgfri og vil som standard have ovenstående værdier, hvis den ikke er angivet.

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

Konfiguration grupper Maven.

Alle tre lagertyper er kombineret med følgende standardværdier:

    _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

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS og yum lagertyper:
se defaults/main.yml for disse muligheder:

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS og yum repositories er deaktiveret som standard:
se defaults/main.yml for disse muligheder:

      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

Bemærk venligst, at du muligvis skal aktivere visse sikkerhedsomfang, hvis du vil bruge andre typer repositories end maven. Dette er som standard falsk

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

Remote User Realm kan også aktiveres vha

nexus_rut_auth_realm: true

og titlen kan tilpasses ved at definere

nexus_rut_auth_header: "CUSTOM_HEADER"

Planlagte opgaver

    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"

Planlagte opgaver for indstillinger. typeId og opgavespecifiktaskProperties/booleanTaskProperties du kan gætte enten:

  • fra Java-typehierarkiet org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • kontrollere formularen til oprettelse af HTML-opgaver i din browser
  • fra at se AJAX-anmodninger i browseren, når du manuelt opsætter en opgave.

Opgaveegenskaber skal angives i den korrekte yaml-blok afhængigt af deres type:

  • taskProperties for alle strengegenskaber (dvs. lagernavne, lagernavne, tidsperioder...).
  • booleanTaskProperties for alle logiske egenskaber (dvs. hovedsageligt afkrydsningsfelter i GUI'en til oprettelsesopgaven til nexus).

Sikkerhedskopier

      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)

Sikkerhedskopiering vil ikke blive konfigureret, før du skifter nexus_backup_configure в true.
I dette tilfælde vil den planlagte scriptopgave blive konfigureret til at køre på Nexus
med det interval, der er angivet i nexus_backup_cron (standard kl. 21 hver dag).
Se [groovy skabelon til denne opgave](templates/backup.groovy.j2) for detaljer.
Denne planlagte opgave er uafhængig af andre nexus_scheduled_taskssom du
annoncere i din spillebog.

Hvis du vil rotere/slette sikkerhedskopier, skal du installere nexus_backup_rotate: true og konfigurer antallet af sikkerhedskopier, du gerne vil gemme ved hjælp af nexus_backup_keep_rotations (standard 4).

Når du bruger rotation, hvis du vil spare yderligere diskplads under sikkerhedskopieringsprocessen,
Du kan installere nexus_backup_rotate_first: true. Dette vil konfigurere pre-rotation/sletning før backup. Som standard sker rotation, efter at en sikkerhedskopi er oprettet. Bemærk venligst, at i dette tilfælde de gamle sikkerhedskopier
slettes, før den aktuelle sikkerhedskopi laves.

Inddrivelsesprocedure

Kør playbook med parameter -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(f.eks. 2017-12-17-21-00-00 for 17. december 2017 kl. 21:00

Fjerner nexus

Advarsel: Dette vil helt slette dine nuværende data. Sørg for at lave en sikkerhedskopi tidligere, hvis det er nødvendigt

Brug en variabel nexus_purgehvis du skal genstarte fra bunden og geninstallere nexus-forekomsten med alle data fjernet.

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

Skift administratoradgangskode efter første installation

    nexus_default_admin_password: 'admin123'

Dette bør ikke ændres i din spillebog. Denne variabel er udfyldt med standard Nexus administratoradgangskode, når den første gang installeres og sikrer, at vi kan ændre administratoradgangskoden til nexus_admin_password.

Hvis du vil ændre administratoradgangskoden efter den første installation, kan du midlertidigt ændre den til den gamle adgangskode fra kommandolinjen. Efter ændring nexus_admin_password i din playbook kan du køre:

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

Telegramkanal på Nexus Sonatype: https://t.me/ru_nexus_sonatype

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, Vær venlig.

Hvilke artefaktdepoter bruger du?

  • Sonatype Nexus er gratis

  • Sonatype Nexus betalt

  • Artifactory er gratis

  • Artifactory betalt

  • Harbor

  • Pulp

9 brugere stemte. 3 brugere undlod at stemme.

Kilde: www.habr.com

Tilføj en kommentar