L-installazzjoni u l-konfigurazzjoni ta' Nexus Sonatype billi tuża l-infrastruttura bħala approċċ ta' kodiċi

Sonatype Nexus hija pjattaforma integrata li permezz tagħha l-iżviluppaturi jistgħu jipprokuraw, jaħżnu u jimmaniġġjaw id-dipendenzi ta' Java (Maven), Docker, Python, Ruby, NPM, immaġini Bower, pakketti RPM, gitlfs, Apt, Go, Nuget, u jqassmu s-sigurtà tas-softwer tagħhom.

Għaliex għandek bżonn Sonatype Nexus?

  • Għall-ħażna ta' artifacts privati;
  • Għall-caching artifacts li jitniżżlu mill-Internet;

Artifatti appoġġjati fil-pakkett bażiku Sonatype Nexus:

  • Java, Maven (vażett)
  • Docker
  • Python (pip)
  • Ruby (ġawhra)
  • NPM
  • Bowers
  • Yum (rpm)
  • gitlfs
  • Raw
  • Apt (deb)
  • Go
  • Nuget

Artifacts Appoġġjati mill-Komunità:

  • kompożitur
  • Conan
  • CPAN
  • ELPA
  • Helm
  • P2
  • R

Installazzjoni Sonatype Nexus bl-użu https://github.com/ansible-ThoTeam/nexus3-oss

Rekwiżiti

  • Aqra dwar l-użu ta' ansible fuq l-Internet.
  • Installa ansible pip install ansible fuq il-workstation fejn jaħdem il-playbook.
  • Set geerlingguy.java fuq il-workstation fejn jaħdem il-playbook.
  • Set geerlingguy.apache fuq il-workstation fejn jaħdem il-playbook.
  • Dan ir-rwol ġie ttestjat fuq CentOS 7, Ubuntu Xenial (16.04) u Bionic (18.04), Debian Jessie u Stretch
  • jmespath Il-librerija trid tkun installata fuq il-workstation fejn qed jaħdem il-playbook. Biex tinstalla: sudo pip install -r requirements.txt
  • Ħlief il-fajl tal-playbook (eżempju hawn taħt) fil-fajl nexus.yml
  • Mexxi l-installazzjoni tal-nexus ansible-playbook -i host nexus.yml

Eżempju ansible-playbook għall-installazzjoni ta 'nexus mingħajr LDAP b'repożitorji Maven (java), Docker, Python, Ruby, NPM, Bower, RPM u gitlfs.

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

  vars:
    nexus_timezone: 'Asia/Omsk'
    nexus_admin_password: "admin123"
    nexus_public_hostname: 'apatsev-nexus-playbook'
    httpd_setup_enable: false
    nexus_privileges:
      - name: all-repos-read
        description: 'Read & Browse access to all repos'
        repository: '*'
        actions:
          - read
          - browse
      - name: company-project-deploy
        description: 'Deployments to company-project'
        repository: company-project
        actions:
          - add
          - edit
    nexus_roles:
      - id: Developpers # maps to the LDAP group
        name: developers
        description: All developers
        privileges:
          - nx-search-read
          - all-repos-read
          - company-project-deploy
        roles: []
    nexus_local_users:
      - username: jenkins # used as key to update
        first_name: Jenkins
        last_name: CI
        email: [email protected]
        password: "s3cr3t"
        roles:
          - Developpers # role ID here
    nexus_blobstores:
      - name: company-artifacts
        path: /var/nexus/blobs/company-artifacts
    nexus_scheduled_tasks:
      - name: compact-blobstore
        cron: '0 0 22 * * ?'
        typeId: blobstore.compact
        taskProperties:
          blobstoreName: 'company-artifacts'

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

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

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

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

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

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

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

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

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

Screenshots:

L-installazzjoni u l-konfigurazzjoni ta' Nexus Sonatype billi tuża l-infrastruttura bħala approċċ ta' kodiċi

L-installazzjoni u l-konfigurazzjoni ta' Nexus Sonatype billi tuża l-infrastruttura bħala approċċ ta' kodiċi

Rwoli varjabbli

Varjabbli tar-Rwol

Varjabbli b'valuri awtomatiċi (ara default/main.yml):

Varjabbli ġenerali

    nexus_version: ''
    nexus_timezone: 'UTC'

B'mod awtomatiku, ir-rwol se jinstalla l-aħħar verżjoni disponibbli ta 'Nexus. Tista' tiffissa l-verżjoni billi tibdel il-varjabbli nexus_version. Ara verżjonijiet disponibbli fuq https://www.sonatype.com/download-oss-sonatype.

Jekk tibdel għal verżjoni aktar ġdida, ir-rwol jipprova jaġġorna l-installazzjoni Nexus tiegħek.

Jekk qed tuża verżjoni eqdem ta' Nexus mill-aktar reċenti, għandek tiżgura li m'intix qed tuża karatteristiċi li mhumiex disponibbli fir-rilaxx installat (pereżempju, l-hosting ta' repożitorji yum huwa disponibbli għal nexus akbar minn 3.8.0, git lfs repo għal nexus akbar minn 3.3.0 eċċ.)

nexus timezone huwa l-isem taż-żona tal-ħin Java, li jista 'jkun utli flimkien mal-espressjonijiet cron li ġejjin għal kompiti nexus_scheduled.

Port tan-Nexus u mogħdija tal-kuntest

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Il-port u l-passaġġ tal-kuntest tal-proċess tal-konnessjoni Java. nexus_default_context_path għandu jkun fih linja mmejla 'l quddiem meta tkun issettjata, eż: nexus_default_context_path: '/nexus/'.

Nexus OS Utent u Grupp

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

L-utent u l-grupp użati biex jippossjedu fajls Nexus u jmexxu s-servizz se jinħolqu mir-rwol jekk wieħed ikun nieqes.

    nexus_os_user_home_dir: '/home/nexus'

Ħalli tbiddel id-direttorju tad-dar default għall-utent tal-nexus

Direttorji tal-istanza Nexus

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

Katalgi Nexus.

  • nexus_installation_dir fih fajls eżekutibbli installati
  • nexus_data_dir fih il-konfigurazzjoni, ir-repożitorji u l-artifatti mniżżla kollha. Mogħdijiet blobstore apposta nexus_data_dir jistgħu jiġu personalizzati, ara hawn taħt nexus_blobstores.
  • nexus_tmp_dir fih il-fajls temporanji kollha. Il-mogħdija default għal redhat ġiet imċaqlaq minn /tmp biex jingħelbu problemi potenzjali bi proċeduri ta' tindif awtomatiku. Ara #168.

Konfigurazzjoni tal-Użu tal-Memorja JVM Nexus

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

Dawn huma s-settings default għal Nexus. Jekk jogħġbok tibdelx dawn il-valuri Jekk ma qrajtx sezzjoni tal-memorja tal-ħtiġiet tas-sistema tal-nexus u ma jifhmux x'qed jagħmlu.

Bħala t-tieni twissija, hawn silta mid-dokument ta’ hawn fuq:

Mhux irrakkomandat li tiżdied il-memorja tal-borġ JVM lil hinn mill-valuri rakkomandati f'tentattiv biex ittejjeb il-prestazzjoni. Dan jista 'effettivament ikollu l-effett oppost, li jirriżulta f'xogħol bla bżonn għas-sistema operattiva.

Password tal-amministratur

    nexus_admin_password: 'changeme'

Il-password tal-kont “admin” għas-setup. Dan jaħdem biss fuq l-ewwel installazzjoni default. Jekk jogħġbok ara [Ibdel il-password tal-admin wara l-ewwel installazzjoni](# change-admin-password-after-first-install) jekk trid tibdelha aktar tard billi tuża rwol.

Huwa rakkomandat ħafna li ma taħżinx il-password tiegħek f'test ċar fil-playbook, iżda li tuża [ansible-vault encryption] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (jew inline jew f'fajl separat mgħobbi b'eż. include_vars)

Aċċess anonimu awtomatikament

    nexus_anonymous_access: false

L-aċċess anonimu huwa diżattivat awtomatikament. Aqra aktar dwar aċċess anonimu.

L-isem tal-ospitant pubbliku

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

L-isem tad-dominju kwalifikat bis-sħiħ u l-iskema (https jew http) li taħthom l-istanza Nexus tkun disponibbli għall-klijenti tagħha.

Aċċess għall-API għal dan ir-rwol

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

Dawn il-varjabbli jikkontrollaw kif ir-rwol jgħaqqad mal-API Nexus għall-forniment.
Għal utenti avvanzati biss. Probabilment ma tridx tibdel dawn is-settings default

Twaqqif ta' prokura inversa

    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

Set SSL Reverse Proxy.
Biex tagħmel dan għandek bżonn tinstalla httpd. Nota: meta għal httpd_setup_enable valur stabbilittrue, Nexus kuntatti 127.0.0.1:8081, għalhekk ebda tkun aċċessibbli direttament permezz tal-port HTTP 8081 mill-indirizz IP estern.

L-isem tal-hostname default użat huwa nexus_public_hostname. Jekk għandek bżonn ismijiet differenti għal xi raġuni, tista 'tissettja httpd_server_name b’tifsira differenti.

С httpd_copy_ssl_files: true (b'mod awtomatiku) iċ-ċertifikati ta 'hawn fuq għandhom jeżistu fid-direttorju tal-playbook tiegħek u se jiġu kkupjati fis-server u kkonfigurati f'apache.

Jekk trid tuża ċertifikati eżistenti fuq is-server, installa httpd_copy_ssl_files: false u agħti l-varjabbli li ġejjin:

    # 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 hija fakultattiva u għandha titħalla mhux issettjata jekk ma tridx tippersonalizza l-fajl tal-katina

    httpd_default_admin_email: "[email protected]"

Issettja l-indirizz elettroniku tal-admin default

Konfigurazzjoni LDAP

Il-konnessjonijiet LDAP u l-isfera tas-sigurtà huma diżattivati ​​b'mod awtomatiku

    nexus_ldap_realm: false
    ldap_connections: []

Konnessjonijiet LDAP, kull element jidher bħal dan:

    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

Eżempju ta' konfigurazzjoni LDAP għal awtentikazzjoni anonima (irbit anonimu), din hija wkoll konfigurazzjoni "minima":

    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'

Eżempju ta' konfigurazzjoni LDAP għal awtentikazzjoni sempliċi (bl-użu ta' kont DSA):

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

Eżempju ta' konfigurazzjoni LDAP għal awtentikazzjoni sempliċi (bl-użu ta' kont DSA) + gruppi mmappjati bħala rwoli:

    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

Eżempju ta' konfigurazzjoni LDAP għal awtentikazzjoni sempliċi (bl-użu ta' kont DSA) + gruppi mmarkati dinamikament bħala rwoli:

    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'

Privileġġ

    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

Lista privileġġi għall-issettjar. Ħares lejn id-dokumentazzjoni u l-GUI biex tivverifika liema varjabbli jeħtieġ li jiġu stabbiliti skont it-tip ta 'privileġġ.

Dawn l-elementi huma kkombinati mal-valuri default li ġejjin:

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

Rwoli (ġewwa Nexus dan ifisser)

    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

Lista rwoli għall-issettjar.

Membri

    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

Lista ta' utenti/kontijiet lokali (mhux LDAP) biex toħloq fin-nexus.

Lista ta' utenti/kontijiet lokali (mhux LDAP) li għandhom jinħolqu fin-Nexus.

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

Immappjar Ldap ta' utenti/rwoli. Stat absent se tneħħi rwoli minn utent eżistenti jekk wieħed diġà jeżisti.
L-utenti Ldap mhumiex imħassra. Li tipprova tistabbilixxi rwol għal utent ineżistenti se tirriżulta fi żball.

Seletturi tal-kontenut

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

Għal aktar informazzjoni dwar is-selettur tal-kontenut, ara Dokumentazzjoni.

Biex tuża s-selettur tal-kontenut, żid privileġġ ġdid ma' type: repository-content-selector u rilevanticontentSelector

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

Blobstores u repożitorji

    nexus_delete_default_repos: false

Ħassar ir-repożitorji mill-konfigurazzjoni default inizjali tal-installazzjoni tal-nexus. Dan il-pass jitwettaq biss mal-ewwel installazzjoni (meta nexus_data_dir ġiet skoperta vojta).

It-tneħħija ta' repożitorji mill-konfigurazzjoni default default għal Nexus. Dan il-pass isir biss waqt l-ewwel installazzjoni (meta nexus_data_dir vojta).

    nexus_delete_default_blobstore: false

Ħassar il-blobstore default mill-konfigurazzjoni default inizjali tal-installazzjoni tal-nexus. Dan jista' jsir biss jekk nexus_delete_default_repos: true u r-repożitorji kkonfigurati kollha (ara hawn taħt) għandhom espliċita blob_store: custom. Dan il-pass jitwettaq biss fl-installazzjoni għall-ewwel darba (meta nexus_data_dir ġiet skoperta vojta).

It-tneħħija tal-ħażna tal-blob (artifacts binarji) hija diżattivata awtomatikament mill-konfigurazzjoni inizjali. Biex tneħħi l-ħażna blob (artifacts binarji), itfi nexus_delete_default_repos: true. Dan il-pass isir biss waqt l-ewwel installazzjoni (meta nexus_data_dir vojta).

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

Blobstores biex toħloq. Mogħdija blobstore u blobstore repożitorju ma jistgħux jiġu aġġornati wara l-ħolqien inizjali (kwalunkwe aġġornament hawnhekk se jiġi injorat mal-forniment mill-ġdid).

Il-konfigurazzjoni ta' blobstore fuq S3 hija pprovduta bħala konvenjenza u mhix parti mit-testijiet awtomatizzati li nwettqu fuq travis. Jekk jogħġbok innota li l-ħażna fuq S3 hija rakkomandata biss għal każijiet skjerati fuq AWS.

Ħolqien Blobstores. Il-mogħdija tal-ħażna u r-repożitorju tal-ħażna ma jistgħux jiġu aġġornati wara l-ħolqien inizjali (kwalunkwe aġġornament hawn se jiġi injorat meta jiġi installat mill-ġdid).

It-twaqqif tal-ħażna blob fuq S3 huwa pprovdut bħala konvenjenza. Jekk jogħġbok innota li l-ħażna S3 hija rakkomandata biss għal każijiet skjerati fuq 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

Hawn fuq hemm eżempju ta 'konfigurazzjoni 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 repożitorji ospitati konfigurazzjoni. Il-konfigurazzjoni tal-cache negattiva mhix obbligatorja u tkun default għall-valuri ta 'hawn fuq jekk titħalla barra.

Konfigurazzjoni repożitorji ospitati Maven. Il-konfigurazzjoni tal-cache negattiva (-1) hija fakultattiva u se tkun default għall-valuri ta 'hawn fuq jekk ma tkunx speċifikata.

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

Konfigurazzjoni gruppi Maven.

It-tliet tipi ta’ repożitorju huma kkombinati mal-valuri awtomatiċi li ġejjin:

    _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 u tipi ta’ repożitorji yum:
ara defaults/main.yml għal dawn l-għażliet:

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS u yum repożitorji huma diżattivati ​​awtomatikament:
Ara defaults/main.yml għal dawn l-għażliet:

      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

Jekk jogħġbok innota li jista' jkollok bżonn tattiva ċerti ambiti tas-sigurtà jekk trid tuża tipi oħra ta' repożitorji minbarra maven. Dan huwa falz awtomatikament

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

Remote User Realm jista 'jiġi attivat ukoll bl-użu

nexus_rut_auth_realm: true

u t-titlu jista 'jiġi personalizzat billi jiddefinixxi

nexus_rut_auth_header: "CUSTOM_HEADER"

Ħidmiet skedati

    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"

Ħidmiet skedati għall-issettjar. typeId u l-kompitu speċifikutaskProperties/booleanTaskProperties tista' taqta' jew:

  • mill-ġerarkija tat-tip Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • tiċċekkja l-formola tal-ħolqien tal-kompitu HTML fil-browser tiegħek
  • milli tara talbiet AJAX fil-browser meta twaqqaf kompitu manwalment.

Il-proprjetajiet tal-kompitu għandhom jiġu ddikjarati fil-blokka yaml korretta skont it-tip tagħhom:

  • taskProperties għall-proprjetajiet kollha ta' string (jiġifieri ismijiet ta' repożitorji, ismijiet ta' repożitorji, perjodi ta' żmien...).
  • booleanTaskProperties għall-proprjetajiet loġiċi kollha (jiġifieri prinċipalment checkboxes fil-GUI tal-kompitu tal-ħolqien tan-nexus).

Backups

      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)

Il-backup mhux se jiġi kkonfigurat sakemm taqleb nexus_backup_configure в true.
F'dan il-każ, il-kompitu tal-iskript skedat jiġi kkonfigurat biex jaħdem fuq Nexus
fl-intervall speċifikat fi nexus_backup_cron (default 21:00 kuljum).
Ara [template groovy għal dan il-kompitu](templates/backup.groovy.j2) għad-dettalji.
Dan il-kompitu skedat huwa indipendenti minn oħrajn nexus_scheduled_tasksli inti
ħabbar fil-playbook tiegħek.

Jekk trid iddawwar/tħassar backups, installa nexus_backup_rotate: true u kkonfigurat in-numru ta 'backups li tixtieq tiffranka bl-użu nexus_backup_keep_rotations (default 4).

Meta tuża r-rotazzjoni, jekk trid tiffranka spazju addizzjonali fuq id-diska matul il-proċess tal-backup,
Tista 'tinstalla nexus_backup_rotate_first: true. Dan se jikkonfigura pre-rotazzjoni/tħassir qabel il-backup. B'mod awtomatiku, ir-rotazzjoni sseħħ wara li tinħoloq backup. Jekk jogħġbok innota li f'dan il-każ il-backups qodma
se titħassar qabel ma ssir il-backup attwali.

Proċedura ta' rkupru

Mexxi playbook bil-parametru -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(pereżempju, 2017-12-17-21-00-00 għas-17 ta' Diċembru 2017 fil-21:00

Tneħħija tar-rabta

Twissija: Dan se jħassar kompletament id-dejta attwali tiegħek. Kun żgur li tagħmel backup aktar kmieni jekk meħtieġ

Uża varjabbli nexus_purgejekk għandek bżonn terġa 'tibda mill-bidu u terġa' tinstalla l-istanza tan-nexus bid-dejta kollha mneħħija.

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

Ibdel il-password tal-amministratur wara l-ewwel installazzjoni

    nexus_default_admin_password: 'admin123'

Dan m'għandux jinbidel fil-playbook tiegħek. Din il-varjabbli hija mimlija bil-password tal-admin default Nexus meta tkun installata għall-ewwel darba u tiżgura li nistgħu nibdlu l-password tal-amministratur għal nexus_admin_password.

Jekk trid tibdel il-password tal-amministratur wara l-ewwel installazzjoni, tista 'tbiddel temporanjament għall-password l-antika mil-linja tal-kmand. Wara l-bidla nexus_admin_password fil-playbook tiegħek tista' tmexxi:

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

Kanal tat-Telegram fuq Nexus Sonatype: https://t.me/ru_nexus_sonatype

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

X'repożitorji tal-artifact tuża?

  • Sonatype Nexus huwa b'xejn

  • Sonatype Nexus imħallas

  • Artifactory huwa b'xejn

  • Artifactory mħallsa

  • Port

  • Polpa

Ivvutaw 9 utent. 3 utent astjenew.

Sors: www.habr.com

Żid kumment