เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒ Nexus Sonatype เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบฅเปˆเบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹

Sonatype Nexus เป€เบ›เบฑเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบตเปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™, เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš Java (Maven), Docker, Python, Ruby, NPM, Bower images, RPM packages, gitlfs, Apt, Go, Nuget, เปเบฅเบฐเปเบˆเบเบขเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบŠเบญเบšเปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ Sonatype Nexus?

  • เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบงเบฑเบ”เบ–เบธเบšเบนเบฎเบฒเบ™เบชเปˆเบงเบ™เบ•เบปเบง;
  • เบชเปเบฒเบฅเบฑเบš caching artifacts เบ—เบตเปˆเบ–เบทเบเบ”เบฒเบงเป‚เบซเบผเบ”เบˆเบฒเบเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”;

Artifacts เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเบนเปˆเปƒเบ™เบŠเบธเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™ Sonatype Nexus:

  • Java, Maven (เบเบฐเบ›เป‹เบญเบ‡)
  • Docker
  • Python (pip)
  • Ruby (เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ”)
  • เบ›
  • Bowers
  • เบเปเบฒ (rpm)
  • gitlfs
  • เบงเบฑเบ”เบ–เบธเบ”เบดเบš
  • Apt (deb)
  • Go
  • เบ›เบฐเป‚เบซเบเบ”

เบŠเบธเบกเบŠเบปเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™เบชเบดเปˆเบ‡เบ›เบฐเบ”เบดเบ”:

  • เบ›เบฐ
  • Conan
  • เบ„. เบช
  • ELPA
  • Helm
  • P2
  • R

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Sonatype Nexus เป‚เบ”เบเปƒเบŠเป‰ https://github.com/ansible-ThoTeam/nexus3-oss

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™

  • เบญเปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰ ansible เปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”.
  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡ ansible pip install ansible เปƒเบ™เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆ playbook เปเบฅเปˆเบ™.
  • เบ•เบฑเป‰เบ‡ geerlingguy.java เปƒเบ™เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆ playbook เปเบฅเปˆเบ™.
  • เบ•เบฑเป‰เบ‡ geerlingguy.apache เปƒเบ™เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆ playbook เปเบฅเปˆเบ™.
  • เบšเบปเบ”เบšเบฒเบ”เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ—เบปเบ”เบชเบญเบšเบขเบนเปˆเปƒเบ™ CentOS 7, Ubuntu Xenial (16.04) เปเบฅเบฐ Bionic (18.04), Debian Jessie เปเบฅเบฐ Stretch
  • jmespath เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆ playbook เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡: 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 เบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒเบเบงเปˆเบฒเบฅเบธเป‰เบ™เบฅเป‰เบฒเบชเบธเบ”, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡, hosting yum repositories เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบš nexus เบซเบผเบฒเบเบเบงเปˆเบฒ 3.8.0, git lfs repo. เบชเปเบฒเบฅเบฑเบš Nexus เบซเบผเบฒเบเบเบงเปˆเบฒ 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 instance directories

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

Nexus Catalogs.

  • 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 เปเบฅเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”.

เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡:

เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ heap JVM เป€เบเบตเบ™เบ„เปˆเบฒเบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒเปƒเบ™เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ™เบตเป‰เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบญเบฒเบ”เบˆเบฐเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™.

เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™โ€‹เบœเบนเป‰โ€‹เบšเปโ€‹เบฅเบดโ€‹เบซเบฒเบ™โ€‹

    nexus_admin_password: 'changeme'

เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบšเบฑเบ™เบŠเบต "admin" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เปเบฒเบญเบดเบ”. เบเบฐเบฅเบธเบ™เบฒเป€เบšเบดเปˆเบ‡ [เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”](# change-admin-password-after-first-install) เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เบกเบฑเบ™เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡เป‚เบ”เบเปƒเบŠเป‰เบšเบปเบ”เบšเบฒเบ”.

เปเบ™เบฐเบ™เบณเบขเปˆเบฒเบ‡เบเบดเปˆเบ‡เบšเปเปˆเปƒเบซเป‰เป€เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบขเบนเปˆเปƒเบ™ playbook, เปเบ•เปˆเปƒเบซเป‰เปƒเบŠเป‰ [ansible-vault encryption] (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 Reverse Proxy.
เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡ httpd. เปเบฒเบเป€เบซเบ”: เป€เบกเบทเปˆเบญเปƒเบ” httpd_setup_enable เบ„เปˆเบฒโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹true, เบ•เบดเบ”เบ•เปเปˆเบžเบปเบงเบžเบฑเบ™ 127.0.0.1:8081, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ เบšเปเปˆ เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡เบœเปˆเบฒเบ™เบžเบญเบ” HTTP 8081 เบˆเบฒเบเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบ.

เบŠเบทเปˆเป€เบˆเบปเป‰เบฒเบžเบฒเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเปƒเบŠเป‰เปเบกเปˆเบ™ nexus_public_hostname. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบทเปˆเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ” httpd_server_name เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹.

ะก httpd_copy_ssl_files: true (เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ„เบงเบ™เบกเบตเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต playbook เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบˆเบฐเบ–เบทเบเบ„เบฑเบ”เบฅเบญเบเปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเปƒเบ™ apache.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบ•เบดเบ”เบ•เบฑเป‰เบ‡ httpd_copy_ssl_files: false เปเบฅเบฐเปƒเบซเป‰เบ•เบปเบงเปเบ›เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

    # These specifies to the vhost where to find on the remote server file
    # system the certificate files.
    httpd_ssl_cert_file_location: "/etc/pki/tls/certs/wildcard.vm.crt"
    httpd_ssl_cert_key_location: "/etc/pki/tls/private/wildcard.vm.key"
    # httpd_ssl_cert_chain_file_location: "{{ httpd_ssl_cert_file_location }}"

httpd_ssl_cert_chain_file_location เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบฅเบฐเบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ›เบฐเป„เบงเป‰เป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เป„เบŸเบฅเปŒเบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰

    httpd_default_admin_email: "[email protected]"

เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบขเบนเปˆเบญเบตเป€เบกเบงเบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ LDAP

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LDAP เปเบฅเบฐเบžเบทเป‰เบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

    nexus_ldap_realm: false
    ldap_connections: []

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LDAP, เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'My Company LDAP' # used as a key to update the ldap config
        ldap_protocol: 'ldaps' # ldap or ldaps
        ldap_hostname: 'ldap.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false # Wether or not to use certs in the nexus trust store
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_auth: 'none' # or simple
        ldap_auth_username: 'username' # if auth = simple
        ldap_auth_password: 'password' # if auth = simple
        ldap_user_base_dn: 'ou=users'
        ldap_user_filter: '(cn=*)' # (optional)
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_subtree: false
        ldap_map_groups_as_roles: false
        ldap_group_base_dn: 'ou=groups'
        ldap_group_object_class: 'posixGroup'
        ldap_group_id_attribute: 'cn'
        ldap_group_member_attribute: 'memberUid'
        ldap_group_member_format: '${username}'
        ldap_group_subtree: false

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ LDAP เบชเบณเบฅเบฑเบšเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เปเบšเบšเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆ (เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆ), เบญเบฑเบ™เบ™เบตเป‰เบเบฑเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ "เปœเป‰เบญเบเบ—เบตเปˆเบชเบธเบ”":

    nexus_ldap_realm: true
    ldap_connection:
      - ldap_name: 'Simplest LDAP config'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_object_class: 'inetOrgPerson'

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ LDAP เบชเบณเบฅเบฑเบšเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เปเบšเบšเบ‡เปˆเบฒเบเป† (เป‚เบ”เบเปƒเบŠเป‰เบšเบฑเบ™เบŠเบต DSA):

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP config with DSA'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # better keep passwords in an ansible vault
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_user_subtree: false

เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒ LDAP เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบ (เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบšเบฑเบ™โ€‹เบŠเบต DSAโ€‹) + เบเบธเปˆเบกโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เปเบœเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบžเบฒโ€‹เบฅเบฐโ€‹เบšเบปเบ”โ€‹เบšเบฒเบ”โ€‹:

    nexus_ldap_realm: true
    ldap_connections
      - ldap_name: 'LDAP config with DSA'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # better keep passwords in an ansible vault
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_map_groups_as_roles: true
        ldap_group_base_dn: 'ou=groups'
        ldap_group_object_class: 'groupOfNames'
        ldap_group_id_attribute: 'cn'
        ldap_group_member_attribute: 'member'
        ldap_group_member_format: 'uid=${username},ou=users,dc=mycompany,dc=net'
        ldap_group_subtree: false

เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒ LDAP เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบ (เป‚เบ”เบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบšเบฑเบ™โ€‹เบŠเบต DSAโ€‹) + เบเบธเปˆเบกโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เปเบœเบ™โ€‹เบ—เบตเปˆโ€‹เปเบšเบšโ€‹เป€เบ„เบทเปˆเบญเบ™โ€‹เป„เบซเบงโ€‹เป€เบ›เบฑเบ™โ€‹เบžเบฒโ€‹เบฅเบฐโ€‹เบšเบปเบ”โ€‹เบšเบฒเบ”โ€‹:

    nexus_ldap_realm: true
    ldap_connections:
      - ldap_name: 'LDAP config with DSA'
        ldap_protocol: 'ldaps'
        ldap_hostname: 'annuaire.mycompany.com'
        ldap_port: 636
        ldap_use_trust_store: false
        ldap_auth: 'simple'
        ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net'
        ldap_auth_password: "{{ vault_ldap_dsa_password }}" # better keep passwords in an ansible vault
        ldap_search_base: 'dc=mycompany,dc=net'
        ldap_user_base_dn: 'ou=users'
        ldap_user_object_class: 'inetOrgPerson'
        ldap_user_id_attribute: 'uid'
        ldap_user_real_name_attribute: 'cn'
        ldap_user_email_attribute: 'mail'
        ldap_map_groups_as_roles: true
        ldap_map_groups_as_roles_type: 'dynamic'
        ldap_user_memberof_attribute: 'memberOf'

เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”

    nexus_privileges:
      - name: all-repos-read # used as key to update a privilege
        # type: <one of application, repository-admin, repository-content-selector, repository-view, script or wildcard>
        description: 'Read & Browse access to all repos'
        repository: '*'
        actions: # can be add, browse, create, delete, edit, read or  * (all)
          - read
          - browse
        # pattern: pattern
        # domain: domain
        # script_name: name

เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ” เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เป€เบšเบดเปˆเบ‡เป€เบญเบเบฐเบชเบฒเบ™เปเบฅเบฐ GUI เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ•เบปเบงเปเบ›เปƒเบ”เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบถเป‰เบ™เบขเบนเปˆเบเบฑเบšเบ›เบฐเป€เบžเบ”เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”.

เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบšเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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

เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ” (เบžเบฒเบเปƒเบ™ Nexus เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ)

    nexus_roles:
      - id: Developpers # can map to a LDAP group id, also used as a key to update a role
        name: developers
        description: All developers
        privileges:
          - nx-search-read
          - all-repos-read
        roles: [] # references to other role names

เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ เบšเบปเบ”เบšเบฒเบ” เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ.

เบœเบนเป‰เปƒเบŠเป‰

    nexus_local_users: []
      # - username: jenkins # used as key to update
      #   state: present # default value if ommited, use 'absent' to remove user
      #   first_name: Jenkins
      #   last_name: CI
      #   email: [email protected]
      #   password: "s3cr3t"
      #   roles:
      #     - developers # role ID

เบฅเบฒเบเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰/เบšเบฑเบ™เบŠเบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ (เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ LDAP) เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เบฅเบฒเบเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰/เบšเบฑเบ™เบŠเบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ (เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ 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 เปเบฅเบฐ repositories

    nexus_delete_default_repos: false

เบฅเบถเบš repositories เบˆเบฒเบ nexus เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ” (เป€เบกเบทเปˆเบญโ€‹ nexus_data_dir เบเบงเบ”โ€‹เบžเบปเบšโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เป€เบ›เบปเปˆเบฒ).

เบเบฒเบ™เบ–เบญเบ™ repositories เบญเบญเบเบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบš Nexus. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ” (เป€เบกเบทเปˆเบญ nexus_data_dir เบซเบงเปˆเบฒเบ‡).

    nexus_delete_default_blobstore: false

เบฅเบถเบš blobstore เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ nexus เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ nexus_delete_default_repos: true เปเบฅเบฐเบ—เบธเบ repositories เบ—เบตเปˆเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰) เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™ blob_store: custom. เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ” (เป€เบกเบทเปˆเบญโ€‹ nexus_data_dir เบเบงเบ”โ€‹เบžเบปเบšโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เป€เบ›เบปเปˆเบฒ).

เบเบฒเบ™เป€เบญเบปเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ blob (binary artifacts) เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™. เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ blob (binary artifacts), เบ›เบดเบ” 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 repository เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เป„เบ”เป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™ (เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เปƒเบ”เป†เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบเปƒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบ„เบทเบ™).

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ 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

เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ เป€เบŠเบตเบšเป€เบงเบตเบžเบฃเบฑเบญเบเบŠเบต maven.

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

Maven เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบš เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเบณเบ—เบฒเบ‡เบฅเบปเบšเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เปเบฅเบฐเบˆเบฐเบเบณเบ™เบปเบ”เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ–เป‰เบฒเบ–เบทเบเบฅเบฐเป€เบงเบฑเป‰เบ™.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบš Maven. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ—เบฒเบ‡เบฅเบปเบš (-1) เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เปเบฅเบฐเบˆเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ–เป‰เบฒเบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธ.

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

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ เบเบธเปˆเบก maven.

เบ—เบฑเบ‡เบชเบฒเบกเบ›เบฐเป€เบžเบ” repository เปเบกเปˆเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบšเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

    _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 repository เบ›เบฐเป€เบžเบ”:
เป€เบšเบดเปˆเบ‡ 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 เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบชเบฐโ€‹เบ•โ€‹เบฃเบดเบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” (เป€เบŠเบฑเปˆเบ™โ€‹: เบŠเบทเปˆ repositoryโ€‹, เบŠเบทเปˆ repositoryโ€‹, เป„เบฅโ€‹เบเบฐโ€‹เป€เบงโ€‹เบฅเบฒ ... )โ€‹.
  • booleanTaskProperties เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบ•เบฒเบกโ€‹เป€เบซเบ”โ€‹เบœเบปเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” (เป€เบŠเบฑเปˆเบ™โ€‹: เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹เปƒเบ™ GUI เบ‚เบญเบ‡โ€‹เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡ nexusโ€‹)โ€‹.

เบเบฒเบ™ เบชเบณ เบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™

      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เบ—เบตเปˆเป€เบˆเบปเป‰เบฒ
เบ›เบฐโ€‹เบเบฒเบ”โ€‹เปƒเบ™ playbook เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ rotate / เบฅเบถเบš backups, เบ•เบดเบ”เบ•เบฑเป‰เบ‡ nexus_backup_rotate: true เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ nexus_backup_keep_rotations (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ 4).

เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบžเบทเบ”โ€‹เบซเบกเบนเบ™โ€‹เบงเบฝเบ™โ€‹, เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบŠเปˆเบงเบโ€‹เบ›เบฐโ€‹เบขเบฑเบ”โ€‹เบŠเปˆเบญเบ‡โ€‹เปเบœเปˆเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹,
เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบ”เป‰ nexus_backup_rotate_first: true. เบ™เบตเป‰เบˆเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบเปˆเบญเบ™เบเบฒเบ™เบซเบกเบธเบ™ / เบเบฒเบ™เบฅเบถเบšเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเบฒเบ™เบซเบกเบธเบ™เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™. เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบเบปเปˆเบฒ
เบˆเบฐโ€‹เบ–เบทเบโ€‹เบฅเบถเบšโ€‹เบญเบญเบโ€‹เบเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบง

เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ playbook เบเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(เบ•เบปเบงเบขเปˆเบฒเบ‡: 2017-12-17-21-00-00 เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ™เบ—เบต 17 เบ—เบฑเบ™เบงเบฒ 2017 เป€เบงเบฅเบฒ 21:00 เป‚เบกเบ‡

เบเบฒเบ™เบ–เบญเบ™ Nexus

เบ„เบณเป€เบ•เบทเบญเบ™: เบ™เบตเป‰เบˆเบฐเบฅเบถเบšเบ‚เปเป‰เบกเบนเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบปเบ”. เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™

เปƒเบŠเป‰เบ•เบปเบงเปเบ› nexus_purgeเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ restart เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡ nexus instance เบ„เบทเบ™เปƒเปเปˆเป‚เบ”เบเป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เปเบปเบ”เบญเบญเบ.

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 เปƒเบ™ playbook เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹:

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 เปเบกเปˆเบ™เบšเปเปˆเป€เบชเบเบ„เปˆเบฒ

  • Artifactory เบˆเปˆเบฒเบ

  • Harbour

  • Pulp

9 เบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 3 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™