Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Nexus Sonatype ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја инфраструктурата ΠΊΠ°ΠΊΠΎ пристап Π΄ΠΎ ΠΊΠΎΠ΄

Sonatype Nexus Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€Π΅ΠΊΡƒ која ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° прокси, складираат ΠΈ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Π°Ρ‚ со Java (Maven) зависности, Docker, Python, Ruby, NPM, Bower слики, RPM ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, gitlfs, Apt, Go, Nuget ΠΈ Π΄Π° ја дистрибуираат Π½ΠΈΠ²Π½Π°Ρ‚Π° софтвСрска бСзбСдност.

Π—ΠΎΡˆΡ‚ΠΎ Π²ΠΈ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ Sonatype Nexus?

  • Π—Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ;
  • Π—Π° ΠΊΠ΅ΡˆΠΈΡ€Π°ΡšΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ ΡˆΡ‚ΠΎ сС ΠΏΡ€Π΅Π·Π΅ΠΌΠ°Π°Ρ‚ ΠΎΠ΄ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚;

АртСфакти ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ Π²ΠΎ основниот ΠΏΠ°ΠΊΠ΅Ρ‚ Sonatype Nexus:

  • Јава, МавСн (Ρ‚Π΅Π³Π»Π°)
  • ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ
  • ΠŸΠ°Ρ˜Ρ‚ΠΎΠ½ (ΠΏΠΈΠΏ)
  • Π ΡƒΠ±ΠΈΠ½ (скапоцСн ΠΊΠ°ΠΌΠ΅Π½)
  • НПМ
  • Π‘ΠΎΡƒΠ΅Ρ€
  • Yum (Π²Ρ€Ρ‚Π΅ΠΆΠΈ Π²ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Π°)
  • gitlfs
  • Π‘ΡƒΡ€ΠΎΠ²ΠΈΠ½ΠΈ
  • Апт (Π΄Π΅Π±)
  • Go
  • ΠΡƒΡŸΠ΅Ρ‚

АртСфакти ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ ΠΎΠ΄ Π·Π°Π΅Π΄Π½ΠΈΡ†Π°Ρ‚Π°:

  • ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€
  • Конан
  • CPAN
  • Π•Π›ΠŸΠ
  • ΠΊΠΎΡ€ΠΌΠΈΠ»ΠΎΡ‚ΠΎ
  • P2
  • R

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° Sonatype Nexus ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ https://github.com/ansible-ThoTeam/nexus3-oss

Π‘Π°Ρ€Π°ΡšΠ°

  • ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ansible Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.
  • Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ansible pip install ansible Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° станица ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Playbook.
  • НамСсти geerlingguy.java Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° станица ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Playbook.
  • НамСсти geerlingguy.apache Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° станица ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Playbook.
  • Оваа ΡƒΠ»ΠΎΠ³Π° Π΅ тСстирана Π½Π° CentOS 7, Ubuntu Xenial (16.04) ΠΈ Bionic (18.04), Debian Jessie ΠΈ Stretch
  • jmespath Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ инсталирана Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° станица ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° ΠΈΠ³Ρ€ΠΈ. Π—Π° Π΄Π° инсталиратС: sudo pip install -r requirements.txt
  • Π—Π°Ρ‡ΡƒΠ²Π°Ρ˜Ρ‚Π΅ ја Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Playbook (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ) Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° nexus.yml
  • Π˜Π·Π²Ρ€ΡˆΠ΅Ρ‚Π΅ ја ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° nexus ansible-playbook -i host nexus.yml

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ansible-playbook Π·Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ nexus Π±Π΅Π· LDAP со ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Maven (java), Docker, Python, Ruby, NPM, Bower, RPM ΠΈ 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'] }

Π‘Π½ΠΈΠΌΠΊΠΈ Π½Π° Π΅ΠΊΡ€Π°Π½ΠΎΡ‚:

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Nexus Sonatype ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја инфраструктурата ΠΊΠ°ΠΊΠΎ пристап Π΄ΠΎ ΠΊΠΎΠ΄

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Nexus Sonatype ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја инфраструктурата ΠΊΠ°ΠΊΠΎ пристап Π΄ΠΎ ΠΊΠΎΠ΄

ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡƒΠ»ΠΎΠ³ΠΈ

ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡƒΠ»ΠΎΠ³ΠΈ

ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ со стандардни врСдности (Π²ΠΈΠ΄ΠΈ default/main.yml):

ΠžΠΏΡˆΡ‚ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ

    nexus_version: ''
    nexus_timezone: 'UTC'

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, ΡƒΠ»ΠΎΠ³Π°Ρ‚Π° ќС ја инсталира Π½Π°Ρ˜Π½ΠΎΠ²Π°Ρ‚Π° достапна Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Nexus. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° со ΠΌΠ΅Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° nexus_version. Π’ΠΈΠ΄Π΅Ρ‚Π΅ Π³ΠΈ достапнитС Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° https://www.sonatype.com/download-oss-sonatype.

Ако сС ΠΏΡ€Π΅Ρ„Ρ€Π»ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ½ΠΎΠ²Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°, ΡƒΠ»ΠΎΠ³Π°Ρ‚Π° ќС сС ΠΎΠ±ΠΈΠ΄Π΅ Π΄Π° ја Π°ΠΆΡƒΡ€ΠΈΡ€Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Nexus.

Ако користитС постара Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Nexus ΠΎΠ΄ Π½Π°Ρ˜Π½ΠΎΠ²Π°Ρ‚Π°, Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΠΎΠ³Ρ€ΠΈΠΆΠΈΡ‚Π΅ Π΄Π° Π½Π΅ користитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡˆΡ‚ΠΎ Π½Π΅ сС достапни Π²ΠΎ инсталираното ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ…ΠΎΡΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ yum ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π΅ достапно Π·Π° nexus ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ ΠΎΠ΄ 3.8.0, git lfs repo Π·Π° нСксус ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ ΠΎΠ΄ 3.3.0 ΠΈΡ‚Π½.)

nexus timezone Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° врСмСнската Π·ΠΎΠ½Π° Јава, која ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ корисна Π²ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° со слСднитС cron ΠΈΠ·Ρ€Π°Π·ΠΈ Π·Π° nexus_scheduled Π·Π°Π΄Π°Ρ‡ΠΈ.

НСксус ΠΏΠΎΡ€Ρ‚Π° ΠΈ контСкстна ΠΏΠ°Ρ‚Π΅ΠΊΠ°

    nexus_default_port: 8081
    nexus_default_context_path: '/'

ΠŸΠΎΡ€Ρ‚Π°Ρ‚Π° ΠΈ контСкстната ΠΏΠ°Ρ‚Π΅ΠΊΠ° Π½Π° процСсот Π½Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Јава. nexus_default_context_path ΠΌΠΎΡ€Π° Π΄Π° содрТи коса Ρ†Ρ€Ρ‚Π° Π½Π°Π½Π°ΠΏΡ€Π΅Π΄ ΠΊΠΎΠ³Π° Π΅ поставСна, Π½Π° ΠΏΡ€. nexus_default_context_path: '/nexus/'.

ΠšΠΎΡ€ΠΈΡΠ½ΠΈΠΊ ΠΈ Π³Ρ€ΡƒΠΏΠ° Π½Π° Nexus OS

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

ΠšΠΎΡ€ΠΈΡΠ½ΠΈΠΊΠΎΡ‚ ΠΈ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΡˆΡ‚ΠΎ сС користат Π΄Π° посСдуваат Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Nexus ΠΈ Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ услугата, ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈ спорСд ΡƒΠ»ΠΎΠ³Π°Ρ‚Π° Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ Π΅Π΄Π½Π° нСдостасува.

    nexus_os_user_home_dir: '/home/nexus'

Π”ΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° стандардниот ΠΏΠΎΡ‡Π΅Ρ‚Π΅Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ Π·Π° корисникот Π½Π° nexus

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΈ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π½Π° Nexus

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

Nexus ΠΊΠ°Ρ‚Π°Π»ΠΎΠ·ΠΈ.

  • nexus_installation_dir содрТи инсталирани ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ
  • nexus_data_dir Π³ΠΈ содрТи ситС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° ΠΈ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Π½ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ. ΠŸΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ ΠΏΠ°Ρ‚Π΅ΠΊΠΈ Π½Π° blobstore nexus_data_dir ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΠΈ, Π²ΠΈΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ nexus_blobstores.
  • nexus_tmp_dir Π³ΠΈ содрТи ситС ΠΏΡ€ΠΈΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½Π°Ρ‚Π° ΠΏΠ°Ρ‚Π΅ΠΊΠ° Π·Π° redhat Π΅ прСмСстСна ΠΎΠ΄ /tmp Π΄Π° сС Π½Π°Π΄ΠΌΠΈΠ½Π°Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ со ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈΡ‚Π΅ Π·Π° автоматско Ρ‡ΠΈΡΡ‚Π΅ΡšΠ΅. Π’ΠΈΠ΄Π΅Ρ‚Π΅ #168.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° Nexus JVM

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

Ова сС стандарднитС поставки Π·Π° Nexus. Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ Π½Π΅ Π³ΠΈ ΠΌΠ΅Π½ΡƒΠ²Π°Ρ˜Ρ‚Π΅ ΠΎΠ²ΠΈΠ΅ врСдности Ако Π½Π΅ стС ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»Π΅ НСксус систСмски Π±Π°Ρ€Π°ΡšΠ° Π·Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π΄Π΅Π» ΠΈ Π½Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Π°Ρ‚ ΡˆΡ‚ΠΎ ΠΏΡ€Π°Π²Π°Ρ‚.

Како Π²Ρ‚ΠΎΡ€ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅, Π΅Π²Π΅ ΠΈΠ·Π²Π°Π΄ΠΎΠΊ ΠΎΠ΄ Π³ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚:

НС сС ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π° Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΊΡƒΠΏΠΎΡ‚ JVM Π½Π°Π΄ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡Π°Π½ΠΈΡ‚Π΅ врСдности Π²ΠΎ ΠΎΠ±ΠΈΠ΄ Π΄Π° сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ пСрформанситС. Ова Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° спротивСн Π΅Ρ„Π΅ΠΊΡ‚, ΡˆΡ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со Π½Π΅ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈΠΎΡ‚ систСм.

Администраторска Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°

    nexus_admin_password: 'changeme'

Π›ΠΎΠ·ΠΈΠ½ΠΊΠ°Ρ‚Π° Π½Π° смСтката β€žΠ°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€β€œ Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅. Ова Ρ€Π°Π±ΠΎΡ‚ΠΈ само Π½Π° ΠΏΡ€Π²Π°Ρ‚Π° стандардна ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°. Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ [Change admin password after first installing](# change-admin-password-after-first-install) Π°ΠΊΠΎ сакатС Π΄Π° ја ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΡ†Π½Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΡƒΠ»ΠΎΠ³Π°.

Π‘ΠΈΠ»Π½ΠΎ сС ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π° Π΄Π° Π½Π΅ ја Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°Ρ‚Π΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°Ρ‚Π° Π²ΠΎ јасСн тСкст Π²ΠΎ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° ΠΈΠ³Ρ€ΠΈ, Ρ‚ΡƒΠΊΡƒ Π΄Π° користитС [ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°ΡšΠ΅ со помош Π½Π° свод] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (ΠΈΠ»ΠΈ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΎ ΠΈΠ»ΠΈ Π²ΠΎ посСбна Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π²Ρ‡ΠΈΡ‚Π°Π½Π° со Π½Π° ΠΏΡ€. include_vars)

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ΅Π½ пристап

    nexus_anonymous_access: false

Анонимниот пристап Π΅ стандардно ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ повСќС Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ΅Π½ пристап.

ЈавСн домаќин

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

ЦСлосно ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΡƒΠ²Π°Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ Π½Π° Π΄ΠΎΠΌΠ΅Π½ ΠΈ шСма (https ΠΈΠ»ΠΈ http) спорСд ΠΊΠΎΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ Π½Π° Nexus ќС Π±ΠΈΠ΄Π΅ достапСн Π·Π° своитС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ.

ΠŸΡ€ΠΈΡΡ‚Π°ΠΏ Π΄ΠΎ API Π·Π° ΠΎΠ²Π°Π° ΡƒΠ»ΠΎΠ³Π°

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

ОвиС ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ ΠΊΠ°ΠΊΠΎ ΡƒΠ»ΠΎΠ³Π°Ρ‚Π° сС ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° со Nexus API Π·Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅.
Π‘Π°ΠΌΠΎ Π·Π° Π½Π°ΠΏΡ€Π΅Π΄Π½ΠΈ корисници. Π’Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Π½Π΅ сакатС Π΄Π° Π³ΠΈ ΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ ΠΎΠ²ΠΈΠ΅ стандардни поставки

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π΅Π½ прокси

    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

НамСсти SSL ΠΎΠ±Ρ€Π°Ρ‚Π΅Π½ прокси.
Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, Ρ‚Ρ€Π΅Π±Π° Π΄Π° инсталиратС httpd. Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°: ΠΊΠΎΠ³Π° Π·Π° httpd_setup_enable поставСна врСдностtrue, нСксус ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΈ 127.0.0.1:8081, Π½Π° Ρ‚ΠΎΡ˜ Π½Π°Ρ‡ΠΈΠ½ НСма сС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ достапни ΠΏΡ€Π΅ΠΊΡƒ HTTP ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° 8081 ΠΎΠ΄ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½Π°Ρ‚Π° IP адрСса.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ Π½Π° домаќин ΡˆΡ‚ΠΎ сС користи Π΅ nexus_public_hostname. Ако Π²ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ имиња ΠΏΠΎΡ€Π°Π΄ΠΈ нСкоја ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставитС httpd_server_name со ΠΏΠΎΠΈΠ½Π°ΠΊΠ²ΠΎ Π·Π½Π°Ρ‡Π΅ΡšΠ΅.

Π‘ httpd_copy_ssl_files: true (ΠΏΠΎ Π΄ΠΈΡ„ΠΎΠ»Ρ‚) Π³ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡ‚Π΅ сСртификати Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π½Π° Playbook ΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΊΠΎΠΏΠΈΡ€Π°Π½ΠΈ Π½Π° сСрвСрот ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ apache.

Ако сакатС Π΄Π° Π³ΠΈ користитС постоСчкитС сСртификати Π½Π° сСрвСрот, ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ 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]"

ΠŸΠΎΡΡ‚Π°Π²Π΅Ρ‚Π΅ стандардна адрСса Π·Π° Π΅-ΠΏΠΎΡˆΡ‚Π° Π½Π° администраторот

LDAP ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°

LDAP-врскитС ΠΈ бСзбСдносното ΠΏΠΎΠ΄Ρ€Π°Ρ‡Ρ˜Π΅ сС стандардно ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ

    nexus_ldap_realm: false
    ldap_connections: []

LDAP врски, сСкој Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

    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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ LDAP ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π° Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° (Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎ Π²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅), ΠΎΠ²Π° Π΅ исто Ρ‚Π°ΠΊΠ° β€žΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°β€œ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°:

    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'

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° LDAP Π·Π° Сдноставна Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° (со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° 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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ LDAP ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° Сдноставна Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° (со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° смСтката 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_map_groups_as_roles: true
        ldap_group_base_dn: 'ou=groups'
        ldap_group_object_class: 'groupOfNames'
        ldap_group_id_attribute: 'cn'
        ldap_group_member_attribute: 'member'
        ldap_group_member_format: 'uid=${username},ou=users,dc=mycompany,dc=net'
        ldap_group_subtree: false

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ LDAP ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° Сдноставна Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° (со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° смСтката 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_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

Листа ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π·Π° поставкитС. ΠŸΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ја Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ GUI Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС постават Π²ΠΎ зависност ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ˜Π°Ρ‚Π°.

ОвиС Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ со слСднитС стандардни врСдности:

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

Π£Π»ΠΎΠ³ΠΈ (Π²ΠΎ Nexus ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈ)

    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

Бписок Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ (Π½Π΅-LDAP) корисници/смСтки Π·Π° создавањС Π²ΠΎ nexus.

Бписок Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ (Π½Π΅-LDAP) корисници/смСтки Π·Π° создавањС Π²ΠΎ Nexus.

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

Ldap ΠΌΠ°ΠΏΠΈΡ€Π°ΡšΠ΅ Π½Π° корисници/ΡƒΠ»ΠΎΠ³ΠΈ. Π΄Ρ€ΠΆΠ°Π²Π° absent ќС Π³ΠΈ отстрани ΡƒΠ»ΠΎΠ³ΠΈΡ‚Π΅ ΠΎΠ΄ постоСчки корисник Π°ΠΊΠΎ вСќС постои.
ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Ldap Π½Π΅ сС Π±Ρ€ΠΈΡˆΠ°Ρ‚. ΠžΠ±ΠΈΠ΄ΠΎΡ‚ Π΄Π° поставитС ΡƒΠ»ΠΎΠ³Π° Π·Π° нСпостоСчки корисник ќС Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со Π³Ρ€Π΅ΡˆΠΊΠ°.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π½Π° содрТина

  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

Blobstores ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°

    nexus_delete_default_repos: false

Π˜Π·Π±Ρ€ΠΈΡˆΠ΅Ρ‚Π΅ Π³ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°Ρ‚Π° ΠΎΠ΄ ΠΏΠΎΡ‡Π΅Ρ‚Π½Π°Ρ‚Π° стандардна ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° nexus. Овој Ρ‡Π΅ΠΊΠΎΡ€ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° само ΠΏΡ€ΠΈ ΠΏΡ€Π²Π°Ρ‚Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° (ΠΊΠΎΠ³Π° nexus_data_dir Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅Π½ ΠΏΡ€Π°Π·Π΅Π½).

ΠžΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° ΠΎΠ΄ стандардната стандардна ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° Nexus. Овој Ρ‡Π΅ΠΊΠΎΡ€ сС ΠΈΠ·Π²Π΅Π΄ΡƒΠ²Π° само ΠΏΡ€ΠΈ ΠΏΡ€Π²Π°Ρ‚Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° (ΠΊΠΎΠ³Π° nexus_data_dir ΠΏΡ€Π°Π·Π΅Π½).

    nexus_delete_default_blobstore: false

Π˜Π·Π±Ρ€ΠΈΡˆΠ΅Ρ‚Π΅ Π³ΠΎ стандардниот blobstore ΠΎΠ΄ ΠΏΠΎΡ‡Π΅Ρ‚Π½Π°Ρ‚Π° стандардна ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° nexus. Ова ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ само Π°ΠΊΠΎ 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 }}"

Blobstores Π΄Π° создадС. ΠŸΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π½Π° blobstore ΠΈ blobstore Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π°Ρ‚ ΠΏΠΎ ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎΡ‚ΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ (сСкоС Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ²Π΄Π΅ ќС сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΡ‚ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅).

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° blobstore Π½Π° S3 Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΎ ΠΊΠ°ΠΊΠΎ погодност ΠΈ Π½Π΅ Π΅ Π΄Π΅Π» ΠΎΠ΄ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ тСстови ΡˆΡ‚ΠΎ Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΠΌΠ΅ Π½Π° travis. Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° S3 сС ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π° само Π·Π° случаи распорСдСни Π½Π° AWS.

БоздавањС Blobstores. ΠŸΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π°Ρ‚ ΠΏΠΎ ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎΡ‚ΠΎ создавањС (сСкоС Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ²Π΄Π΅ ќС сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π° ΠΊΠΎΠ³Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ќС сС инсталира).

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° blob storage Π½Π° S3 Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΎ ΠΊΠ°ΠΊΠΎ погодност. Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ S3 сС ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π° само Π·Π° случаи распорСдСни Π½Π° 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

ΠŸΠΎΠ³ΠΎΡ€Π΅ Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° прокси-сСрвСр МавСн

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

Maven хостирани ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°. НСгативната ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΊΠ΅ΡˆΠΎΡ‚ Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½Π° ΠΈ стандардно ќС Π³ΠΈ ΠΈΠΌΠ° Π³ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡ‚Π΅ врСдности Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ сС ΠΈΡΠΏΡƒΡˆΡ‚ΠΈ.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° хостирани ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° МСјвСн. НСгативната ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΊΠ΅ΡˆΠΎΡ‚ (-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

Π’ΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS ΠΈ yum:
Π²ΠΈΠ΄ΠΈ defaults/main.yml Π·Π° ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ:

Π”ΠΎΠΊΠ΅Ρ€, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS ΠΈ yum ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°Ρ‚Π° сС стандардно ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ:
Π’ΠΈΠ΄ΠΈ 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

Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Π±ΠΈ ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ бСзбСдносни опсСзи Π°ΠΊΠΎ сакатС Π΄Π° користитС Π΄Ρ€ΡƒΠ³ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° освСн maven. Ова Π΅ стандардно Π»Π°ΠΆΠ½ΠΎ

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 ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ³ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ:

  • ΠΎΠ΄ Ρ…ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ˜Π°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°Ρ€ΠΎΡ‚ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ HTML Π·Π°Π΄Π°Ρ‡Π° Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ прСлистувач
  • ΠΎΠ΄ ΠΏΡ€Π΅Π³Π»Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π±Π°Ρ€Π°ΡšΠ° Π·Π° AJAX Π²ΠΎ прСлистувачот ΠΏΡ€ΠΈ Ρ€Π°Ρ‡Π½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π·Π°Π΄Π°Ρ‡Π°.

Π‘Π²ΠΎΡ˜ΡΡ‚Π²Π°Ρ‚Π° Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈΠΎΡ‚ јамл Π±Π»ΠΎΠΊ Π²ΠΎ зависност ΠΎΠ΄ Π½ΠΈΠ²Π½ΠΈΠΎΡ‚ Ρ‚ΠΈΠΏ:

  • taskProperties Π·Π° ситС ΡΠ²ΠΎΡ˜ΡΡ‚Π²Π° Π½Π° Π½ΠΈΠ·Π°Ρ‚Π° (Ρ‚.Π΅. имиња Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅, имиња Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°, врСмСнски ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈ...).
  • booleanTaskProperties Π·Π° ситС Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ ΡΠ²ΠΎΡ˜ΡΡ‚Π²Π° (Ρ‚.Π΅. Π³Π»Π°Π²Π½ΠΎ полиња Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π²ΠΎ GUI Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π·Π° создавањС Π½Π° нСксус).

Π Π΅Π·Π΅Ρ€Π²Π½ΠΈ ΠΊΠΎΠΏΠΈΠΈ

      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
Π²ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΡ‚ Π½Π°Π²Π΅Π΄Π΅Π½ Π²ΠΎ nexus_backup_cron (стандардно 21:00 сСкој Π΄Π΅Π½).
Π’ΠΈΠ΄Π΅Ρ‚Π΅ [groovy template Π·Π° ΠΎΠ²Π°Π° Π·Π°Π΄Π°Ρ‡Π°](templates/backup.groovy.j2) Π·Π° Π΄Π΅Ρ‚Π°Π»ΠΈ.
Оваа Π·Π°ΠΊΠ°ΠΆΠ°Π½Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ нСзависна ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ 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Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС рСстартиратС ΠΎΠ΄ Π½ΡƒΠ»Π° ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π΄Π° ја инсталиратС инстанцата Π½Π° nexus со отстранСти ситС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

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

ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ ја администраторската Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° ΠΏΠΎ ΠΏΡ€Π²Π°Ρ‚Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°

    nexus_default_admin_password: 'admin123'

Ова Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΌΠ΅Π½ΡƒΠ²Π° Π²ΠΎ Π²Π°ΡˆΠ°Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° Π·Π° ΠΈΠ³Ρ€ΠΈ. Оваа ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΅ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Ρ‚Π° со стандардната Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° администратор Π½Π° Nexus ΠΊΠΎΠ³Π° ΠΏΡ€Π²ΠΏΠ°Ρ‚ сС инсталира ΠΈ осигурува Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ја смСнимС административната Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π²ΠΎ nexus_admin_password.

Ако сакатС Π΄Π° ја смСнитС администраторската Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° ΠΏΠΎ ΠΏΡ€Π²Π°Ρ‚Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΎ Π΄Π° ја смСнитС Π½Π° старата Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија. По ΠΏΡ€ΠΎΠΌΠ΅Π½Π°Ρ‚Π° nexus_admin_password Π²ΠΎ Π²Π°ΡˆΠ°Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° Π·Π° ΠΈΠ³Ρ€ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅:

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

ВСлСграмски ΠΊΠ°Π½Π°Π» Π½Π° Nexus Sonatype: https://t.me/ru_nexus_sonatype

Π‘Π°ΠΌΠΎ рСгистрирани корисници ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° учСствуваат Π²ΠΎ Π°Π½ΠΊΠ΅Ρ‚Π°Ρ‚Π°. Најави сС, Π²ΠΈΠ΅ стС Π΄ΠΎΠ±Ρ€Π΅Π΄ΠΎΡ˜Π΄Π΅Π½ΠΈ.

Кои ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π·Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ Π³ΠΈ користитС?

  • Sonatype Nexus Π΅ бСсплатСн

  • Sonatype Nexus ΠΏΠ»Π°Ρ‚ΠΈ

  • ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π΅ бСсплатна

  • АртСфакторно ΠΏΠ»Π°Ρ‚Π΅Π½ΠΎ

  • ΠŸΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π΅

  • Π•Π²Ρ‚ΠΈΠ½ΠΈ

Гласаа 9 корисници. 3 корисници сС Π²ΠΎΠ·Π΄Ρ€ΠΆΠ°Π°.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€