αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Nexus Sonatype αžŠαŸ„αž™αž”αŸ’αžšαžΎαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αžΌαžŠ

Sonatype Nexus αž‚αžΊαž‡αžΆαžœαŸαž‘αž·αž€αžΆαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž˜αž½αž™ αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž’αžΆαž…αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ αžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹ Java (Maven) Docker, Python, Ruby, NPM, αžšαžΌαž”αž—αžΆαž– Bower, αž€αž‰αŸ’αž…αž”αŸ‹ RPM, gitlfs, Apt, Go, Nuget αž“αž·αž„αž…αŸ‚αž€αž…αžΆαž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžš Sonatype Nexus?

  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαž―αž€αž‡αž“;
  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž‰αž™αž€αž–αžΈαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž;

αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαžŠαŸ‚αž›αž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹ Sonatype Nexus αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ–

  • Java, Maven (αž–αžΆαž„)
  • Dockers
  • Python (pip)
  • Ruby (αžαŸ’αž”αžΌαž„)
  • NPM
  • αž”αŸŠαžΌαžœ
  • αž™αž˜ (rpm)
  • gitlfs
  • αž†αŸ…
  • αž’αžΆαž” (αžŠαŸαž”)
  • Go
  • αž“αžΌαž αŸ’αž‚αŸαž

αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™αžŸαž αž‚αž˜αž“αŸαŸ–

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž„
  • Conan
  • αžŸαŸŠαžΈαŸ” αžαž“
  • αž’αŸαž›αž”αŸ‰αžΆ
  • αž€αžΆαž“αŸ‹αžαŸ†αžŽαŸ‚αž„
  • P2
  • R

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Sonatype Nexus αžŠαŸ„αž™αž”αŸ’αžšαžΎ https://github.com/ansible-ThoTeam/nexus3-oss

αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžš

  • αž’αžΆαž“αž’αŸ†αž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ ansible αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ”
  • αžŠαŸ†αž‘αžΎαž„ ansible pip install ansible αž“αŸ…αž›αžΎαžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αžŸαŸ€αžœαž—αŸ…αž›αŸαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”
  • αž€αŸ†αžŽαžαŸ‹ geerlingguy.java αž“αŸ…αž›αžΎαžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αžŸαŸ€αžœαž—αŸ…αž›αŸαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”
  • αž€αŸ†αžŽαžαŸ‹ geerlingguy.apache αž“αŸ…αž›αžΎαžŸαŸ’αžαžΆαž“αžΈαž™αž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αžŸαŸ€αžœαž—αŸ…αž›αŸαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”
  • αžαž½αž“αžΆαž‘αžΈαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸ…αž›αžΎ 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 repositoriesαŸ”

---
- 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 repositories αž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ nexus αž’αŸ†αž‡αžΆαž„ 3.8.0, git lfs repo αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž’αŸ†αž‡αžΆαž„ 3.3.0 αŸ”αž›αŸ”)

nexus timezone αž‚αžΊαž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαžαŸ†αž”αž“αŸ‹αž–αŸαž›αžœαŸαž›αžΆ Java αžŠαŸ‚αž›αž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž€αž“αŸ’αžŸαŸ„αž˜ cron αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžš nexus_scheduled αŸ”

αž…αŸ’αžšαž€ Nexus αž“αž·αž„αž•αŸ’αž›αžΌαžœαž”αžšαž·αž”αž‘

    nexus_default_port: 8081
    nexus_default_context_path: '/'

αž…αŸ’αžšαž€ αž“αž·αž„αž•αŸ’αž›αžΌαžœαž”αžšαž·αž”αž‘αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ Java αŸ” 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 αŸ” αžŸαžΌαž˜αž€αž»αŸ†αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž’αžΆαž“ αž•αŸ’αž“αŸ‚αž€αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžšαž”αžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ Nexus αž αžΎαž™αž˜αž·αž“αž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαŸ”

αž‡αžΆαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž‘αžΈαž–αžΈαžš αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαžŠαž€αžŸαŸ’αžšαž„αŸ‹αž…αŸαž‰αž–αžΈαž―αž€αžŸαžΆαžšαžαžΆαž„αž›αžΎαŸ–

αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž’αŸ„αž™αž”αž„αŸ’αž€αžΎαž“αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† JVM heap αž›αžΎαžŸαž–αžΈαžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ„αŸ‡αž‘αŸαŸ” αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž’αžΆαž…αž˜αžΆαž“αž₯αž‘αŸ’αž’αž·αž–αž›αž•αŸ’αž‘αž»αž™αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž„αžΆαžšαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ”

αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„

    nexus_admin_password: 'changeme'

αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‚αžŽαž“αžΈ "αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αŸ” αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ‚αž›αžΎαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”. αžŸαžΌαž˜αž˜αžΎαž› [αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž›αžΎαž€αžŠαŸ†αž”αžΌαž„](# change-admin-password-after-first-install) αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžœαžΆαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαžαž½αž“αžΆαž‘αžΈαž˜αž½αž™αŸ”

αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž˜αž·αž“αž±αŸ’αž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž’αžαŸ’αžαž”αž‘αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ€αžœαž—αŸ…αž›αŸαž„αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎ [αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž” ansible-vault] (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, Nexus αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„ 127.0.0.1:8081 αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž˜αž·αž“αž˜αžΆαž“ αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαžΆαž˜αžšαž™αŸˆαž…αŸ’αžšαž€ HTTP 8081 αž–αžΈαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžαžΆαž„αž€αŸ’αžšαŸ…αŸ”

αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž‚αžΊ nexus_public_hostname. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžˆαŸ’αž˜αŸ„αŸ‡αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž”αžΆαž“αŸ” httpd_server_name αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžαŸ’αžαž“αŸαž™αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαŸ”

Π‘ httpd_copy_ssl_files: true (αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜) αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαžαžΆαž„αž›αžΎαž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžŸαŸ€αžœαž—αŸ…αž›αŸαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αŸ’αž“αž»αž„ 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) αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž‡αžΆαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αŸ”

αž”αž‰αŸ’αž‡αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹/αž‚αžŽαž“αžΈαž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€ (αž˜αž·αž“αž˜αŸ‚αž“ 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 αž“αŸ…αž›αžΎ 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 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ–

Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS αž“αž·αž„ yum repositories αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ–
αžŸαžΌαž˜αž˜αžΎαž› 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

Remote User Realm αž€αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ

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 αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž“αŸ…αž–αŸαž›αžšαŸ€αž”αž…αŸ†αž—αžΆαžšαž€αž·αž…αŸ’αž…αžŠαŸ„αž™αžŠαŸƒαŸ”

αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž€αž·αž…αŸ’αž…αž€αžΆαžšαžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€ 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
αž“αŸ…αž…αž“αŸ’αž›αŸ„αŸ‡αž–αŸαž›αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ nexus_backup_cron (αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ 21:00 αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒ) αŸ”
αžŸαžΌαž˜αž˜αžΎαž› [αž‚αŸ†αžšαžΌ groovy αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž“αŸαŸ‡](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

αž†αžΆαž“αŸ‚αž› Telegram αž“αŸ…αž›αžΎ Nexus SonatypeαŸ– https://t.me/ru_nexus_sonatype

αž˜αžΆαž“αžαŸ‚αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž“αŸαŸ‡αŸ” αž…αžΌαž›αžŸαžΌαž˜αŸ”

αžαžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžƒαŸ’αž›αžΆαŸ†αž„αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡?

  • Sonatype Nexus αž‚αžΊαž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ

  • Sonatype Nexus αž”αžΆαž“αž”αž„αŸ‹

  • Artifactory αž‚αžΊαž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ

  • αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ‹

  • αž€αŸ†αž–αž„αŸ‹αž•αŸ‚

  • αž•αžΌαžŸ

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ 9 αž“αžΆαž€αŸ‹αž”αžΆαž“αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ ៦៣ αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹