เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‹ เช•เซ‹เชก เช…เชญเชฟเช—เชฎ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Nexus Sonatype เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

Sonatype Nexus เช เชเช• เชธเช‚เช•เชฒเชฟเชค เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช›เซ‡ เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชตเชฒเชชเชฐเซเชธ Java (Maven) เช…เชตเชฒเช‚เชฌเชจ, Docker, Python, Ruby, NPM, Bower เช‡เชฎเซ‡เชœ, RPM เชชเซ‡เช•เซ‡เชœเซ‹, gitlfs, Apt, Go, Nuget เชจเซ‡ เชชเซเชฐเซ‹เช•เซเชธเซ€, เชธเซเชŸเซ‹เชฐ เช…เชจเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชธเซเชฐเช•เซเชทเชพเชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชคเชฎเชจเซ‡ เชธเซ‹เชจเชพเชŸเชพเช‡เชช เชจเซ‡เช•เซเชธเชธเชจเซ€ เช•เซ‡เชฎ เชœเชฐเซ‚เชฐ เช›เซ‡?

  • เช–เชพเชจเช—เซ€ เช•เชฒเชพเช•เซƒเชคเชฟเช“ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡;
  • เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐเชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เช•เชฒเชพเช•เซƒเชคเชฟเช“ เช•เซ‡เชถ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡;

เชฎเซ‚เชณเชญเซ‚เชค Sonatype Nexus เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เช†เชงเชพเชฐเชญเซ‚เชค เช•เชฒเชพเช•เซƒเชคเชฟเช“:

  • เชœเชพเชตเชพ, เชฎเชพเชตเซ‡เชจ (เชœเชพเชฐ)
  • Docker
  • เช…เชœเช—เชฐ (เชชเซ€เชช)
  • เชฐเซ‚เชฌเซ€ (เชฐเชคเซเชจ)
  • เชเชจ.เชชเซ€.เชเชฎ.
  • เชฌเซ‹เชตเชฐ
  • เชฏเชฎ (rpm)
  • gitlfs
  • เช•เชพเชšเซ‹
  • เชฏเซ‹เช—เซเชฏ (deb)
  • Go
  • เชจเซเชฏเซเช—เซ‡เชŸ

เชธเชฎเซเชฆเชพเชฏ เชธเชฎเชฐเซเชฅเชฟเชค เช•เชฒเชพเช•เซƒเชคเชฟเช“:

  • เชฐเชšเชฏเชฟเชคเชพ
  • เช•เซ‹เชจเชจ
  • เชธเซ€.เชชเซ€.เชเชจ.
  • ELPA
  • เชนเซ‡เชฒเซเชฎ
  • P2
  • R

Sonatype Nexus เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ https://github.com/ansible-ThoTeam/nexus3-oss

เชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹

  • เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชเชจเซเชธเชฟเชฌเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชตเชพเช‚เชšเซ‹.
  • เชœเชตเชพเชฌเชฆเชพเชฐ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹ pip install ansible เชตเชฐเซเช•เชธเซเชŸเซ‡เชถเชจ เชชเชฐ เชœเซเชฏเชพเช‚ เชชเซเชฒเซ‡เชฌเซเช• เชšเชพเชฒเซ‡ เช›เซ‡.
  • เชธเซ‡เชŸ เช•เชฐเซ‹ geerlingguy.java เชตเชฐเซเช•เชธเซเชŸเซ‡เชถเชจ เชชเชฐ เชœเซเชฏเชพเช‚ เชชเซเชฒเซ‡เชฌเซเช• เชšเชพเชฒเซ‡ เช›เซ‡.
  • เชธเซ‡เชŸ เช•เชฐเซ‹ geerlingguy.apache เชตเชฐเซเช•เชธเซเชŸเซ‡เชถเชจ เชชเชฐ เชœเซเชฏเชพเช‚ เชชเซเชฒเซ‡เชฌเซเช• เชšเชพเชฒเซ‡ เช›เซ‡.
  • เช† เชญเซ‚เชฎเชฟเช•เชพเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ CentOS 7, เช‰เชฌเซเชจเซเชŸเซ เชเซ‡เชจเชฟเชฏเชฒ (16.04) เช…เชจเซ‡ เชฌเชพเชฏเซ‹เชจเชฟเช• (18.04), เชกเซ‡เชฌเชฟเชฏเชจ เชœเซ‡เชธเซ€ เช…เชจเซ‡ เชธเซเชŸเซเชฐเซ‡เชš เชชเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡.
  • 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: [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 เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‡.

เชœเซ‹ เชคเชฎเซ‡ เชจเซ‡เช•เซเชธเชธเชจเซเช‚ เชฒเซ‡เชŸเซ‡เชธเซเชŸ เช•เชฐเชคเชพเช‚ เชœเซ‚เชจเซเช‚ เชตเชฐเซเชเชจ เชตเชพเชชเชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เชนเซ‹เชต, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช เช•เซ‡ เชคเชฎเซ‡ เชเชตเซ€ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เชจเชฅเซ€ เชœเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ เชฐเชฟเชฒเซ€เชเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, 3.8.0, git lfs repo เช•เชฐเชคเชพเช‚ เชตเชงเซ เชจเซ‡เช•เซเชธเชธ เชฎเชพเชŸเซ‡ เชนเซ‹เชธเซเชŸเชฟเช‚เช— yum เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เช เช‰เชชเชฒเชฌเซเชง เช›เซ‡. 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 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช…เชจเซ‡ เชœเซ‚เชฅ

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

เชจเซ‡เช•เซเชธเชธ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชฎเชพเชฒเชฟเช•เซ€ เช…เชจเซ‡ เชธเซ‡เชตเชพ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช…เชจเซ‡ เชœเซ‚เชฅ เชœเซ‹ เช•เซ‹เชˆ เช–เซ‚เชŸเซ‡ เช›เซ‡ เชคเซ‹ เชญเซ‚เชฎเชฟเช•เชพ เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

    nexus_os_user_home_dir: '/home/nexus'

เชจเซ‡เช•เซเชธเชธ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เชนเซ‹เชฎ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชฆเชฒเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‹

เชจเซ‡เช•เซเชธเชธ เช‡เชจเซเชธเซเชŸเชจเซเชธ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“

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

เชจเซ‡เช•เซเชธเชธ เช•เซ‡เชŸเชฒเซ‹เช—.

  • nexus_installation_dir เชธเซเชฅเชพเชชเชฟเชค เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเซ‹ เชธเชฎเชพเชตเซ‡ เช›เซ‡
  • nexus_data_dir เชคเชฎเชพเชฎ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ, เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช เช…เชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เช•เชฒเชพเช•เซƒเชคเชฟเช“ เชธเชฎเชพเชตเซ‡ เช›เซ‡. เช•เชธเซเชŸเชฎ เชฌเซเชฒเซ‰เชฌเชธเซเชŸเซ‹เชฐ เชชเชพเชฅ nexus_data_dir เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชจเซ€เชšเซ‡ เชœเซเช“ nexus_blobstores.
  • nexus_tmp_dir เชฌเชงเซ€ เช…เชธเซเชฅเชพเชฏเซ€ เชซเชพเชˆเชฒเซ‹ เชธเชฎเชพเชตเซ‡ เช›เซ‡. redhat เชฎเชพเชŸเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชชเชพเชฅ เชชเชฐเชฅเซ€ เช–เชธเซ‡เชกเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ /tmp เชธเซเชตเชšเชพเชฒเชฟเชค เชธเชซเชพเชˆ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชธเชพเชฅเซ‡ เชธเช‚เชญเชตเชฟเชค เชธเชฎเชธเซเชฏเชพเช“ เชฆเซ‚เชฐ เช•เชฐเชตเชพ. เชœเซเช“ #168.

Nexus JVM เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถเชจเซ‡ เช—เซ‹เช เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

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

เช† Nexus เชฎเชพเชŸเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช›เซ‡. เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เช† เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‡ เชฌเชฆเชฒเชถเซ‹ เชจเชนเซ€เช‚ เชœเซ‹ เชคเชฎเซ‡ เชตเชพเช‚เชšเซเชฏเซเช‚ เชจเชฅเซ€ เชจเซ‡เช•เซเชธเชธ เชธเชฟเชธเซเชŸเชฎ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเซ‡เชฎเชฐเซ€ เชตเชฟเชญเชพเช— เช…เชจเซ‡ เชคเซ‡เช“ เชถเซเช‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชพเชคเซเช‚ เชจเชฅเซ€.

เชฌเซ€เชœเซ€ เชšเซ‡เชคเชตเชฃเซ€ เชคเชฐเซ€เช•เซ‡, เช…เชนเซ€เช‚ เช‰เชชเชฐเซ‹เช•เซเชค เชฆเชธเซเชคเชพเชตเซ‡เชœเชฎเชพเช‚เชฅเซ€ เชเช• เชŸเซ‚เช‚เช•เชธเชพเชฐ เช›เซ‡:

เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเซเชงเชพเชฐเชตเชพเชจเชพ เชชเซเชฐเชฏเชพเชธเชฎเชพเช‚ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ‡เชฒ เชฎเซ‚เชฒเซเชฏเซ‹เชฅเซ€ เช†เช—เชณ JVM เชนเซ€เชช เชฎเซ‡เชฎเชฐเซ€ เชตเชงเชพเชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€. เช†เชจเซ€ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชตเชฟเชชเชฐเซ€เชค เช…เชธเชฐ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเชฟเชฃเชพเชฎเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เช•เชพเชฎ เชฅเชพเชฏ เช›เซ‡.

เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชชเชพเชธเชตเชฐเซเชก

    nexus_admin_password: 'changeme'

เชธเซ‡เชŸเช…เชช เชฎเชพเชŸเซ‡ "เชเชกเชฎเชฟเชจ" เชเช•เชพเช‰เชจเซเชŸ เชชเชพเชธเชตเชฐเซเชก. เช† เชซเช•เซเชค เชชเซเชฐเชฅเชฎ เชกเชฟเชซเซ‹เชฒเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชญเซ‚เชฎเชฟเช•เชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเช›เซ€เชฅเซ€ เชคเซ‡เชจเซ‡ เชฌเชฆเชฒเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹เชต เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ [เชชเชนเซ‡เชฒเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเช›เซ€ เชเชกเชฎเชฟเชจ เชชเชพเชธเชตเชฐเซเชก เชฌเชฆเชฒเซ‹](# change-admin-password-after-first-install) เชœเซเช“.

เชชเซเชฒเซ‡เชฌเซเช•เชฎเชพเช‚ เชคเชฎเชพเชฐเชพ เชชเชพเชธเชตเชฐเซเชกเชจเซ‡ เชธเซเชชเชทเซเชŸ เชฒเช–เชพเชฃเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชจ เช•เชฐเชตเชพเชจเซ€, เชชเชฐเช‚เชคเซ [เชเชจเซเชธเชฟเชฌเชฒ-เชตเซ‹เชฒเซเชŸ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ] เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชธเช–เชค เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.https://docs.ansible.com/ansible/latest/user_guide/vault.html) (เช•เชพเช‚ เชคเซ‹ เช‡เชจเชฒเชพเช‡เชจ เช…เชฅเชตเชพ เชเช• เช…เชฒเช— เชซเชพเช‡เชฒเชฎเชพเช‚ เชฒเซ‹เชก เชฅเชฏเซ‡เชฒ เช›เซ‡ เชฆเชพ.เชค. include_vars)

เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช…เชจเชพเชฎเซ€ เชเช•เซเชธเซ‡เชธ

    nexus_anonymous_access: false

เช…เชจเชพเชฎเซ€ เชเช•เซเชธเซ‡เชธ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช…เช•เซเชทเชฎ เช›เซ‡. เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ‹ เช…เชจเชพเชฎเซ€ เชชเซเชฐเชตเซ‡เชถ.

เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชนเซ‹เชธเซเชŸเชจเชพเชฎ

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

เชธเช‚เชชเซ‚เชฐเซเชฃ เชฒเชพเชฏเช•เชพเชค เชงเชฐเชพเชตเชคเชพ เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎ เช…เชจเซ‡ เชธเซเช•เซ€เชฎ (https เช…เชฅเชตเชพ http) เช•เซ‡ เชœเซ‡เชจเชพ เชนเซ‡เช เชณ เชจเซ‡เช•เซเชธเชธ เช‰เชฆเชพเชนเชฐเชฃ เชคเซ‡เชจเชพ เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชนเชถเซ‡.

เช† เชญเซ‚เชฎเชฟเช•เชพ เชฎเชพเชŸเซ‡ API เชเช•เซเชธเซ‡เชธ

    nexus_api_hostname: localhost
    nexus_api_scheme: http
    nexus_api_validate_certs: "{{ nexus_api_scheme == 'https' }}"
    nexus_api_context_path: "{{ nexus_default_context_path }}"
    nexus_api_port: "{{ nexus_default_port }}"

เช† เชšเชฒเซ‹ เชœเซ‹เช—เชตเชพเชˆ เชฎเชพเชŸเซ‡ Nexus API เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเซ‹เชกเชพเชฏ เช›เซ‡ เชคเซ‡เชจเซเช‚ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เช•เชฐเซ‡ เช›เซ‡.
เชฎเชพเชคเซเชฐ เช…เชฆเซเชฏเชคเชจ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡. เชคเชฎเซ‡ เช•เชฆเชพเชš เช† เชกเชฟเชซเซ‹เชฒเซเชŸ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฌเชฆเชฒเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจเชฅเซ€

เชฐเชฟเชตเชฐเซเชธ เชชเซเชฐเซ‹เช•เซเชธเซ€ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

    httpd_setup_enable: false
    httpd_server_name: "{{ nexus_public_hostname }}"
    httpd_default_admin_email: "[email protected]"
    httpd_ssl_certificate_file: 'files/nexus.vm.crt'
    httpd_ssl_certificate_key_file: 'files/nexus.vm.key'
    # httpd_ssl_certificate_chain_file: "{{ httpd_ssl_certificate_file }}"
    httpd_copy_ssl_files: true

เชธเซ‡เชŸ เช•เชฐเซ‹ SSL เชฐเชฟเชตเชฐเซเชธ เชชเซเชฐเซ‹เช•เซเชธเซ€.
เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ httpd เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชจเซ‹เช‚เชง: เช•เซเชฏเชพเชฐเซ‡ เชฎเชพเชŸเซ‡ httpd_setup_enable เชฎเซ‚เชฒเซเชฏ เชธเซ‡เชŸ เช•เชฐเซ‹true, เชจเซ‡เช•เซเชธเชธ เชธเช‚เชชเชฐเซเช•เซ‹ 127.0.0.1:8081, เช†เชฎ เชจเชฅเซ€ เชฌเชพเชนเซเชฏ 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: "[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

เชธเชฐเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ (DSA เชเช•เชพเช‰เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡) เชฎเชพเชŸเซ‡ LDAP เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ + เชญเซ‚เชฎเชฟเช•เชพเช“ เชคเชฐเซ€เช•เซ‡ เชฎเซ‡เชช เช•เชฐเซ‡เชฒ เชœเซ‚เชฅเซ‹:

    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: [email protected]
      #   password: "s3cr3t"
      #   roles:
      #     - developers # role ID

เชจเซ‡เช•เซเชธเชธเชฎเชพเช‚ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชฅเชพเชจเชฟเช• (เชฌเชฟเชจ-LDAP) เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“/เชเช•เชพเช‰เชจเซเชŸเซเชธเชจเซ€ เชธเซ‚เชšเชฟ.

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_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

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ maven เชธเชฟเชตเชพเชฏเชจเชพ เช…เชจเซเชฏ เชชเซเชฐเช•เชพเชฐเชจเชพ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹เชต เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชšเซ‹เช•เซเช•เชธ เชธเซเชฐเช•เซเชทเชพ เชธเซเช•เซ‹เชชเซเชธเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡. เช† เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เช–เซ‹เชŸเซเช‚ เช›เซ‡

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

เชฐเซ€เชฎเซ‹เชŸ เชฏเซเชเชฐ เช•เซเชทเซ‡เชคเซเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชฃ เชธเช•เซเชทเชฎ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡

nexus_rut_auth_realm: true

เช…เชจเซ‡ เชถเซ€เชฐเซเชทเช• เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เชจเซ‡ เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡

nexus_rut_auth_header: "CUSTOM_HEADER"

เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชพเชฐเซเชฏเซ‹

    nexus_scheduled_tasks: []
    #  #  Example task to compact blobstore :
    #  - name: compact-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      blobstoreName: {{ nexus_blob_names.docker.blob }} # all task attributes are stored as strings by nexus internally
    #  #  Example task to purge maven snapshots
    #  - name: Purge-maven-snapshots
    #    cron: '0 50 23 * * ?'
    #    typeId: repository.maven.remove-snapshots
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      repositoryName: "*"  # * for all repos. Change to a repository name if you only want a specific one
    #      minimumRetained: "2"
    #      snapshotRetentionDays: "2"
    #      gracePeriodInDays: "2"
    #    booleanTaskProperties:
    #      removeIfReleased: true
    #  #  Example task to purge unused docker manifest and images
    #  - name: Purge unused docker manifests and images
    #    cron: '0 55 23 * * ?'
    #    typeId: "repository.docker.gc"
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      repositoryName: "*"  # * for all repos. Change to a repository name if you only want a specific one
    #  #  Example task to purge incomplete docker uploads
    #  - name: Purge incomplete docker uploads
    #    cron: '0 0 0 * * ?'
    #    typeId: "repository.docker.upload-purge"
    #    task_alert_email: [email protected]  # optional
    #    taskProperties:
    #      age: "24"

เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชพเชฐเซเชฏเซ‹ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฎเชพเชŸเซ‡. typeId เช…เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เช•เชพเชฐเซเชฏtaskProperties/booleanTaskProperties เชคเชฎเซ‡ เช•เซเชฏเชพเช‚ เชคเซ‹ เช…เชจเซเชฎเชพเชจ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

  • เชœเชพเชตเชพ เชชเซเชฐเช•เชพเชฐ เชชเชฆเชพเชจเซเช•เซเชฐเชฎเชฎเชพเช‚เชฅเซ€ 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

เชซเช•เซเชค เชจเซ‹เช‚เชงเชพเชฏเซ‡เชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชœ เชธเชฐเซเชตเซ‡เชฎเชพเช‚ เชญเชพเช— เชฒเชˆ เชถเช•เซ‡ เช›เซ‡. เชธเชพเช‡เชจ เช‡เชจ เช•เชฐเซ‹, เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡.

เชคเชฎเซ‡ เช•เชฏเชพ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸ เชญเช‚เชกเชพเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹?

  • Sonatype Nexus เชฎเชซเชค เช›เซ‡

  • Sonatype Nexus เชšเซ‚เช•เชตเชฃเซ€

  • เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเชฐเซ€ เชฎเชซเชค เช›เซ‡

  • เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเชฐเซ€ เชšเซ‚เช•เชตเซ‡เชฒ

  • เชนเชพเชฐเซเชฌเชฐ

  • เชชเชฒเซเชช

9 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชฎเชค โ€‹โ€‹เช†เชชเซเชฏเซ‹. 3 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฆเซ‚เชฐ เชฐเชนเซเชฏเชพ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹