Installation og konfiguration af Nexus Sonatype ved at bruge infrastrukturen som kode tilgang

Sonatype Nexus – en integreret platform, som udviklere kan bruge til at proxy, opbevare og håndtere Java-afhængigheder (Maven), Docker-billeder, Python, Ruby, NPM, Bower, RPM-pakker, gitlfs, Apt, Go, Nuget, samt distribuere deres software.

Hvorfor bruge Sonatype Nexus?

  • Til opbevaring af private artefakter;
  • Til caching af artefakter, der hentes fra internettet;

Artefakter understøttet i den grundlæggende version af Sonatype Nexus:

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

Artefakter understøttet af fællesskabet:

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

Installation af Sonatype Nexus ved hjælp af https://github.com/ansible-ThoTeam/nexus3-oss

Krav

  • Læs om brugen af ansible på internettet.
  • Installer ansible pip install ansible på den arbejdsstation, hvor playbooken køres.
  • Installer geerlingguy.java på den arbejdsstation, hvor playbooken køres.
  • Installer geerlingguy.apache på den arbejdsstation, hvor playbooken køres.
  • Denne rolle er 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 playbooken køres. For at installere, udfør sudo pip install -r requirements.txt
  • Gem playbook-filen (se eksempel nedenfor) som nexus.yml
  • Kør installationen af nexus ansible-playbook -i host nexus.yml

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

---
- name: Nexus
  hosts: nexus
  become: yes

  vars:
    nexus_timezone: 'Asien/Omsk'
    nexus_admin_password: "admin123"
    nexus_public_hostname: 'apatsev-nexus-playbook'
    httpd_setup_enable: false
    nexus_privileges:
      - name: all-repos-read
        description: 'Læs- og browse-adgang til alle repos'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Udrulninger til virksomhedens projekt'
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # kortlægning til LDAP-gruppen
        name: developers
        description: Alle udviklere
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # bruges som nøgle til opdatering
        first_name: Jenkins
        last_name: CI
        email: support@company.com
        password: "s3cr3t"
        roles:
          - Developpers # rolle-ID her
    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. Skift nexus_config_yum til true for at oprette 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. Skift nexus_config_npm til true for at oprette 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. Skift nexus_config_docker til true for at oprette 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. Skift nexus_config_bower til true for at oprette 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. Skift nexus_config_pypi til true for at oprette 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. Skift nexus_config_rubygems til true for at oprette 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. Skift nexus_config_gitlfs til true for at oprette gitlfs-repository
    nexus_config_gitlfs: true
    nexus_repos_gitlfs_hosted:
      - name: gitlfs-hosted

  roles:
    - { role: geerlingguy.java }
    # Debian/Ubuntu kun
    # - { 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 kun
    - { 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 at bruge infrastrukturen som kode tilgang

Installation og konfiguration af Nexus Sonatype ved at bruge infrastrukturen som kode tilgang

Roller variable

Rollevariabler

Standardværdier for variabler (se default/main.yml):

Generelle variable

    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 ændrer versionen til en nyere, vil rollen forsøge at opdatere din installerede Nexus.

Hvis du bruger en ældre version af Nexus end den seneste, skal du sørge for ikke at bruge funktioner, der ikke er tilgængelige i den installerede version (f.eks. er hosting af yum-repositorier tilgængeligt for nexus version 3.8.0 og derover, git lfs repo for nexus 3.3.0 og derover osv.)

nexus timezone er navnet på Java-tidzoner, som kan være nyttigt i forbindelse med de nedenstående cron-udtryk til nexus_scheduled tasks.

Nexus-port og kontekststi

    nexus_default_port: 8081
    nexus_default_context_path: ' / '

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

Bruger og gruppe for Nexus OS

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Brugeren og gruppen, der bruges til at eje Nexus-filer og køre tjenesten, vil blive oprettet af rollen, hvis den ikke eksisterer.

    nexus_os_user_home_dir: '/home/nexus'

Tillad at ændre standardhjemmebiblioteket for brugeren nexus

Nexus-instanskataloger

    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 al konfiguration, repositorier og uploadede artefakter. Tilpassede blobstore-stier nexus_data_dir kan konfigureres, se nedenfor nexus_blobstores.
  • nexus_tmp_dir indeholder alle midlertidige filer. Standardstien for RedHat blev flyttet fra /tmp for at undgå potentielle problemer med automatiserede rydningsprocedurer. Se #168.

Konfiguration af hukommelsesforbrug til Nexus JVM

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

Dette er standardindstillingerne for Nexus. Vær venlig at ændre disse værdier hvis du ikke har læst afsnittet om systemkravets hukommelse til nexus og ikke forstår, hvad de gør.

Som en anden advarsel, her er et uddrag fra det ovennævnte dokument:

Det anbefales ikke at øge JVM heap hukommelsen over de anbefalede værdier i et forsøg på at forbedre ydeevnen. Dette kan faktisk have den modsatte effekt og føre til unødvendig belastning af operativsystemet.

Administratoradgangskode

    nexus_admin_password: 'changeme'

Adgangskoden for 'admin'-kontoen til konfiguration. Dette fungerer kun ved den første installation som standard. Se venligst [Ændre administratoradgangskoden efter første installation](# change-admin-password-after-first-install), hvis du ønsker at ændre den senere med rollen.

Det anbefales på det kraftigste ikke at gemme din adgangskode som klartekst i playbook, men at bruge [ansible-vault kryptering] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (enten indbygget eller i en separat fil, som for eksempel kan indlæses ved hjælp af include_vars)

Anonym adgang er som standard aktiveret

    nexus_anonymous_access: false

Standard anonym adgang er deaktiveret. Læs mere om anonym adgang.

Offentligt vært navn

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Det fulde domænenavn og skema (https eller http), som 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 variable kontrollerer, hvordan rollen opretter forbindelse til Nexus API for levering.
Kun til avancerede brugere. Du ønsker sandsynligvis ikke at ændre disse standardindstillinger

Konfiguration af den omvendte proxy

    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

Installer Omvendt SSL-proxy.
Dette kræver installation af httpd. Bemærk: når httpd_setup_enable er indstillet tiltrue, forbinder nexus til 127.0.0.1:8081, hvilket betyder ikke at være direkte tilgængelig via HTTP-port 8081 med ekstern IP-adresse.

Det brugte standard værtsnavn er nexus_public_hostname. Hvis du har brug for forskellige navne af en eller anden grund, kan du indstille httpd_server_name til en anden værdi.

Med httpd_copy_ssl_files: true (som standard) de nævnte certifikater skal eksistere i din playbook-mappe og vil blive kopieret til serveren og konfigureret i apache.

Hvis du ønsker at bruge eksisterende certificater på serveren, skal du indstille httpd_copy_ssl_files: false og give 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 valgfrit og bør efterlades uindstillet, medmindre du ønsker at konfigurere kædefilen

    httpd_default_admin_email: "admin@example.com"

Indstil standardadministratorens e-mailadresse

LDAP-konfiguration

LDAP-forbindelser og standard sikkerhedsområde er 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' # brugt som nøgle til at opdatere ldap-konfigurationen
        ldap_protocol: 'ldaps' # ldap eller ldaps
        ldap_hostname: 'ldap.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false # Om der skal bruges certifikater i Nexus trust store
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_auth: 'none' # eller simpel
        ldap_auth_username: 'username' # hvis auth = simpel
        ldap_auth_password: 'password' # hvis auth = simpel
        ldap_user_base_dn: 'ou=users'
        ldap_user_filter: '(cn=*)' # (valgfrit)
        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 autentificering (anonym binding), dette er også en "minimum" 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 autentificering (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 }}" # det er bedre at opbevare adgangskoder i en 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 autentificering (ved hjælp af DSA-konto) + grupper kortlagt som roller:

    nexus_ldap_realm: true
    ldap_connections
      - ldap_name: 'LDAP konfiguration med 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 }}" # det er bedst at opbevare adgangskoder i en 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 autentificering (med DSA-konto) + grupper, der dynamisk matches som roller:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP konfiguration med 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 }}" # det er bedst at opbevare adgangskoder i en 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'

Tilladelser

    nexus_privileges:
      - name: all-repos-read # bruges som nøgle til opdatering af en privilegium
        # type: 
        description: 'Læs & Browse adgang til alle repos'
        repository: '*'
        actions: # kan være tilføj, browse, opret, slet, rediger, læse eller * (alle)
          - read
          - browse
        # mønster: mønster
        # domæne: domæne
        # script_name: navn

Liste tilladelser til konfiguration. Se dokumentationen og GUI'en for at se, hvilke variabler der skal være indstillet afhængigt af typen af privilegium.

Disse elementer kombineres med følgende standardværdier:

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

Roller (indeni Nexus forstås)

    nexus_roles:
      - id: Developpers # kan matche et LDAP gruppe-id, bruges også som nøgle til at opdatere en rolle
        name: developers
        description: Alle udviklere
        privileges:
          - nx-search-read
          - all-repos-read
        roles: [] # henvisninger til andre rollenavne

Liste roller til konfiguration.

Brugere

    nexus_local_users: []
      # - username: jenkins # bruges som nøgle til opdatering
      #   state: present # standardværdi hvis udeladt, brug 'absent' for at fjerne bruger
      #   first_name: Jenkins
      #   last_name: CI
      #   email: support@company.com
      #   password: "s3cr3t"
      #   roles:
      #     - developers # rolle-ID

Liste over lokale (ikke-LDAP) brugere/konti at oprette i nexus.

Liste over lokale (ikke LDAP) brugere/konti til oprettelse i Nexus.

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

Mapping af LDAP brugere/roller. Status fraværende fjerner roller fra en eksisterende bruger, hvis vedkommende allerede findes.
LDAP brugere bliver ikke slettet. At forsøge at tildele en rolle til en ikke-eksisterende bruger vil resultere i en fejl.

Indholdsvælgere

  nexus_content_selectors:
  - name: docker-login
    description: Vælger til docker login privilegium
    search_expression: format=="docker" and path=~"/v2/"

For yderligere information om indholdsvælgeren, se Dokumentationen.

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

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

Blobstores og repositories

    nexus_delete_default_repos: false

Slet repositorierne fra den oprindelige standardkonfiguration for Nexus. Dette trin udføres kun ved første installation (når nexus_data_dir er blevet registreret som tom).

Sletning af repositories fra den oprindelige standardkonfiguration for Nexus. Dette trin udføres kun ved første installation (når nexus_data_dir er tom).

    nexus_delete_default_blobstore: false

Slet standard blobstore fra den oprindelige standardkonfiguration for Nexus. 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ørste installation (når nexus_data_dir er blevet registreret som tom).

Sletning af blobstore (binære artefakter) er som standard deaktiveret i den oprindelige konfiguration. For at slette blobstore (binære artefakter) skal du deaktivere nexus_delete_default_repos: true. Dette trin udføres kun ved første installation (når nexus_data_dir er tom).

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

Blobstores der skal oprettes. En blobstore sti og et repository blobstore kan ikke opdateres efter den indledende oprettelse (enhver opdatering her vil blive ignoreret ved genfornyelse).

Konfiguration af blobstore på S3 tilbydes som en bekvemmelighed og er ikke en del af de automatiserede tests, vi kører på travis. Bemærk, at det kun anbefales at gemme på S3 for instanser, der er implementeret på AWS.

Oprettelse Blobstores. Stien til blobstore og lagringssteder kan ikke opdateres efter den indledende oprettelse (enhver opdatering her vil blive ignoreret ved geninstallationen).

Konfiguration af BLOB-objekter på S3 tilbydes for bekvemmelighed. Vær opmærksom på, at det kun anbefales at gemme på S3 for instanser implementeret på AWS.

    nexus_repos_maven_proxy:
      - name: central
        remote_url: 'https://repo1.maven.org/maven2/'
        layout_policy: permissive
      - name: jboss
        remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/'
    # eksempel med login/adgangskode :
    # - 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

Ovenstående er et eksempel på konfiguration proxy-server Maven.

    nexus_repos_maven_hosted:
      - name: private-release
        version_policy: release
        write_policy: allow_once  # en af "allow", "allow_once" eller "deny"

Maven hostede arkiver konfiguration. Indstillinger for negativ cache er valgfri og vil som standard bruge ovenstående værdier, hvis de udelades.

Konfiguration hostede (hosted) arkiver Maven. Indstillingen for negativ cache (-1) er valgfri og vil som standard anvende ovenstående værdier, hvis den ikke angives.

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

Konfiguration grupper Maven.

Alle tre typer arkiver kombineres med følgende standardværdier:

    _nexus_repos_maven_defaults:
      blob_store: default # Bemærk: kan ikke opdateres, når arkivet er oprettet
      strict_content_validation: true
      version_policy: release # release, snapshot eller mixed
      layout_policy: strict # strict eller permissive
      write_policy: allow_once # en af "allow", "allow_once" eller "deny"
      maximum_component_age: -1  # Nexus gui standard. Kun for proxies
      maximum_metadata_age: 1440  # Nexus gui standard. Kun for proxies
      negative_cache_enabled: true # Nexus gui standard. Kun for proxies
      negative_cache_ttl: 1440 # Nexus gui standard. Kun for proxies

Typer af Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS og yum arkiver:
se defaults/main.yml for disse indstillinger:

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

      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, at du måske skal aktivere bestemte sikkerhedsområder, hvis du ønsker at bruge andre arkivtyper 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  # påkrævet for anonym adgang til docker

Remote User Realm kan også aktiveres ved hjælp af

nexus_rut_auth_realm: true

og headeren kan konfigureres ved at angive

nexus_rut_auth_header: "CUSTOM_HEADER"

Planlagte opgaver

    nexus_scheduled_tasks: []
    #  #  Eksempel på en opgave til at komprimere blobstore :
    #  - navn: komprimer-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: alerts@example.org  # valgfri
    #    taskProperties:
    #      blobstoreName: {{ nexus_blob_names.docker.blob }} # alle opgaveattributter gemmes som strenge af nexus internt
    #  #  Eksempel på en opgave til at slette maven snapshots
    #  - navn: Slet-maven-snapshots
    #    cron: '0 50 23 * * ?'
    #    typeId: repository.maven.remove-snapshots
    #    task_alert_email: alerts@example.org  # valgfri
    #    taskProperties:
    #      repositoryName: "*"  # * for alle repos. Skift til et repositorienavn, hvis du kun vil have et specifikt
    #      minimumRetained: "2"
    #      snapshotRetentionDays: "2"
    #      gracePeriodInDays: "2"
    #    booleanTaskProperties:
    #      removeIfReleased: true
    #  #  Eksempel på en opgave til at slette ubrugte docker manifest og billeder
    #  - navn: Slet ubrugte docker manifests og billeder
    #    cron: '0 55 23 * * ?'
    #    typeId: "repository.docker.gc"
    #    task_alert_email: alerts@example.org  # valgfri
    #    taskProperties:
    #      repositoryName: "*"  # * for alle repos. Skift til et repositorienavn, hvis du kun vil have et specifikt
    #  #  Eksempel på en opgave til at slette ufuldstændige docker uploads
    #  - navn: Slet ufuldstændige docker uploads
    #    cron: '0 0 0 * * ?'
    #    typeId: "repository.docker.upload-purge"
    #    task_alert_email: alerts@example.org  # valgfri
    #    taskProperties:
    #      age: "24"

Planlagte opgaver til konfiguration. typeId og specifikke for opgaventaskProperties/booleanTaskProperties kan gættes som følgende:

  • fra Java-typehierarkiet org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • ved at kontrollere HTML-formularen for oprettelse af opgaver i din browser
  • ved at se AJAX-anmodninger i browseren når du manuelt indstiller opgaven.

Opgaveegenskaber skal erklæres i det rigtige yaml-blok afhængigt af deres type:

  • taskProperties for alle strengeegenskaber (dvs. repo-navne, blobstore-navne, tidsperioder …).
  • booleanTaskProperties for alle boolske egenskaber (dvs. primært afkrydsningsfelter i brugergrænsefladen for oprettelse af nexus-opgaver).

Sikkerhedskopier

      nexus_backup_configure: false
      nexus_backup_cron: '0 0 21 * * ?'  # Se cron-udtryksdefinition i nexus opret opgave 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  # Behold 4 backup rotation som standard (nu + de sidste 3)

Sikkerhedskopiering vil ikke blive konfigureret, før du skifter nexus_backup_configure i true.
I dette tilfælde vil den planlagte scriptopgave blive konfigureret til at køre i Nexus
med det interval, der er angivet i nexus_backup_cron (standard 21:00 hver dag).
Se [Groovy-skabelon for denne opgave](templates / backup.groovy.j2) for detaljer.
Denne planlagte opgave er uafhængig af andre nexus_scheduled_tasks, som du
erklærer i dit playbook.

Hvis du vil rotere/slette sikkerhedskopier, skal du indstille nexus_backup_rotate: true og og konfigurer antallet af sikkerhedskopier, du gerne vil gemme med nexus_backup_keep_rotations (som standard 4).

Når du bruger rotation, hvis du ønsker at spare yderligere diskplads under sikkerhedskopieringsprocessen,
kan du indstille nexus_backup_rotate_first: true. Dette vil indstille forudgående rotation/ sletning før sikkerhedskopien. Som standard sker rotation efter oprettelsen af sikkerhedskopien. Vær opmærksom på, at i dette tilfælde vil ældre sikkerhedskopier
blive slettet, før den aktuelle sikkerhedskopi er lavet.

Gendannelsesprocedure

Kør playbook med parameteren -e nexus_restore_point=
(for eksempel 2017-12-17-21-00-00 for 17. december 2017 kl. 21:00

Sletning af nexus

Advarsel: Dette vil fuldstændigt slette de nuværende data. Sørg for at lave en sikkerhedskopi på forhånd, hvis det er nødvendigt.

Brug variablen nexus_purge, hvis du har brug for at starte forfra og geninstallere nexus-instance med sletning af alle data.

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

Ændre administratoradgangskoden efter første installation

    nexus_default_admin_password: 'admin123'

Dette skal ikke ændres i din playbook. Denne variabel udfyldes med standardadministratoradgangskoden for Nexus ved første installation og sikrer, at vi kan ændre administratoradgangskoden til nexus_admin_password.

Hvis du ønsker at ændre administratoradgangskoden efter første installation, kan du midlertidigt ændre den til den gamle adgangskode fra kommandolinjen. Efter ændringen 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 om Nexus Sonatype: https://t.me/ru_nexus_sonatype

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, please.

Hvilke artefaktlagre bruger du?

  • Sonatype Nexus gratis

  • Sonatype Nexus betalt

  • Artifactory gratis

  • Artifactory betalt

  • Harbor

  • Pulp

9 brugere har stemt. 3 brugere har undladt at stemme.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster