Nexus Sonatype seadistamine ja konfigureerimine, kasutades infrastruktuuri kui koodi lähenemist

Sonatype Nexus on integreeritud platvorm, mille abil arendajad saavad Java (Maven), Docker'i piltide, Python'i, Ruby, NPM, Bower, RPM-pakettide, gitlfs, Apt, Go, Nuget sõltuvusi vahetada, salvestada ja hallata ning oma tarkvara levitada.

Miks on Sonatype Nexus vajalik?

  • Privaatsete artefaktide salvestamiseks;
  • Interneti kaudu allalaaditavate artefaktide vahemäluks;

Sonatype Nexus'i põhiversioonis toetatud artefaktid:

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

Kogukonna toetatud artefaktid:

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

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

Nõuded

  • Lugege internetist ansible'i kasutamise kohta.
  • Installige ansible pip install ansible tööjaamas, kus playbook'i käivitatakse.
  • Installige geerlingguy.java tööjaamas, kus playbook'i käivitatakse.
  • Installige geerlingguy.apache tööjaamas, kus playbook'i käivitatakse.
  • See roll on testitud CentOS 7, Ubuntu Xenial (16.04) ja Bionic (18.04), Debian Jessie ja Stretch'i peal.
  • jmespath raamatukogud peavad olema installitud tööjaamas, kus playbook'i käivitatakse. Installimiseks käivitage sudo pip install -r requirements.txt
  • Salvestage playbook'i faili (näide all) nexus.yml.
  • Käivitage nexus'i installimine ansible-playbook -i host nexus.yml

Näidis ansible-playbook'i nexus'e installimiseks ilma LDAP'ta, sealhulgas Maven (java), Docker, Python, Ruby, NPM, Bower, RPM ja gitlfs hoidlad.

---
- 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: 'Lugemis- ja sirvimisõigus kõigile hoidlatele'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Käivitus ettevõtte projekti'
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # seondub LDAP grupiga
        name: developers
        description: Kõik arendajad
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # kasutatav võtmena värskendamiseks
        first_name: Jenkins
        last_name: CI
        email: support@company.com
        password: "s3cr3t"
        roles:
          - Developpers # rolli ID siin
    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. Muuda nexus_config_yum tõeliseks, et luua yum hoidla
    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. Muuda nexus_config_npm tõeliseks, et luua npm hoidla
    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. Muuda nexus_config_docker tõeliseks, et luua docker hoidla
    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. Muuda nexus_config_bower tõeliseks, et luua bower hoidla
    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. Muuda nexus_config_pypi tõeliseks, et luua pypi hoidla
    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. Muuda nexus_config_rubygems tõeliseks, et luua rubygems hoidla
    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. Muuda nexus_config_gitlfs tõeliseks, et luua gitlfs hoidla
    nexus_config_gitlfs: true
    nexus_repos_gitlfs_hosted:
      - name: gitlfs-hosted

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

Kuvapildid:

Nexus Sonatype seadistamine ja konfigureerimine, kasutades infrastruktuuri kui koodi lähenemist

Nexus Sonatype seadistamine ja konfigureerimine, kasutades infrastruktuuri kui koodi lähenemist

Muutujad rolli

Rolli muutujad

Vaikimisi väärtustega muutujaid (vt. default/main.yml):

Üldised muutujad

    nexus_version: ''
    nexus_timezone: 'UTC'

Vaikimisi seadistab roll viimasena saadaval oleva Nexus versiooni. Versiooni saate parandada, muuta muutuja nexus_version. Saate tutvuda saadaval olevate versioonidega https://www.sonatype.com/download-oss-sonatype.

Kui muudate versiooni uuemaks, proovib roll teie paigaldatud Nexus't uuendada.

Kui kasutate vanemat Nexus versiooni kui viimane, peate veenduma, et ei kasuta funktsioone, mis pole paigaldatud väljaandes saadaval (näiteks yum repo majutamine on saadaval Nexus versioonile, mis on suurem kui 3.8.0, git lfs repo Nexus versioonile, mis on suurem kui 3.3.0 jne.)

nexus timezone on Java ajatsooni nimi, mis võib olla kasulik koos allpool toodud cron väljenditega nexus_scheduled ülesannete jaoks.

Nexuse port ja konteksti tee

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Java ühendusprotsessi port ja konteksti tee. nexus_default_context_path peab sisaldama kaldkriipsu, kui see on määratud, näiteks: nexus_default_context_path: '/nexus/'.

Nexuse OS kasutaja ja grupp

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Kasutaja ja grupp, mida kasutatakse Nexus-failide omamiseks ja teenuse käivitamiseks, luuakse rolli poolt, kui seda pole.

    nexus_os_user_home_dir: '/home/nexus'

Lubage muuta nexus'i kasutaja vaikimisi kodukausta.

Nexus'e eksemplaride kataloogid.

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

Nexus'e kataloogid.

  • nexus_installation_dir kcontains the installed executables.
  • nexus_data_dir kcontains all configuration, repositories, and uploaded artifacts. Custom blobstore paths nexus_data_dir võivad olla konfigureeritud, vaadake allpool. nexus_blobstores.
  • nexus_tmp_dir kcontains all temporary files. Redhati vaikimisi tee on ümber paigutatud, et vältida /tmp võimalikke probleeme automaatsete puhastamisprotseduuridega. Vaadake #168.

Nexus JVM mälu seadistamine.

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

Need on Nexus'e vaikeseadistused. Palun ärge muutke neid väärtusi. Kui te ei ole lugenud Nexus'e süsteeminõuete mälu jaotust ja ei mõista, mida need teevad.

Teise hoiatusega on siin väljavõte eespool nimetatud dokumendist:

JVM heap mälu suurendamine rohkem kui soovitatud väärtused ei ole soovitatav, kuna see võib tõeliselt põhjustada vastupidist efekti, koormates operatsioonisüsteemi üle.

Administraatori parool

    nexus_admin_password: 'changeme'

Seadistamiseks 'admin' konto parool. See töötab ainult vaikimisi esmakordsel installimisel. Palun vaadake [Muuda administraatori parooli pärast esmakordset installimist](# change-admin-password-after-first-install), kui soovite seda hiljem muuta.

Ärge salvestage oma parooli avatud tekstina playbook'is, vaid kasutage [ansible-vault krüpteerimist] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (kas integreeritud või eraldi fail, mis on alla laaditud näiteks include_vars abil)

Vaikimisi anonüümne juurdepääs

    nexus_anonymous_access: false

Vaikimisi anonüümne juurdepääs on keelatud. Lisainfot anonüümse juurdepääsu kohta anonüümne juurdepääs.

Avalik hostinimi

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Täielik domeeninimi ja skeem (https või http), mille kaudu Nexus instants on klientide poolt ligipääsetav.

API juurdepääs sellele rollile

    nexus_api_hostname: localhost
    nexus_api_scheme: http
    nexus_api_validate_certs: "{{ nexus_api_scheme == 'https' }}"
    nexus_api_context_path: "{{ nexus_default_context_path }}"
    nexus_api_port: "{{ nexus_default_port }}"

Need jäävad mõisted kontrollivad, kuidas roll ühendatakse Nexus API-ga teenuse osutamiseks.
Ainult edasijõudnud kasutajatele. Tõenäoliselt ei soovi te neid vaikeseadeid muuta.

Tagasiühenduse konfigureerimine

    httpd_setup_enable: false
    httpd_server_name: "{{ nexus_public_hostname }}"
    httpd_default_admin_email: "admin@example.com"
    httpd_ssl_certificate_file: 'files/nexus.vm.crt'
    httpd_ssl_certificate_key_file: 'files/nexus.vm.key'
    # httpd_ssl_certificate_chain_file: "{{ httpd_ssl_certificate_file }}"
    httpd_copy_ssl_files: true

Installige SSL tagas proxy server.
Selleks on vajalik httpd installimine. Märkus: kui httpd_setup_enable on määratudtrue, nexus ühendab 127.0.0.1:8081, seega ei ole otseselt ligipääsetav HTTP-pordilt 8081 välisest IP-aadressist.

Vaikimisi kasutatav hostinimi on nexus_public_hostname. Kui teil on mingil põhjusel vaja erinevaid nimesid, saate määrata httpd_server_name teise väärtusega.

C httpd_copy_ssl_files: true (vaikimisi) ülaltoodud sertifikaadid peaksid olema olemas teie playbook-kaustas ja need kopeeritakse serverisse ning seadistatakse apache's.

Kui soovite olemasolevaid sertifikaate serveris kasutada, seadistage httpd_copy_ssl_files: false ja edastage järgmised muutujad:

    # These specifies to the vhost where to find on the remote server file
    # system the certificate files.
    httpd_ssl_cert_file_location: "/etc/pki/tls/certs/wildcard.vm.crt"
    httpd_ssl_cert_key_location: "/etc/pki/tls/private/wildcard.vm.key"
    # httpd_ssl_cert_chain_file_location: "{{ httpd_ssl_cert_file_location }}"

httpd_ssl_cert_chain_file_location on valikuline ja tuleks jätta seadistamata, kui te ei soovi ketifaili seadistada

    httpd_default_admin_email: "admin@example.com"

Seadistage vaikimisi administraatori e-posti aadress

LDAP konfiguratsioon

LDAP ühendused ja vaikimisi turvaala on välja lülitatud

    nexus_ldap_realm: false
    ldap_connections: []

LDAP ühendused, iga element on järgmine:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'Minu Ettevõtte LDAP' # kasutatakse võtmena ldap konfigureerimise uuendamiseks
        ldap_protocol: 'ldaps' # ldap või ldaps
        ldap_hostname: 'ldap.minuettevõtte.com'
        ldap_port: 636
        ldap_use_trust_store: false # Kas kasutada sertifikaate nexus'e usalduspoes
        ldap_search_base: 'dc=minuettevõtte,dc=net'
        ldap_auth: 'none' # või simple
        ldap_auth_username: 'kasutajanimi' # kui auth = simple
        ldap_auth_password: 'parool' # kui auth = simple
        ldap_user_base_dn: 'ou=kasutajad'
        ldap_user_filter: '(cn=*)' # (valikuline)
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_subtree: false
        ldap_map_groups_as_roles: false
        ldap_group_base_dn: 'ou=rühmad'
        ldap_group_object_class: 'posixGroup'
        ldap_group_id_attribute: 'cn'
        ldap_group_member_attribute: 'memberUid'
        ldap_group_member_format: '${kasutajanimi}'
        ldap_group_subtree: false

LDAP konfigureerimise näide anonüümseks autentimiseks (anonüümne seondumine), see on samuti "minimaalne" konfigureerimine:

    nexus_ldap_realm: true
    ldap_connection:
      - ldap_name: 'Lihtsaim LDAP konfigureerimine'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.minuettevõtte.com'
        ldap_search_base: 'dc=minuettevõtte,dc=net'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_object_class: 'inetOrgPerson'

LDAP konfigureerimise näide lihtsa autentimise jaoks (kasutades DSA kontot):

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP konfiguratsioon DSA-ga'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # parem hoida paroole ansible vault'is
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_subtree: false

LDAP konfigureerimise näide lihtsaks autentimiseks (kasutades DSA kontot) + grupid, mis on seostatavad rollidega:

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

LDAP konfiguratsiooni näide lihtsaks autentimiseks (DSA konto kasutamisega) + rühmad, mida dünaamiliselt vastavusse seostatakse kui rollid:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP konfiguratsioon DSA-ga'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # parem hoida paroole ansible vaultis
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_map_groups_as_roles: true
        ldap_map_groups_as_roles_type: 'dynamic'
        ldap_user_memberof_attribute: 'memberOf'

Privileegid

    nexus_privileges:
      - name: all-repos-read # kasutatakse privileegi uuendamiseks võtmena
        # type: 
        description: 'Lugemise & Sirvimise juurdepääs kõigile hoidlatele'
        repository: '*'
        actions: # võivad olla add, browse, create, delete, edit, read või * (kõik)
          - read
          - browse
        # pattern: mustre
        # domain: domeen
        # script_name: nimi

Loend privileegidest konfigureerimiseks. Vaadake dokumentatsiooni ja graafikat, et kontrollida, millised muutujad peavad olema paigutatud vastavalt privileegi tüübile.

Needite elemendid ühinevad järgmiste vaikeväärtustega:

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

Rollid (Nexus'i sees on mõeldud)

    nexus_roles:
      - id: Developpers # saab siduda LDAP grupi ID-ga, используется также ключом role'i uuendamiseks
        name: developers
        description: Kõik arendajad
        privileges:
          - nx-search-read
          - all-repos-read
        roles: [] # viidatud teiste rollide nimedele

Loend rolle seadistamiseks.

Kasutajad

    nexus_local_users: []
      # - username: jenkins # используется в качестве ключа для обновления
      #   state: present # vaikeväärtus, kui on jäetud vahele, kasutage 'absent', kui soovite kasutajat eemaldada
      #   first_name: Jenkins
      #   last_name: CI
      #   email: support@company.com
      #   password: "s3cr3t"
      #   roles:
      #     - developers # rolli ID

Lokaalsed (mitte-LDAP) kasutajad/kontod, mis tuleb Nexus'is luua.

Lokaalsete (mitte-LDAP) kasutajate/kontode loend Nexus'is loomiseks.

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

Ldap kasutajate/rollide kaardistamine. Oleku absent eemaldab rollid olemasolevalt kasutajalt, kui ta juba eksisteerib.
Ldap kasutajaid ei eemaldata. Katse määrata roll mitteolemasolevale kasutajale toob kaasa vea.

Sisu selektorid

  nexus_content_selectors:
  - name: docker-login
    description: Docker'i sisselogimise õiguse selektor
    search_expression: format=="docker" and path=~"/v2/"

Lisainfoks sisu selektori kohta vaadake. Dokumentatsioon.

Sisuvalija kasutamiseks lisage uus privileeg koos tüüp: repository-content-selector ja vastavacontentSelector

- nimi: docker-login-privilege
  tüüp: repository-content-selector
  contentSelector: docker-login
  kirjeldus: 'Sisse logimine Docker registrisse'
  repository: '*'
  tegevused:
  - lugemine
  - sirvimine

Blobstores ja hoidlad

    nexus_delete_default_repos: false

Kustuta hoidlad Nexus installi esialgsest konfiguratsioonist. See samm täidetakse ainult esmakordsel installimisel (kui nexus_data_dir on tuvastatud tühjana).

Hoidlate eemaldamine Nexus vaikimisi konfiguratsioonist. See samm toimub ainult esmakordsel installimisel (kui nexus_data_dir on tühi).

    nexus_delete_default_blobstore: false

Kustuta vaike blobipood Nexus installi esialgsest konfiguratsioonist. Seda saab teha ainult juhul kui nexus_delete_default_repos: true ja kõik konfigureeritud hoidlad (vt allpool) omavad selget blob_store: custom. See samm täidetakse ainult esmakordsel installimisel (kui nexus_data_dir on tuvastatud tühjana).

Blobide (binaarsete artefaktide) hoidla eemaldamine on vaikimisi välja lülitatud esialgsest konfiguratsioonist. Blobide (binaarsete artefaktide) hoidla eemaldamiseks lülitage nexus_delete_default_repos: truevälja. nexus_data_dir on tühi).

    . See samm toimub ainult esmakordsel installimisel (kui

Blobstores looma. Blobstore'i rada ja reposiit blobstore'i ei saa pärast esialgset loomist uuendada (kõik siin tehtud uuendused ignoreeritakse uue seadistamise korral).

Blobstore'i konfigureerimine S3-l on mugavuse huvides ja see ei kuulu automaatsete testide hulka, mida me Travisel teeme. Palun pange tähele, et S3-l hoidmine on soovitatav ainult AWS-is juurutatud instantside jaoks.

Loomine Blobstores. Blobstore'i rada ja reposiit blobstore'i ei saa pärast esialgset loomist uuendada (kõik siin tehtud uuendused ignoreeritakse uue seadistamise korral).

BLOB-objektide hoidmise seadistamine S3-l on mugavuse tõttu. Pange tähele, et S3-l hoidmine on soovitatav ainult AWS-is juurutatud instantside jaoks.

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

Ülaltoodud on konfiguratsiooni näide proksi Maven.

    nexus_repos_maven_hosted:
      - name: private-release
        version_policy: release
        write_policy: allow_once  # üks "allow", "allow_once" või "deny"

Maven privaatsete hoidlate konfiguratsioon. Negatiivse vahemälu konfiguratsioon on valikuline ning kasutab vaikimisi ülaltoodud väärtusi, kui see on jäetud määramata.

Konfiguratsioon privaatsete (hosted) hoidlate Maven. Negatiivse vahemälu (-1) konfiguratsioon on valikuline ning kasutab vaikimisi ülaltoodud väärtusi, kui pole märgitud.

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

Konfiguratsioon grupid Maven.

Kõik kolm hoidlatüüpi ühendatakse järgmiste vaikimisi väärtustega:

    _nexus_repos_maven_defaults:
      blob_store: default # Märkus: ei saa uuendada, kui hoidla on loodud
      strict_content_validation: true
      version_policy: release # release, snapshot või mixed
      layout_policy: strict # strict või permissive
      write_policy: allow_once # üks "allow", "allow_once" või "deny"
      maximum_component_age: -1  # Nexus gui vaikimisi. Ainult vahemällu salvestamiseks
      maximum_metadata_age: 1440  # Nexus gui vaikimisi. Ainult vahemällu salvestamiseks
      negative_cache_enabled: true # Nexus gui vaikimisi. Ainult vahemällu salvestamiseks
      negative_cache_ttl: 1440 # Nexus gui vaikimisi. Ainult vahemällu salvestamiseks

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS ja yum hoidlatüübid:
vaata defaults/main.yml selleks, et need valikud:

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS ja yum hoidlad on vaikimisi keelatud:
Vaata defaults/main.yml neid valikuid:

      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

Pange tähele, et erinevate hoidlatüüpide kasutamiseks, välja arvatud maven, peate võib-olla aktiveerima teatud turvapiirkonnad. Vaikimisi on see false

nexus_nuget_api_key_realm: false
nexus_npm_bearer_token_realm: false
nexus_docker_bearer_token_realm: false  # vajalik docker'i anonüümseks kasutamiseks

Kaukasutaja valdkonda saab samuti sisse lülitada

nexus_rut_auth_realm: true

ning pealkiri saab olla seadistatud, määrates

nexus_rut_auth_header: "CUSTOM_HEADER"

Kavandatud ülesanded

    nexus_scheduled_tasks: []
    #  #  Näide ülesandest blobstore'i tihendamiseks:
    #  - name: compact-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      blobstoreName: {{ nexus_blob_names.docker.blob }} # kõik ülesande atribuudi salvestatakse nexus sees stringidena
    #  #  Näide ülesandest maven snapshotide puhastamiseks
    #  - name: Purge-maven-snapshots
    #    cron: '0 50 23 * * ?'
    #    typeId: repository.maven.remove-snapshots
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      repositoryName: "*"  # * kõikidele repos. Muuda konkreetseks repo nimeks, kui soovid ainult üht
    #      minimumRetained: "2"
    #      snapshotRetentionDays: "2"
    #      gracePeriodInDays: "2"
    #    booleanTaskProperties:
    #      removeIfReleased: true
    #  #  Näide ülesandest kasutamata docker manifestide ja piltide puhastamiseks
    #  - name: Purge unused docker manifests and images
    #    cron: '0 55 23 * * ?'
    #    typeId: "repository.docker.gc"
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      repositoryName: "*"  # * kõikidele repos. Muuda konkreetseks repo nimeks, kui soovid ainult üht
    #  #  Näide ülesandest lõpetamata docker ülesannete puhastamiseks
    #  - name: Purge incomplete docker uploads
    #    cron: '0 0 0 * * ?'
    #    typeId: "repository.docker.upload-purge"
    #    task_alert_email: alerts@example.org  # valikuline
    #    taskProperties:
    #      age: "24"

Kavandatud ülesanded seadistamiseks. typeId ja ülesandele spetsiifilisedtaskProperties/booleanTaskProperties võib olla üks järgmistest:

  • Java tüüpide hierarhiast org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • kontrollides HTML-i ülesande loomise vormi oma brauseris
  • AJAX-päringute vaatamisest brauseris käsitsi ülesande seadistamisel.

Ülesande omadused peavad olema õigesti välja kuulutatud yaml-blokis vastavalt nende tüübile.:

  • taskProperties kõikide stringi omaduste jaoks (nt hoidlate nimed, ajaperioodid jms).
  • booleanTaskProperties kõikide loogiliste omaduste jaoks (nt peamiselt ruudud graafilises liideses nexuse loomise ülesande puhul).

Varukoopiad

      nexus_backup_configure: false
      nexus_backup_cron: '0 0 21 * * ?'  # Vaata cron'i väljendite määratlemist nexuse loomise ülesande grafit
      nexus_backup_dir: '/var/nexus-backup'
      nexus_restore_log: '{{ nexus_backup_dir }}/nexus-restore.log'
      nexus_backup_rotate: false
      nexus_backup_rotate_first: false
      nexus_backup_keep_rotations: 4  # Hoia 4 varukoopiat vaikimisi (praegune + viimased 3)

Varukoopiaid ei seadistata, kuni te ei lülita sisse nexus_backup_configure ühes true.
Sel juhul seadistatakse ajastatud skriptiülesanne Nexus'es käivitamiseks
mõne aja möödudes, nagu on näidatud nexus_backup_cron (vaikimisi iga päev kell 21:00).
Vaata [Groovy šablooni selle ülesande jaoks](templates / backup.groovy.j2) lisainformatsiooni saamiseks.
See ajastatud ülesanne ei sõltu teistest nexus_scheduled_tasks, mille te
oma playbook'is välja kuulutate.

Kui soovite varukoopiaid rotatsiooni panna/likvideerida, seadke nexus_backup_rotate: true ja seadistage varukoopiate arv, mida soovite säilitada, kasutades nexus_backup_keep_rotations (vaikimisi 4).

Rottatsiooni kasutamisel, kui soovite säästa täiendavat kettaruumi varukoopia tegemise ajal,
saate seada nexus_backup_rotate_first: true. See seab esialgsed rullimis-/kustutamisprotsessid enne varukoopia tegemist. Vaikimisi toimub rullimine pärast varukoopia loomist. Pange tähele, et vanad varukoopiad
kustutatakse enne, kui uus varukoopia on tehtud.

Taastamisprotseduur

Käivitage playbook parameetriga -e nexus_restore_point=
(näiteks 2017-12-17-21-00-00 17. detsembril 2017 kell 21:00)

Nexus delet

Hoiatus: see kustutab täielikult käesolevad andmed. Veenduge, et varukoopia oleks enne vajalik, kui see vajalik on.

Kasutage muutujaid nexus_purge, kui soovite alustada nullist ja uuesti installida nexus, kustutades kõik andmed.

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

Muutke administraatori parool pärast esmast installimist

    nexus_default_admin_password: 'admin123'

Seda ei tohiks teie playbookis muuta.. See muutuja täidetakse Nexus admini vaikimisi parooliga esmasel installimisel ning tagab, et saame admini parooli muuta nexus_admin_password.

Kui soovite admini parooli pärast esmasest installimisest muuta, saate selle ajutiselt vanale paroolile muuta käsurealt. Pärast muutmist nexus_admin_password oma mänguraamatus saate käivitada:

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

Telegrami kanal Nexus Sonatype'i kohta: https://t.me/ru_nexus_sonatype

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

Milliseid artefaktide hoidlaid te kasutate?

  • Sonatype Nexus tasuta

  • Sonatype Nexus tasuline

  • Artifactory tasuta

  • Artifactory tasuline

  • Harbor

  • Pulp

Hääletas 9 kasutajat. Eemale jäi 3 kasutajat.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster