Pag-instalar ug pag-configure sa Nexus Sonatype gamit ang imprastraktura isip pamaagi sa code

Ang Sonatype Nexus usa ka integrated nga plataporma diin ang mga developers makahimo sa proxy, store ug pagdumala sa Java (Maven) dependencies, Docker, Python, Ruby, NPM, Bower images, RPM packages, gitlfs, Apt, Go, Nuget, ug pag-apod-apod sa ilang software security.

Ngano nga kinahanglan nimo ang Sonatype Nexus?

  • Alang sa pagtipig sa mga pribadong artifact;
  • Alang sa pag-cache sa mga artifact nga gi-download gikan sa Internet;

Mga artifact nga gisuportahan sa batakang Sonatype Nexus package:

  • Java, Maven (jar)
  • Docker
  • Python (pip)
  • Ruby (hiyas)
  • NPM
  • Mga bower
  • Yum (rpm)
  • gitlfs
  • Hilaw
  • Apt (deb)
  • Go
  • Nuget

Mga Artifact nga Gisuportahan sa Komunidad:

  • kompositor
  • Conan
  • CPAN
  • ELPA
  • Helm
  • P2
  • R

Pag-instalar sa Sonatype Nexus gamit ang https://github.com/ansible-ThoTeam/nexus3-oss

mga kinahanglanon

  • Basaha ang bahin sa paggamit sa ansible sa Internet.
  • Pag-instalar nga mahimo pip install ansible sa workstation diin nagdagan ang playbook.
  • Pagpahimutang geerlingguy.java sa workstation diin nagdagan ang playbook.
  • Pagpahimutang geerlingguy.apache sa workstation diin nagdagan ang playbook.
  • Kini nga tahas gisulayan sa CentOS 7, Ubuntu Xenial (16.04) ug Bionic (18.04), Debian Jessie ug Stretch
  • jmespath Kinahanglang ma-install ang library sa workstation diin nagdagan ang playbook. Sa pag-instalar: sudo pip install -r requirements.txt
  • I-save ang playbook file (pananglitan sa ubos) sa nexus.yml file
  • Pagdalagan ang pag-instalar sa nexus ansible-playbook -i host nexus.yml

Pananglitan nga ansible-playbook para sa pag-instalar sa nexus nga walay LDAP nga adunay Maven (java), Docker, Python, Ruby, NPM, Bower, RPM ug gitlfs nga mga repositoryo.

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

Mga screenshot:

Pag-instalar ug pag-configure sa Nexus Sonatype gamit ang imprastraktura isip pamaagi sa code

Pag-instalar ug pag-configure sa Nexus Sonatype gamit ang imprastraktura isip pamaagi sa code

Variable nga mga papel

Mga Variable sa Papel

Mga variable nga adunay mga default nga kantidad (tan-awa default/main.yml):

Kinatibuk-ang mga variable

    nexus_version: ''
    nexus_timezone: 'UTC'

Sa default, ang tahas mag-install sa labing bag-o nga magamit nga bersyon sa Nexus. Mahimo nimong ayohon ang bersyon pinaagi sa pagbag-o sa variable nexus_version. Tan-awa ang magamit nga mga bersyon sa https://www.sonatype.com/download-oss-sonatype.

Kung mag-ilis ka sa mas bag-ong bersyon, ang tahas mosulay sa pag-update sa imong pag-install sa Nexus.

Kung naggamit ka usa ka karaan nga bersyon sa Nexus kaysa sa labing bag-o, kinahanglan nimo nga sigurohon nga wala ka naggamit mga bahin nga wala magamit sa na-install nga pagpagawas (pananglitan, ang pag-host sa mga repositoryo sa yum magamit alang sa nexus nga labi pa sa 3.8.0, git lfs repo. alang sa koneksyon nga labaw sa 3.3.0 etc.)

nexus timezone mao ang ngalan sa Java time zone, nga mahimong mapuslanon sa kombinasyon sa mosunod nga cron expressions para sa nexus_scheduled nga mga buluhaton.

Nexus port ug context path

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Ang pantalan ug konteksto nga agianan sa proseso sa koneksyon sa Java. nexus_default_context_path kinahanglan adunay usa ka forward slash kung kini gibutang, pananglitan: nexus_default_context_path: '/nexus/'.

Gumagamit ug Grupo sa Nexus OS

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Ang tiggamit ug grupo nga gigamit sa pagpanag-iya sa mga Nexus file ug pagpadagan sa serbisyo pagahimoon sa papel kung adunay usa nga nawala.

    nexus_os_user_home_dir: '/home/nexus'

Tugoti ang pagbag-o sa default nga direktoryo sa balay alang sa nexus user

Mga direktoryo sa pananglitan sa Nexus

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

Mga Katalogo sa Nexus.

  • nexus_installation_dir naglangkob sa na-install nga mga executable nga mga file
  • nexus_data_dir naglangkob sa tanang configuration, repository ug na-download nga artifact. Pasadya nga mga agianan sa blobstore nexus_data_dir mahimong ipasibo, tan-awa sa ubos nexus_blobstores.
  • nexus_tmp_dir naglangkob sa tanan nga temporaryo nga mga file. Ang default nga dalan alang sa redhat gibalhin gikan sa /tmp aron mabuntog ang posibleng mga problema sa mga pamaagi sa awtomatikong pagpanglimpyo. Tan-awa ang #168.

Pag-configure sa Nexus JVM Memory Usage

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

Kini ang mga default setting para sa Nexus. Palihug ayaw usba kini nga mga kantidad Kung wala ka nakabasa seksyon sa memorya sa mga kinahanglanon sa sistema sa nexus ug wala makasabot sa ilang gibuhat.

Isip ikaduhang pasidaan, ania ang kinutlo gikan sa ibabaw nga dokumento:

Dili girekomenda nga madugangan ang panumduman sa JVM heap lapas sa girekomenda nga mga kantidad sa pagsulay nga mapauswag ang pasundayag. Kini mahimo nga adunay kaatbang nga epekto, nga moresulta sa wala kinahanglana nga trabaho alang sa operating system.

Password sa tagdumala

    nexus_admin_password: 'changeme'

Ang password sa account sa "admin" alang sa pag-setup. Naglihok lamang kini sa una nga default nga pag-install. Palihug tan-awa ang [Pagbag-o sa password sa admin pagkahuman sa una nga pag-install](# change-admin-password-after-first-install) kung gusto nimo usbon kini sa ulahi gamit ang usa ka papel.

Girekomenda nga dili tipigan ang imong password sa tin-aw nga teksto sa playbook, apan gamiton ang [ansible-vault encryption] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (bisan inline o sa usa ka bulag nga file nga puno sa e.g. include_vars)

Anonymous nga pag-access pinaagi sa default

    nexus_anonymous_access: false

Ang anonymous nga pag-access gi-disable pinaagi sa default. Basaha ang dugang bahin sa anonymous nga pag-access.

Public hostname

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Ang hingpit nga kwalipikado nga ngalan sa domain ug laraw (https o http) diin ang Nexus nga pananglitan mahimong magamit sa mga kliyente niini.

Pag-access sa API alang niini nga tahas

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

Kini nga mga variable nagkontrol kung giunsa ang papel nagkonektar sa Nexus API alang sa paghatag.
Para sa mga advanced users lang. Tingali dili nimo gusto nga usbon kini nga mga default setting

Pag-set up ug reverse 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

Pagpahimutang SSL Reverse Proxy.
Aron mahimo kini kinahanglan nimo nga i-install ang httpd. Note: kanus-a para httpd_setup_enable ibutang ang bilitrue, mga kontak sa nexus 127.0.0.1:8081, sa ingon dili nga direktang ma-access pinaagi sa HTTP port 8081 gikan sa external IP address.

Ang default hostname nga gigamit mao ang nexus_public_hostname. Kung kinahanglan nimo ang lainlaing mga ngalan sa pipila ka hinungdan, mahimo nimong itakda httpd_server_name uban sa laing kahulogan.

Π‘ httpd_copy_ssl_files: true (sa default) ang mga sertipiko sa ibabaw kinahanglan nga anaa sa imong playbook directory ug kopyahon sa server ug i-configure sa apache.

Kung gusto nimo gamiton ang naa na nga mga sertipiko sa server, i-install httpd_copy_ssl_files: false ug ihatag ang mosunod nga mga 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 mao ang opsyonal ug kinahanglan nga pasagdan nga dili mabutang kung dili nimo gusto nga ipasibo ang chain file

    httpd_default_admin_email: "[email protected]"

Ibutang ang default nga adres sa email sa admin

LDAP Configuration

Ang mga koneksyon sa LDAP ug natad sa seguridad gi-disable pinaagi sa default

    nexus_ldap_realm: false
    ldap_connections: []

Mga koneksyon sa LDAP, ang matag elemento sama niini:

    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

Pananglitan nga LDAP configuration para sa anonymous authentication (anonymous binding), kini usa usab ka "minimal" nga configuration:

    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'

Panig-ingnan sa LDAP configuration alang sa yano nga authentication (gamit ang DSA account):

    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

Panig-ingnan sa LDAP configuration alang sa yano nga pag-authenticate (gamit ang DSA account) + mga grupo nga gimapa isip mga tahas:

    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

Panig-ingnan sa LDAP configuration alang sa yano nga authentication (gamit ang DSA account) + mga grupo nga dinamikong gimapa isip mga tahas:

    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'

Pribilehiyo

    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

Listahan sa mga pribilehiyo alang sa mga setting. Tan-awa ang dokumentasyon ug GUI aron masusi kung unsang mga variable ang kinahanglan itakda depende sa tipo sa pribilehiyo.

Kini nga mga elemento gihiusa uban sa mosunod nga default nga mga bili:

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

Mga Papel (sa sulod sa Nexus kini nagpasabot)

    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

Listahan sa mga papel alang sa mga setting.

Mga tiggamit

    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

Lokal (dili-LDAP) nga tiggamit/account lista sa paghimo sa nexus.

Listahan sa lokal (dili-LDAP) nga tiggamit/account nga himoon sa Nexus.

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

Ldap mapping sa mga user/role. Estado absent motangtang sa mga tahas gikan sa usa ka kasamtangan nga user kon ang usa anaa na.
Ang mga tiggamit sa Ldap wala matangtang. Ang pagsulay sa pagtakda og papel alang sa usa ka wala naglungtad nga tiggamit moresulta sa usa ka sayup.

Mga tigpili sa sulod

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

Alang sa dugang nga kasayuran bahin sa tigpili sa sulud, tan-awa Dokumentasyon.

Aron magamit ang tigpili sa sulud, pagdugang usa ka bag-ong pribilehiyo sa type: repository-content-selector ug may kalabutancontentSelector

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

Blobstores ug repository

    nexus_delete_default_repos: false

I-delete ang mga repository gikan sa nexus install initial default configuration. Kini nga lakang gipatuman lamang sa unang higayon nga pag-instalar (kung kanus-a nexus_data_dir nakit-an nga walay sulod).

Pagtangtang sa mga repositoryo gikan sa default default configuration alang sa Nexus. Kini nga lakang gihimo lamang sa panahon sa unang pag-instalar (sa dihang nexus_data_dir walay sulod).

    nexus_delete_default_blobstore: false

I-delete ang default blobstore gikan sa nexus install initial default configuration. Kini mahimo lamang kung nexus_delete_default_repos: true ug ang tanan nga gi-configure nga mga repository (tan-awa sa ubos) adunay klaro blob_store: custom. Kini nga lakang gipatuman lamang sa unang higayon nga pag-instalar (kung kanus-a nexus_data_dir nakit-an nga walay sulod).

Ang pagtangtang sa blob storage (binary artifacts) kay gi-disable sa default gikan sa inisyal nga configuration. Para tangtangon ang blob storage (binary artifacts), i-off nexus_delete_default_repos: true. Kini nga lakang gihimo lamang sa panahon sa unang pag-instalar (sa dihang nexus_data_dir walay sulod).

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

Mga Blobstore sa paghimo. Ang usa ka blobstore nga agianan ug usa ka repository nga blobstore dili ma-update human sa unang pagmugna (bisan unsa nga update dinhi dili tagdon sa re-provisionning).

Ang pag-configure sa blobstore sa S3 gihatag ingon usa ka kasayon ​​​​ug dili bahin sa mga awtomatiko nga pagsulay nga among gipadagan sa travis. Palihug timan-i nga ang pagtipig sa S3 girekomenda lamang sa mga higayon nga gi-deploy sa AWS.

Paglalang Mga Blobstore. Ang agianan sa pagtipig ug pagtipig nga repository dili ma-update pagkahuman sa una nga paghimo (bisan unsang pag-update dinhi dili tagdon kung gi-install pag-usab).

Ang pag-set up sa blob storage sa S3 gihatag isip kasayon. Palihug timan-i nga ang S3 storage girekomenda lamang sa mga higayon nga gi-deploy sa 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

Sa ibabaw usa ka pananglitan nga pag-configure proxy server Maven.

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

Maven gi-host nga mga repositoryo configuration. Ang negatibo nga cache config mao ang opsyonal ug mahimong default sa mga kantidad sa ibabaw kung dili iapil.

Pagsalig gi-host nga mga repositoryo Maven. Ang negatibo nga pag-configure sa cache (-1) kay opsyonal ug mag-default sa mga bili sa ibabaw kung dili matino.

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

Pagsalig mga grupo Maven.

Ang tanan nga tulo nga mga tipo sa repository gihiusa sa mga mosunod nga default nga kantidad:

    _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 ug yum repository type:
tan-awa ang defaults/main.yml alang niini nga mga opsyon:

Ang Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS ug yum repository gi-disable pinaagi sa default:
Tan-awa defaults/main.yml alang niini nga mga opsyon:

      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

Palihug timan-i nga kinahanglan nimo nga hatagan ang pipila nga mga sakup sa seguridad kung gusto nimo gamiton ang ubang mga lahi sa mga repository gawas sa maven. Kini bakak pinaagi sa default

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

Ang Remote User Realm mahimo usab nga magamit gamit

nexus_rut_auth_realm: true

ug ang titulo mahimong ipasibo pinaagi sa pagtino

nexus_rut_auth_header: "CUSTOM_HEADER"

Gitakda nga mga buluhaton

    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"

Gitakda nga mga buluhaton alang sa mga setting. typeId ug espesipikong buluhatontaskProperties/booleanTaskProperties makatag-an ka bisan:

  • gikan sa Java type hierarchy org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • pagsusi sa porma sa paghimo sa buluhaton sa HTML sa imong browser
  • gikan sa pagtan-aw sa mga hangyo sa AJAX sa browser kung mano-mano ang pag-set up sa usa ka buluhaton.

Ang mga propyedad sa buluhaton kinahanglang ideklara sa hustong yaml block depende sa ilang matang:

  • taskProperties para sa tanan nga string properties (ie repository names, repository names, time periods...).
  • booleanTaskProperties para sa tanang lohikal nga mga kabtangan (pananglitan nag-una ang mga checkbox sa GUI sa buluhaton sa paghimo sa nexus).

Mga backup

      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)

Ang backup dili ma-configure hangtod nga mobalhin ka nexus_backup_configure Π² true.
Sa kini nga kaso, ang naka-iskedyul nga buluhaton sa script i-configure aron modagan sa Nexus
sa gilay-on nga gitakda sa nexus_backup_cron (default 21:00 kada adlaw).
Tan-awa ang [groovy template para niini nga buluhaton](templates/backup.groovy.j2) para sa mga detalye.
Kini nga gikatakda nga buluhaton independente sa uban nexus_scheduled_tasksnga ikaw
ipahibalo sa imong playbook.

Kung gusto nimo i-rotate / tangtangon ang mga backup, i-install nexus_backup_rotate: true ug i-configure ang gidaghanon sa mga backup nga gusto nimong i-save gamit nexus_backup_keep_rotations (default 4).

Kung gigamit ang rotation, kung gusto nimo magtipig dugang nga wanang sa disk sa panahon sa proseso sa pag-backup,
Mahimo nimo i-install nexus_backup_rotate_first: true. Kini mag-configure sa pre-rotation/deletion sa dili pa i-backup. Sa kasagaran, ang rotation mahitabo human mabuhat ang backup. Palihug timan-i nga sa niini nga kaso ang daan nga backups
mapapas sa dili pa himoon ang kasamtangang backup.

Pamaagi sa pagbawi

Pagdagan ang playbook nga adunay parameter -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(pananglitan, 2017-12-17-21-00-00 para sa Disyembre 17, 2017 sa 21:00

Pagtangtang sa nexus

Pasidaan: Kini hingpit nga mapapas ang imong kasamtangan nga datos. Siguruha nga maghimo usa ka backup sa sayo pa kung kinahanglan

Gamit ug variable nexus_purgekung kinahanglan nimo nga i-restart gikan sa wala ug i-install pag-usab ang nexus nga pananglitan nga gikuha ang tanan nga datos.

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

Usba ang password sa administrator pagkahuman sa una nga pag-install

    nexus_default_admin_password: 'admin123'

Dili kini angay usbon sa imong playbook. Kini nga variable gipuno sa default Nexus admin password sa una nga na-install ug nagsiguro nga mahimo namon usbon ang admin password sa nexus_admin_password.

Kung gusto nimong usbon ang password sa tagdumala pagkahuman sa una nga pag-install, mahimo nimo kini temporaryo nga usbon sa daan nga password gikan sa command line. Human sa pagbag-o nexus_admin_password sa imong playbook makadagan ka:

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

Telegram channel sa Nexus Sonatype: https://t.me/ru_nexus_sonatype

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Unsang mga artifact repository ang imong gigamit?

  • Ang Sonatype Nexus libre

  • Gibayran ang Sonatype Nexus

  • Libre ang artifactory

  • Gibayran ang artifactory

  • Harbor

  • Pulp

9 ka tiggamit ang miboto. 3 ka tiggamit ang nag- abstain.

Source: www.habr.com

Idugang sa usa ka comment