Инсталирање и конфигурисање Некус Сонатипе користећи приступ инфраструктуре као кода

Сонатипе Некус је интегрисана платформа преко које програмери могу да замене, чувају и управљају Јава (Мавен) зависностима, Доцкер, Питхон, Руби, НПМ, Бовер сликама, РПМ пакетима, гитлфс, Апт, Го, Нугет и дистрибуирају своју софтверску безбедност.

Зашто вам је потребан Сонатипе Некус?

  • За чување приватних артефаката;
  • За кеширање артефаката који се преузимају са Интернета;

Артефакти подржани у основном Сонатипе Некус пакету:

  • Јава, Мавен (јар)
  • лучки радник
  • Пајтон (пип)
  • рубин (драгуљ)
  • НПМ
  • Бовер
  • њам (о/мин)
  • гитлфс
  • Сиров
  • Апт (деб)
  • Go
  • Нугет

Артефакти које подржава заједница:

  • Саставити
  • Конан
  • ЦПАН
  • ЕЛПА
  • кормило
  • P2
  • R

Инсталирање Сонатипе Некуса помоћу https://github.com/ansible-ThoTeam/nexus3-oss

Захтеви

  • Прочитајте о коришћењу ансибле-а на Интернету.
  • Инсталирајте ансибле pip install ansible на радној станици на којој се покреће свеска.
  • Сет геерлинггуи.јава на радној станици на којој се покреће свеска.
  • Сет геерлинггуи.апацхе на радној станици на којој се покреће свеска.
  • Ова улога је тестирана на ЦентОС 7, Убунту Ксениал (16.04) и Биониц (18.04), Дебиан Јессие и Стретцх
  • jmespath Библиотека мора бити инсталирана на радној станици на којој се покреће књига. За инсталацију: sudo pip install -r requirements.txt
  • Сачувајте датотеку плаибоок (пример испод) у некус.имл датотеку
  • Покрените инсталацију некуса ansible-playbook -i host nexus.yml

Пример ансибле-плаибоок-а за инсталирање некуса без ЛДАП-а са Мавен (јава), Доцкер, Питхон, Руби, НПМ, Бовер, РПМ и гитлфс репозиторијумима.

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

Снимке екрана:

Инсталирање и конфигурисање Некус Сонатипе користећи приступ инфраструктуре као кода

Инсталирање и конфигурисање Некус Сонатипе користећи приступ инфраструктуре као кода

Променљиве улоге

Променљиве улога

Променљиве са подразумеваним вредностима (погледајте default/main.yml):

Опште варијабле

    nexus_version: ''
    nexus_timezone: 'UTC'

Подразумевано, улога ће инсталирати најновију доступну верзију Некуса. Можете поправити верзију променом променљиве nexus_version. Погледајте доступне верзије на https://www.sonatype.com/download-oss-sonatype.

Ако пређете на новију верзију, улога ће покушати да ажурира вашу Некус инсталацију.

Ако користите старију верзију Некуса од најновије, требало би да се уверите да не користите функције које нису доступне у инсталираном издању (на пример, хостовање иум спремишта је доступно за некус већи од 3.8.0, гит лфс репо за нексус већи од 3.3.0 итд.)

nexus timezone је назив временске зоне Јава, што може бити корисно у комбинацији са следећим црон изразима за некус_сцхедулед задатке.

Некус порт и путања контекста

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Порт и контекстуална путања процеса Јава везе. nexus_default_context_path мора да садржи косу црту када је постављена, нпр.: nexus_default_context_path: '/nexus/'.

Корисник и група Некус ОС-а

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Корисник и група који су поседовали Некус датотеке и покренули услугу биће креирани улогом ако она недостаје.

    nexus_os_user_home_dir: '/home/nexus'

Дозволи промену подразумеваног кућног директоријума за некус корисника

Директоријуми Некус инстанци

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

Некус каталози.

  • nexus_installation_dir садржи инсталиране извршне датотеке
  • nexus_data_dir садржи све конфигурације, спремишта и преузете артефакте. Прилагођене путање блобсторе-а nexus_data_dir може се прилагодити, погледајте испод nexus_blobstores.
  • nexus_tmp_dir садржи све привремене датотеке. Подразумевана путања за редхат је премештена /tmp за превазилажење потенцијалних проблема са аутоматским поступцима чишћења. Види #168.

Конфигурисање употребе Некус ЈВМ меморије

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

Ово су подразумевана подешавања за Некус. Молимо вас да не мењате ове вредности Ако нисте читали одељак меморије некус системских захтева и не разумеју шта раде.

Као друго упозорење, ево извода из горе наведеног документа:

Не препоручује се повећање ЈВМ хеап меморије преко препоручених вредности у покушају да се побољшају перформансе. Ово заправо може имати супротан ефекат, што резултира непотребним радом за оперативни систем.

Администраторска лозинка

    nexus_admin_password: 'changeme'

Лозинка „администраторског“ налога за подешавање. Ово ради само на првој подразумеваној инсталацији. Погледајте [Промена лозинке администратора након прве инсталације] (# промена-админ-лозинке-после прве инсталације) ако желите да је промените касније користећи улогу.

Изричито се препоручује да своју лозинку не чувате у чистом тексту у свесци, већ да користите [ансибле-ваулт енкрипцију] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (инлине или у засебној датотеци учитаној нпр. инцлуде_варс)

Анонимни приступ подразумевано

    nexus_anonymous_access: false

Анонимни приступ је подразумевано онемогућен. Прочитајте више о анонимни приступ.

Јавно име хоста

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Потпуно квалификовано име домена и шема (хттпс или хттп) под којима ће Некус инстанца бити доступна својим клијентима.

АПИ приступ за ову улогу

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

Ове варијабле контролишу како се улога повезује са Некус АПИ-јем за обезбеђивање.
Само за напредне кориснике. Вероватно не желите да мењате ове подразумеване поставке

Подешавање обрнутог проксија

    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

Сет ССЛ обрнути прокси.
Да бисте то урадили, потребно је да инсталирате хттпд. Напомена: када за httpd_setup_enable подешена вредностtrue, некус контакти 127.0.0.1:8081, дакле не бити директно доступан преко ХТТП порта 8081 са спољне ИП адресе.

Подразумевано коришћено име хоста је nexus_public_hostname. Ако су вам из неког разлога потребна другачија имена, можете их подесити httpd_server_name са другачијим значењем.

С httpd_copy_ssl_files: true (подразумевано) горенаведени сертификати треба да постоје у вашем директоријуму плаибоок и биће копирани на сервер и конфигурисани у апацхе-у.

Ако желите да користите постојеће сертификате на серверу, инсталирајте httpd_copy_ssl_files: false и обезбеди следеће променљиве:

    # 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 је опционо и требало би да га не поставите ако не желите да прилагодите датотеку ланца

    httpd_default_admin_email: "[email protected]"

Подесите подразумевану адресу е-поште администратора

ЛДАП конфигурација

ЛДАП везе и област безбедности су подразумевано онемогућени

    nexus_ldap_realm: false
    ldap_connections: []

ЛДАП везе, сваки елемент изгледа овако:

    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

Пример ЛДАП конфигурације за анонимну аутентификацију (анонимно везивање), ово је такође „минимална“ конфигурација:

    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'

Пример ЛДАП конфигурације за једноставну аутентификацију (помоћу ДСА налога):

    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

Пример ЛДАП конфигурације за једноставну аутентификацију (помоћу ДСА налога) + групе мапиране као улоге:

    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

Пример ЛДАП конфигурације за једноставну аутентификацију (помоћу ДСА налога) + групе динамички мапиране као улоге:

    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'

Привилегије

    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

Списак привилегије за подешавања. Погледајте документацију и ГУИ да проверите које променљиве треба да се подесе у зависности од типа привилегија.

Ови елементи су комбиновани са следећим подразумеваним вредностима:

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

Улоге (унутар Некуса то значи)

    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

Списак улоге за подешавања.

Чланови

    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

Листа локалних (не-ЛДАП) корисника/налога за креирање у некус-у.

Листа локалних (не-ЛДАП) корисника/налога за креирање у Некус-у.

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

Лдап мапирање корисника/улога. Држава absent ће уклонити улоге постојећег корисника ако већ постоји.
Корисници Лдап-а се не бришу. Покушај постављања улоге за непостојећег корисника резултираће грешком.

Селектори садржаја

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

За више информација о бирачу садржаја, погледајте Документација.

Да бисте користили бирач садржаја, додајте нову привилегију са type: repository-content-selector и релевантнеcontentSelector

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

Блобсторес и репозиторијуми

    nexus_delete_default_repos: false

Избришите спремишта из почетне подразумеване конфигурације некус инсталл. Овај корак се извршава само при првој инсталацији (када nexus_data_dir је откривено да је празно).

Уклањање спремишта из подразумеване подразумеване конфигурације за Некус. Овај корак се изводи само током прве инсталације (када nexus_data_dir празан).

    nexus_delete_default_blobstore: false

Избришите подразумевани блобсторе из почетне подразумеване конфигурације некус инсталл. Ово се може урадити само ако nexus_delete_default_repos: true и сва конфигурисана спремишта (погледајте доле) имају експлицитни blob_store: custom. Овај корак се извршава само при првој инсталацији (када nexus_data_dir је откривено да је празно).

Уклањање блоб меморије (бинарни артефакти) је подразумевано онемогућено у почетној конфигурацији. Да бисте уклонили складиште блобова (бинарне артефакте), искључите nexus_delete_default_repos: true. Овај корак се изводи само током прве инсталације (када nexus_data_dir празан).

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

Блобсторес створити. Путања блобсторе-а и блобсторе спремишта не могу се ажурирати након почетног креирања (свако ажурирање овде ће бити занемарено приликом поновног обезбеђивања).

Конфигурисање блобсторе-а на С3 је обезбеђено као погодност и није део аутоматизованих тестова које изводимо на Травис-у. Имајте на уму да се складиштење на С3 препоручује само за инстанце распоређене на АВС.

Стварање Блобсторес. Путања за складиштење и складиште складиштења се не могу ажурирати након почетног креирања (свако ажурирање овде ће бити занемарено када се поново инсталира).

Постављање блоб меморије на С3 је обезбеђено као погодност. Имајте на уму да се С3 складиште препоручује само за инстанце примењене на АВС-у.

    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

Изнад је пример конфигурације прокси сервер Мавен.

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

Мавен хостована спремишта конфигурацију. Негативна конфигурација кеша је опциона и подразумевано ће поставити горе наведене вредности ако се изостави.

Конфигурација хостована спремишта Мавен. Негативна конфигурација кеша (-1) је опциона и подразумевано ће користити горе наведене вредности ако нису наведене.

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

Конфигурација групе Мавен.

Сва три типа спремишта су комбинована са следећим подразумеваним вредностима:

    _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

Доцкер, Пипи, Рав, Рубигемс, Бовер, НПМ, Гит-ЛФС и иум типови спремишта:
видети defaults/main.yml за ове опције:

Доцкер, Пипи, Рав, Рубигемс, Бовер, НПМ, Гит-ЛФС и иум спремишта су подразумевано онемогућена:
Видети defaults/main.yml за ове опције:

      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

Имајте на уму да ћете можда морати да омогућите одређене безбедносне опсеге ако желите да користите друге типове спремишта осим мавен-а. Ово је подразумевано нетачно

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

Ремоте Усер Реалм се такође може омогућити помоћу

nexus_rut_auth_realm: true

а наслов се може прилагодити дефинисањем

nexus_rut_auth_header: "CUSTOM_HEADER"

Заказани задаци

    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"

Заказани задаци за подешавања. typeId и специфичан задатакtaskProperties/booleanTaskProperties можете погодити или:

  • из хијерархије Јава типова org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • провера ХТМЛ обрасца за креирање задатка у вашем претраживачу
  • од прегледа АЈАКС захтева у прегледачу када ручно подешавате задатак.

Својства задатка морају бити декларисана у исправном иамл блоку у зависности од њиховог типа:

  • taskProperties за сва својства стрингова (тј. имена складишта, имена спремишта, временски периоди...).
  • booleanTaskProperties за сва логичка својства (тј. углавном поља за потврду у ГУИ задатка креирања нексуса).

Rezervne kopije

      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)

Резервна копија неће бити конфигурисана док не промените nexus_backup_configure в true.
У овом случају, заказани задатак скрипте ће бити конфигурисан за покретање на Некус-у
у интервалу наведеном у nexus_backup_cron (подразумевано 21:00 сваки дан).
Погледајте [гроови шаблон за овај задатак](темплатес/бацкуп.гроови.ј2) за детаље.
Овај заказани задатак је независан од других nexus_scheduled_tasksкоји вам
објавите у својој свесци.

Ако желите да ротирате/избришете резервне копије, инсталирајте nexus_backup_rotate: true и конфигуришите број резервних копија које желите да сачувате користећи nexus_backup_keep_rotations (подразумевано 4).

Када користите ротацију, ако желите да уштедите додатни простор на диску током процеса прављења резервне копије,
Можете инсталирати nexus_backup_rotate_first: true. Ово ће конфигурисати пре-ротацију/брисање пре прављења резервне копије. Подразумевано, ротација се дешава након креирања резервне копије. Имајте на уму да у овом случају старе резервне копије
биће обрисан пре него што се направи тренутна резервна копија.

Поступак опоравка

Покрените плаибоок са параметром -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(на пример, 2017-12-17-21-00-00 за 17. децембар 2017. у 21:00

Уклањање нексуса

Упозорење: Ово ће потпуно избрисати ваше тренутне податке. Обавезно направите резервну копију раније ако је потребно

Користите променљиву nexus_purgeако треба да рестартујете испочетка и поново инсталирате некус инстанцу са уклоњеним свим подацима.

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

Промените лозинку администратора након прве инсталације

    nexus_default_admin_password: 'admin123'

Ово не треба мењати у вашој свесци. Ова променљива је попуњена подразумеваном Некус администраторском лозинком када се први пут инсталира и обезбеђује да можемо да променимо администраторску лозинку у nexus_admin_password.

Ако желите да промените администраторску лозинку након прве инсталације, можете је привремено променити у стару лозинку из командне линије. После промене nexus_admin_password у својој свесци можете покренути:

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

Телеграм канал на Некус Сонатипе: https://t.me/ru_nexus_sonatype

Само регистровани корисници могу учествовати у анкети. Пријавите се, Добродошао си.

Која спремишта артефаката користите?

  • Сонатипе Некус је бесплатан

  • Сонатипе Некус плаћени

  • Артифактура је бесплатна

  • Артифактура плаћена

  • Лука

  • Каша

Гласало је 9 корисника. 3 корисника су била уздржана.

Извор: ввв.хабр.цом

Додај коментар