āϕ⧋āĻĄ āĻ…ā§āϝāĻžāĻĒā§āϰ⧋āϚ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Nexus Sonatype āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž

āϏ⧋āύāĻžāϟāĻžāχāĻĒ āύ⧇āĻ•ā§āϏāĻžāϏ āĻšāϞ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¨ā§āĻŦāĻŋāϤ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϝāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāϰāĻž āϜāĻžāĻ­āĻž (āĻŽā§āϝāĻžāϭ⧇āύ) āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž, āĻĄāĻ•āĻžāϰ, āĻĒāĻžāχāĻĨāύ, āϰ⧁āĻŦāĻŋ, āĻāύāĻĒāĻŋāĻāĻŽ, āĻŦā§‹āϝāĻŧāĻžāϰ āχāĻŽā§‡āϜ, RPM āĻĒā§āϝāĻžāϕ⧇āϜ, gitlfs, Apt, Go, Nuget āĻĒā§āϰāĻ•ā§āϏāĻŋ, āϏāĻžā§āϚāϝāĻŧ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϕ⧇āύ āφāĻĒāύāĻŋ Sonatype āύ⧇āĻ•ā§āϏāĻžāϏ āĻĒā§āϰāϝāĻŧā§‹āϜāύ?

  • āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āύāĻŋāĻĻāĻ°ā§āĻļāύ āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ;
  • āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āĻĨ⧇āϕ⧇ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻž āφāĻ°ā§āϟāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟ āĻ•ā§āϝāĻžāĻļ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ;

āĻŽā§ŒāϞāĻŋāĻ• āϏ⧋āύāĻžāϟāĻžāχāĻĒ āύ⧇āĻ•ā§āϏāĻžāϏ āĻĒā§āϝāĻžāϕ⧇āĻœā§‡ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻļāĻŋāĻ˛ā§āĻĒāĻ•āĻ°ā§āĻŽ:

  • āϜāĻžāĻ­āĻž, āĻŽāĻžāϭ⧇āύ (āϜāĻžāϰ)
  • āĻĄāĻ•āĻļā§āϰāĻŽāĻŋāĻ•
  • āĻĒāĻžāχāĻĨāύ (āĻĒāĻŋāĻĒ)
  • āϰ⧁āĻŦāĻŋ (āϰāĻ¤ā§āύ)
  • NPM
  • āĻŦā§‹āϰ
  • āχāϝāĻŧāĻžāĻŽ (āφāϰāĻĒāĻŋāĻāĻŽ)
  • gitlfs
  • āĻ•āĻžāρāϚāĻž
  • Apt (āĻĻ⧇āĻŦ)
  • Go
  • āύāĻžāϗ⧇āϟ

āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻļāĻŋāĻ˛ā§āĻĒāĻ•āĻ°ā§āĻŽ:

  • āϏ⧁āϰāĻ•āĻžāϰ
  • āϕ⧋āύāĻžāύ
  • āϏāĻŋāĻĒāĻŋāĻāĻāύ
  • āχāĻāϞāĻĒāĻŋāĻ
  • āĻšāĻžāϞ
  • P2
  • R

āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏ⧋āύāĻžāϟāĻžāχāĻĒ āύ⧇āĻ•ā§āϏāĻžāϏ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ https://github.com/ansible-ThoTeam/nexus3-oss

āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž

  • āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĒāĻĄāĻŧ⧁āύāĨ¤
  • āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ pip install ansible āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻ¸ā§āĻŸā§‡āĻļāύ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϞ⧇āĻŦ⧁āĻ• āϚāϞ⧇āĨ¤
  • āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ geerlingguy.java āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻ¸ā§āĻŸā§‡āĻļāύ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϞ⧇āĻŦ⧁āĻ• āϚāϞ⧇āĨ¤
  • āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ geerlingguy.apache āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻ¸ā§āĻŸā§‡āĻļāύ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϞ⧇āĻŦ⧁āĻ• āϚāϞ⧇āĨ¤
  • āĻāχ āĻ­ā§‚āĻŽāĻŋāĻ•āĻžāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ CentOS 7, Ubuntu āĻœā§‡āύāĻŋāϝāĻŧāĻžāϞ (16.04) āĻāĻŦāĻ‚ āĻŦāĻžāϝāĻŧā§‹āύāĻŋāĻ• (18.04), Debian āĻœā§‡āϏāĻŋ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϰ⧇āϚ
  • jmespath āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϟāĻŋ āĻ…āĻŦāĻļā§āϝāχ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻ¸ā§āĻŸā§‡āĻļāύ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϞ⧇āĻŦ⧁āĻ• āϚāϞāϛ⧇āĨ¤ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž: sudo pip install -r requirements.txt
  • āĻĒā§āϞ⧇āĻŦ⧁āĻ• āĻĢāĻžāχāϞāϟāĻŋ (āύ⧀āĻšā§‡āϰ āωāĻĻāĻžāĻšāϰāĻŖ) nexus.yml āĻĢāĻžāχāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ
  • āύ⧇āĻ•ā§āϏāĻžāϏ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āϚāĻžāϞāĻžāύ ansible-playbook -i host nexus.yml

Maven (java), Docker, Python, Ruby, NPM, Bower, RPM āĻāĻŦāĻ‚ gitlfs āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āϏāĻžāĻĨ⧇ LDAP āĻ›āĻžāĻĄāĻŧāĻž āύ⧇āĻ•ā§āϏāĻžāϏ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝ-āĻĒā§āϞ⧇āĻŦ⧁āĻ• āωāĻĻāĻžāĻšāϰāĻŖāĨ¤

---
- 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: support@company.com
        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_version. āωāĻĒāϞāĻŦā§āϧ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĻ⧇āϖ⧁āύ https://www.sonatype.com/download-oss-sonatype.

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āύ, āĻ­ā§‚āĻŽāĻŋāĻ•āĻžāϟāĻŋ āφāĻĒāύāĻžāϰ Nexus āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŦ⧇⧎

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āύ⧇āĻ•ā§āϏāĻžāϏ⧇āϰ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ• āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻĒ⧁āϰāĻžāύ⧋ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϰ āύāĻŋāĻļā§āϚāĻŋāϤ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āϝ⧇ āφāĻĒāύāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϰāĻŋāϞāĻŋāĻœā§‡ āωāĻĒāϞāĻŦā§āϧ āύāϝāĻŧ āĻāĻŽāύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇āύ āύāĻž (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, 3.8.0-āĻāϰ āĻŦ⧇āĻļāĻŋ āύ⧇āĻ•ā§āϏāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ yum āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āωāĻĒāϞāĻŦā§āϧ, git lfs repo 3.3.0 āĻāϰ āĻŦ⧇āĻļāĻŋ āύ⧇āĻ•ā§āϏāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ)

nexus timezone āĻāϟāĻŋ āϜāĻžāĻ­āĻž āϟāĻžāχāĻŽ āĻœā§‹āύ⧇āϰ āύāĻžāĻŽ, āϝāĻž nexus_scheduled āĻ•āĻžāĻœā§‡āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•ā§āϰ⧋āύ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āĻ¤ā§āϰ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āύ⧇āĻ•ā§āϏāĻžāϏ āĻĒā§‹āĻ°ā§āϟ āĻāĻŦāĻ‚ āĻĒā§āϰāϏāĻ™ā§āĻ— āĻĒāĻĨ

    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 āĻĢāĻžāχāϞ⧇āϰ āĻŽāĻžāϞāĻŋāĻ• āĻāĻŦāĻ‚ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻāĻŦāĻ‚ āĻ—ā§‹āĻˇā§āĻ ā§€ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻĨāĻžāĻ•āϞ⧇ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻĻā§āĻŦāĻžāϰāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤

    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 āϏāĻŽāĻ¸ā§āϤ āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĢāĻžāχāϞ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ redhat-āĻāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĒāĻžāĻĨ āĻĨ⧇āϕ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ /tmp āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻĒāϰāĻŋāĻ¸ā§āĻ•āĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āĻ•āĻžāϟāĻŋāϝāĻŧ⧇ āωāĻ āϤ⧇āĨ¤ āĻĻ⧇āϖ⧁āύ #168āĨ¤

Nexus JVM āĻŽā§‡āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

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

āĻāϗ⧁āϞāĻŋ āύ⧇āĻ•ā§āϏāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏ⧇āϟāĻŋāĻ‚āϏ⧎ āĻāχ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŦ⧇āύ āύāĻž āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ āϝāĻĻāĻŋ āύāĻž āĻĒāĻĄāĻŧ⧇ āĻĨāĻžāϕ⧇āύ āύ⧇āĻ•ā§āϏāĻžāϏ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āĻŽā§‡āĻŽāϰāĻŋ āĻŦāĻŋāĻ­āĻžāĻ— āĻāĻŦāĻ‚ āϤāĻžāϰāĻž āĻ•āĻŋ āĻ•āϰāϛ⧇ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤

āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϏāϤāĻ°ā§āĻ•āϤāĻž āĻšāĻŋāϏāĻžāĻŦ⧇, āĻāĻ–āĻžāύ⧇ āωāĻĒāϰ⧇āϰ āύāĻĨāĻŋ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āωāĻĻā§āϧ⧃āϤāĻŋ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϞ:

āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧāĻžāϏ⧇ āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻŦāĻžāχāϰ⧇ JVM āĻšāĻŋāĻĒ āĻŽā§‡āĻŽāϰāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋āϰ āϏ⧁āĻĒāĻžāϰāĻŋāĻļ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāϟāĻŋ āφāϏāϞ⧇ āĻŦāĻŋāĻĒāϰ⧀āϤ āĻĒā§āϰāĻ­āĻžāĻŦ āĻĢ⧇āϞāϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻžāϰ āĻĢāϞ⧇ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ•āĻžāϜ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻĒā§āϰāĻļāĻžāϏāϕ⧇āϰ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ

    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

āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϝ⧋āĻ—ā§āϝāϤāĻžāϏāĻŽā§āĻĒāĻ¨ā§āύ āĻĄā§‹āĻŽā§‡āύ āύāĻžāĻŽ āĻāĻŦāĻ‚ āĻ¸ā§āĻ•āĻŋāĻŽ (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: "admin@example.com"
    httpd_ssl_certificate_file: 'files/nexus.vm.crt'
    httpd_ssl_certificate_key_file: 'files/nexus.vm.key'
    # httpd_ssl_certificate_chain_file: "{{ httpd_ssl_certificate_file }}"
    httpd_copy_ssl_files: true

āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ SSL āϰāĻŋāĻ­āĻžāĻ°ā§āϏ āĻĒā§āϰāĻ•ā§āϏāĻŋ.
āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϕ⧇ httpd āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ: āĻ•āĻ–āύ āϜāĻ¨ā§āϝ httpd_setup_enable āĻŽāĻžāύ āϏ⧇āϟ āĻ•āϰ⧁āύtrue, āύ⧇āĻ•ā§āϏāĻžāϏ āĻĒāϰāĻŋāϚāĻŋāϤāĻŋ 127.0.0.1:8081, āĻāχāĻ­āĻžāĻŦ⧇ āύāĻž āĻŦāĻžāĻšā§āϝāĻŋāĻ• IP āĻ āĻŋāĻ•āĻžāύāĻž āĻĨ⧇āϕ⧇ HTTP āĻĒā§‹āĻ°ā§āϟ 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: "admin@example.com"

āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ āχāĻŽā§‡āϞ āĻ āĻŋāĻ•āĻžāύāĻž āϏ⧇āϟ āĻ•āϰ⧁āύ

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_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: support@company.com
      #   password: "s3cr3t"
      #   roles:
      #     - developers # role ID

āύ⧇āĻ•ā§āϏāĻžāϏ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ (āύāύ-āĻāϞāĻĄāĻŋāĻāĻĒāĻŋ) āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀/āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

Nexus-āĻ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ (āύāύ-LDAP) āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀/āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡āϰ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤

      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

āĻŦā§āϞāĻŦāĻ¸ā§āĻŸā§‹āϰ āĻāĻŦāĻ‚ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ

    nexus_delete_default_repos: false

āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āύ⧇āĻ•ā§āϏāĻžāϏ āĻĨ⧇āϕ⧇ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞāϗ⧁āϞāĻŋ āĻŽā§āϛ⧁āύāĨ¤ āĻāχ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāĻž āĻšāϝāĻŧ (āϝāĻ–āύ nexus_data_dir āĻ–āĻžāϞāĻŋ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇)āĨ¤

Nexus-āĻāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĨ⧇āϕ⧇ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāĻšā§āϛ⧇āĨ¤ āĻāχ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĒā§āϰāĻĨāĻŽ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āϏāĻžā§āϚāĻžāϞāĻŋāϤ āĻšāϝāĻŧ (āϝāĻ–āύ 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 }}"

āĻŦā§āϞāĻŦāĻ¸ā§āĻŸā§‹āϰāϏ āϤ⧈āϰ⧀ āĻ•āϰāϤ⧇. āĻāĻ•āϟāĻŋ āĻŦā§āϞāĻŦāĻ¸ā§āĻŸā§‹āϰ āĻĒāĻžāĻĨ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻŦā§āϞāĻŦāĻ¸ā§āĻŸā§‹āϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āϤ⧈āϰāĻŋāϰ āĻĒāϰ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āϝāĻžāĻŦ⧇ āύāĻž (āĻāĻ–āĻžāύ⧇ āϝ⧇āϕ⧋āύ āφāĻĒāĻĄā§‡āϟ āĻĒ⧁āύāσāĻĒā§āϰāĻ­āĻŋāĻļāύāĻŋāĻ‚ āĻ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻŦ⧇)āĨ¤

S3 āĻ āĻŦā§āϞāĻŦāĻ¸ā§āĻŸā§‹āϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āϏ⧁āĻŦāĻŋāϧāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻŸā§āĻ°ā§āϝāĻžāĻ­āĻŋāϏ⧇ āϝ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻž āϚāĻžāϞāĻžāχ āϤāĻžāϰ āĻ…āĻ‚āĻļ āύāϝāĻŧāĨ¤ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ S3 āĻ āϏāĻžā§āϚāϝāĻŧ āĻ•āϰāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ AWS-āĻ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āϏ⧁āĻĒāĻžāϰāĻŋāĻļ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āϏ⧃āĻˇā§āϟāĻŋ āĻŦā§āϞāĻŦāĻ¸ā§āĻŸā§‹āϰāϏ. āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĒāĻžāĻĨ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āϤ⧈āϰāĻŋāϰ āĻĒāϰ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āϝāĻžāĻŦ⧇ āύāĻž (āφāĻŦāĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻ–āĻžāύ⧇ āϝ⧇ āϕ⧋āύ⧋ āφāĻĒāĻĄā§‡āϟ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻŦ⧇)āĨ¤

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"

āĻŽā§āϝāĻžāϭ⧇āύ āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāĻž āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ. āύ⧇āϤāĻŋāĻŦāĻžāϚāĻ• āĻ•ā§āϝāĻžāĻļ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϐāĻšā§āĻ›āĻŋāĻ• āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āĻŦāĻžāĻĻ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ āϤāĻŦ⧇ āωāĻĒāϰ⧇āϰ āĻŽāĻžāύāϗ⧁āϞāĻŋāϤ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻšāĻŦ⧇āĨ¤

āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāĻž āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻŽāĻžāϭ⧇āύāĨ¤ āύ⧇āϤāĻŋāĻŦāĻžāϚāĻ• āĻ•ā§āϝāĻžāĻļ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ (-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 āĻāχ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ:

Docker, 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

āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŽā§āϝāĻžāϭ⧇āύ āĻŦā§āϝāϤ⧀āϤ āĻ…āĻ¨ā§āϝ āϧāϰāύ⧇āϰ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŋāϛ⧁ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āϏ⧁āϝ⧋āĻ— āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āĻŽāĻŋāĻĨā§āϝāĻž

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: alerts@example.org  # 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: alerts@example.org  # 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: alerts@example.org  # 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: alerts@example.org  # optional
    #    taskProperties:
    #      age: "24"

āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻžāĻŽāĻžāĻĢāĻŋāĻ• āĻ•āĻžāϜ āϏ⧇āϟāĻŋāĻ‚āϏ⧇āϰ āϜāĻ¨ā§āϝāĨ¤ typeId āĻāĻŦāĻ‚ āϟāĻžāĻ¸ā§āĻ• āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟtaskProperties/booleanTaskProperties āφāĻĒāύāĻŋ āĻšāϝāĻŧ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

  • āϜāĻžāĻ­āĻž āϟāĻžāχāĻĒ āĻ…āύ⧁āĻ•ā§āϰāĻŽ āĻĨ⧇āϕ⧇ org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • āφāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ HTML āϟāĻžāĻ¸ā§āĻ• āϤ⧈āϰāĻŋāϰ āĻĢāĻ°ā§āĻŽ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇
  • āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻāĻ•āϟāĻŋ āϟāĻžāĻ¸ā§āĻ• āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ AJAX āĻ…āύ⧁āϰ⧋āϧāϗ⧁āϞāĻŋ āĻĻ⧇āĻ–āĻž āĻĨ⧇āϕ⧇āĨ¤

āϟāĻžāĻ¸ā§āϕ⧇āϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϕ⧇ āϤāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻ•āĻžāϰ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āϏāĻ āĻŋāĻ• yaml āĻŦā§āϞāϕ⧇ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

  • 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_backup_cron (āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻĄāĻŋāĻĢāĻ˛ā§āϟ 21:00)āĨ¤
āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ [āĻāχ āĻ•āĻžāĻœā§‡āϰ āϜāĻ¨ā§āϝ āĻ—ā§āϰ⧋āĻ­āĻŋ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ](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āϝāĻĻāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻĨ⧇āϕ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻŽāĻ¸ā§āϤ āĻĄā§‡āϟāĻž āϏāϰāĻŋāϝāĻŧ⧇ āύ⧇āĻ•ā§āϏāĻžāϏ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏ āĻĒ⧁āύāϰāĻžāϝāĻŧ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤

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 āϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻŦāĻŋāϰāϤ āĻ›āĻŋāϞ⧇āύāĨ¤

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster