рдХреЛрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдХреНрд╕рд╕ рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдиреЗрдХреНрд╕рд╕ рдПрдХ рдПрдХреАрдХреГрдд рдордВрдЪ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬрд╛рд╡рд╛ (рдорд╛рд╡реЗрди) рдирд┐рд░реНрднрд░рддрд╛, рдбреЙрдХрд░, рдкрд╛рдпрдерди, рд░реВрдмреА, рдПрдирдкреАрдПрдо, рдмреЛрд╡рд░ рдЗрдореЗрдЬ, рдЖрд░рдкреАрдПрдо рдкреИрдХреЗрдЬ, рдЧрд┐рдЯрд▓рдлреНрд╕, рдПрдкреНрдЯ, рдЧреЛ, рдиреБрдЧреЗрдЯ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА, рд╕реНрдЯреЛрд░ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдиреЗрдХреНрд╕рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

  • рдирд┐рдЬреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП;
  • рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП;

рдореВрд▓ рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдиреЗрдХреНрд╕рд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ:

  • рдЬрд╛рд╡рд╛, рдорд╛рд╡реЗрди (рдЬрд╛рд░)
  • рдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░
  • рдкрд╛рдпрдерди (рдкрд┐рдк)
  • рд░реВрдмреА (рд░рддреНрди)
  • NPM
  • рдХреБрдВрдЬ
  • рдпрдо (рдЖрд░рдкреАрдПрдо)
  • gitlfs
  • рдХрдЪреНрдЪрд╛
  • рдЙрдкрдпреБрдХреНрдд (deb)
  • Go
  • Nuget

рд╕рдореБрджрд╛рдп рд╕рдорд░реНрдерд┐рдд рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ:

  • рд╕рдВрдЧреАрддрдХрд╛рд░
  • рдХреЛрдирди
  • рд╕реАрдкреАрдПрдПрди
  • рдИрдПрд▓рдкреАрдП
  • рдкрддрд╡рд╛рд░
  • P2
  • R

рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдиреЗрдХреНрд╕рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ https://github.com/ansible-ThoTeam/nexus3-oss

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

  • рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВред
  • рдЙрддреНрддрд░рдпреЛрдЧреНрдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ pip install ansible рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ рдЬрд╣рд╛рдВ рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рддреА рд╣реИред
  • рд╕реНрдерд┐рдд geerlingguy.java рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ рдЬрд╣рд╛рдВ рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рддреА рд╣реИред
  • рд╕реНрдерд┐рдд geerlingguy.apache рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ рдЬрд╣рд╛рдВ рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рддреА рд╣реИред
  • рдЗрд╕ рднреВрдорд┐рдХрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг CentOS 7, Ubuntu Xenial (16.04) рдФрд░ рдмрд╛рдпреЛрдирд┐рдХ (18.04), рдбреЗрдмрд┐рдпрди рдЬреЗрд╕реА рдФрд░ рд╕реНрдЯреНрд░реЗрдЪ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • jmespath рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдкреНрд▓реЗрдмреБрдХ рдЪрд▓ рд░рд╣реА рд╣реИред рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: sudo pip install -r requirements.txt
  • рдкреНрд▓реЗрдмреБрдХ рдлрд╝рд╛рдЗрд▓ (рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ) рдХреЛ nexus.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ
  • рдиреЗрдХреНрд╕рд╕ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдЪрд▓рд╛рдПрдБ ansible-playbook -i host nexus.yml

рдореЗрд╡реЗрди (рдЬрд╛рд╡рд╛), рдбреЙрдХрд░, рдкрд╛рдпрдерди, рд░реВрдмреА, рдПрдирдкреАрдПрдо, рдмреЛрд╡рд░, рдЖрд░рдкреАрдПрдо рдФрд░ рдЧрд┐рдЯрд▓рдлреНрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдПрд▓рдбреАрдПрдкреА рдХреЗ рдмрд┐рдирд╛ рдиреЗрдХреНрд╕рд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг-рдкреНрд▓реЗрдмреБрдХред

---
- 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'] }

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:

рдХреЛрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдХреНрд╕рд╕ рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рдХреЛрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдХреНрд╕рд╕ рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рднреВрдорд┐рдХрд╛рдПрдБ

рднреВрдорд┐рдХрд╛ рдЪрд░

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╡рд╛рд▓реЗ рд╡реЗрд░рд┐рдПрдмрд▓ (рджреЗрдЦреЗрдВ default/main.yml):

рд╕рд╛рдорд╛рдиреНрдп рдЪрд░

    nexus_version: ''
    nexus_timezone: 'UTC'

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рднреВрдорд┐рдХрд╛ рдиреЗрдХреНрд╕рд╕ рдХрд╛ рдирд╡реАрдирддрдо рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧреАред рдЖрдк рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдмрджрд▓рдХрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ nexus_version. рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВ https://www.sonatype.com/download-oss-sonatype.

рдпрджрд┐ рдЖрдк рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рднреВрдорд┐рдХрд╛ рдЖрдкрдХреЗ рдиреЗрдХреНрд╕рд╕ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧреАред

рдпрджрд┐ рдЖрдк рдиреЗрдХреНрд╕рд╕ рдХреЗ рдирд╡реАрдирддрдо рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реЛрд╕реНрдЯ рдХрд░рдирд╛ 3.8.0 рд╕реЗ рдЕрдзрд┐рдХ рдиреЗрдХреНрд╕рд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреАрдЖрдИрдЯреА рдПрд▓рдПрдлрдПрд╕ рд░реЗрдкреЛ 3.3.0 рдЖрджрд┐ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдиреЗрдХреНрд╕рд╕ рдХреЗ рд▓рд┐рдП)

nexus timezone рдЬрд╛рд╡рд╛ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдо рд╣реИ, рдЬреЛ nexus_scheduled рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░реЙрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдиреЗрдХреНрд╕рд╕ рдкреЛрд░реНрдЯ рдФрд░ рд╕рдВрджрд░реНрдн рдкрде

    nexus_default_port: 8081
    nexus_default_context_path: '/'

рдЬрд╛рд╡рд╛ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреЛрд░реНрдЯ рдФрд░ рд╕рдВрджрд░реНрдн рдкрдеред nexus_default_context_path рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдореЗрдВ рдлреЙрд░рд╡рд░реНрдб рд╕реНрд▓реИрд╢ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: nexus_default_context_path: '/nexus/'.

рдиреЗрдХреНрд╕рд╕ рдУрдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╕рдореВрд╣

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╕рдореВрд╣ рдЬреЛ рдиреЗрдХреНрд╕рд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рд▓рд┐рдХ рдереЗ рдФрд░ рд╕реЗрд╡рд╛ рдЪрд▓рд╛рддреЗ рдереЗ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдкрд░ рднреВрдорд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред

    nexus_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 рдЗрд╕рдореЗрдВ рд╕рднреА рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд░реЗрдбрд╣реИрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрде рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ /tmp рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред #168 рджреЗрдЦреЗрдВ.

рдиреЗрдХреНрд╕рд╕ рдЬреЗрд╡реАрдПрдо рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

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

рдпреЗ Nexus рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ. рдХреГрдкрдпрд╛ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рди рдмрджрд▓реЗрдВ рдЕрдЧрд░ рдЖрдкрдиреЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ рдиреЗрдХреНрд╕рд╕ рд╕рд┐рд╕реНрдЯрдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдореЗрдореЛрд░реА рдЕрдиреБрднрд╛рдЧ рдФрд░ рд╕рдордЭ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ.

рджреВрд╕рд░реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ рдЙрдкрд░реЛрдХреНрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдПрдХ рдЕрдВрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ JVM рд╣реАрдк рдореЗрдореЛрд░реА рдХреЛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдкрд░реАрдд рдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рдкрд╛рд╕рд╡рд░реНрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ

    nexus_admin_password: 'changeme'

рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП "рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ" рдЦрд╛рддрд╛ рдкрд╛рд╕рд╡рд░реНрдбред рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рдердо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ. рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреВрдорд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ [рдкрд╣рд▓реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж рдПрдбрдорд┐рди рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓реЗрдВ] (# рдЪреЗрдВрдЬ-рдПрдбрдорд┐рди-рдкрд╛рд╕рд╡рд░реНрдб-рдЖрдлреНрдЯрд░-рдлрд░реНрд╕реНрдЯ-рдЗрдВрд╕реНрдЯреЙрд▓) рджреЗрдЦреЗрдВред

рдпрд╣ рджреГрдврд╝рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рди рдХрд░реЗрдВ, рдмрд▓реНрдХрд┐ [ansible-vault рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (рдпрд╛ рддреЛ рдЗрдирд▓рд╛рдЗрди рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП include_vars рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХреА рдЧрдИ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ)

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирд╛рдо рдкрд╣реБрдВрдЪ

    nexus_anonymous_access: false

рдЕрдирд╛рдо рдкрд╣реБрдВрдЪ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИ. рдкрд░ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ рдЕрдирд╛рдо рдкрд╣реБрдВрдЪ.

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрд╕реНрдЯрдирд╛рдо

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рдбреЛрдореЗрди рдирд╛рдо рдФрд░ рдпреЛрдЬрдирд╛ (https рдпрд╛ http) рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдиреЗрдХреНрд╕рд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдЗрд╕ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдПрдХреНрд╕реЗрд╕

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

рдпреЗ рдЪрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╛рд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП рднреВрдорд┐рдХрд╛ рдиреЗрдХреНрд╕рд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИред
рдХреЗрд╡рд▓ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП. рдЖрдк рд╢рд╛рдпрдж рдЗрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ

рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗрдЯ рдХрд░рдирд╛

    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

рд╕реНрдерд┐рдд рдПрд╕рдПрд╕рдПрд▓ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА.
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ httpd рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдиреЛрдЯ: рдХрдм рддрдХ httpd_setup_enable рдореВрд▓реНрдп рддреЗ рдХрд░рдирд╛true, рдиреЗрдХреНрд╕рд╕ рд╕рдВрдкрд░реНрдХ 127.0.0.1:8081, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдкрддреЗ рд╕реЗ 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]"

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдИрдореЗрд▓ рдкрддрд╛ рд╕реЗрдЯ рдХрд░реЗрдВ

рдПрд▓рдбреАрдПрдкреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рдПрд▓рдбреАрдПрдкреА рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреНрд╖реЗрддреНрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИрдВ

    nexus_ldap_realm: false
    ldap_connections: []

рдПрд▓рдбреАрдПрдкреА рдХрдиреЗрдХреНрд╢рди, рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

    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

рдЕрдирд╛рдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг (рдЕрдирд╛рдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдПрд▓рдбреАрдПрдкреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдпрд╣ рднреА рдПрдХ "рдиреНрдпреВрдирддрдо" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ:

    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'

рд╕рд░рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдПрд▓рдбреАрдПрдкреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдбреАрдПрд╕рдП рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):

    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

рд╕рд░рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдПрд▓рдбреАрдПрдкреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдбреАрдПрд╕рдП рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) + рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдк рдХрд┐рдП рдЧрдП рд╕рдореВрд╣:

    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

рд╕рд░рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдПрд▓рдбреАрдПрдкреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдбреАрдПрд╕рдП рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) + рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдореИрдк рдХрд┐рдП рдЧрдП рд╕рдореВрд╣:

    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

рд╕реВрдЪреА рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП. рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреМрди рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдЬреАрдпреВрдЖрдИ рджреЗрдЦреЗрдВред

рдпреЗ рддрддреНрд╡ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ:

    _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

рдиреЗрдХреНрд╕рд╕ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп (рдЧреИрд░-рдПрд▓рдбреАрдПрдкреА) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ/рдЦрд╛рддреЛрдВ рдХреА рд╕реВрдЪреАред

рдиреЗрдХреНрд╕рд╕ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп (рдЧреИрд░-рдПрд▓рдбреАрдПрдкреА) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ/рдЦрд╛рддреЛрдВ рдХреА рд╕реВрдЪреАред

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

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ/рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рдПрд▓рдбреАрдПрдкреА рдореИрдкрд┐рдВрдЧред рд░рд╛рдЬреНрдп 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"

Maven рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡рд┐рдиреНрдпрд╛рд╕ред рдирдХрд╛рд░рд╛рддреНрдордХ рдХреИрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдФрд░ рдЫреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рдЙрдкрд░реЛрдХреНрдд рдорд╛рдиреЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдЧрд╛ред

рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдорд╛рд╡реЗрди. рдирдХрд╛рд░рд╛рддреНрдордХ рдХреИрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (-1) рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрд░реЛрдХреНрдд рдорд╛рдиреЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдЧрд╛ред

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

рд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдореВрд╣реЛрдВ рдорд╛рд╡реЗрди

рд╕рднреА рддреАрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рдХрд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ:

    _nexus_repos_maven_defaults:
      blob_store: default # Note : cannot be updated once the repo has been created
      strict_content_validation: true
      version_policy: release # release, snapshot or mixed
      layout_policy: strict # strict or permissive
      write_policy: allow_once # one of "allow", "allow_once" or "deny"
      maximum_component_age: -1  # Nexus gui default. For proxies only
      maximum_metadata_age: 1440  # Nexus gui default. For proxies only
      negative_cache_enabled: true # Nexus gui default. For proxies only
      negative_cache_ttl: 1440 # Nexus gui default. For proxies only

рдбреЙрдХрд░, рдкрд┐рдкреА, рд░реЙ, рд░реВрдмреАрдЬреЗрдореНрд╕, рдмреЛрд╡рд░, рдПрдирдкреАрдПрдо, рдЧрд┐рдЯ-рдПрд▓рдПрдлрдПрд╕ рдФрд░ рдпрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рдХрд╛рд░:
рджреЗрдЦрдирд╛ defaults/main.yml рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП:

рдбреЙрдХрд░, рдкрд┐рдкреА, рд░реЙ, рд░реВрдмреАрдЬреЗрдореНрд╕, рдмреЛрд╡рд░, рдПрдирдкреАрдПрдо, рдЧрд┐рдЯ-рдПрд▓рдПрдлрдПрд╕ рдФрд░ рдпрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИрдВ:
рджреЗрдЦрдирд╛ defaults/main.yml рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП:

      nexus_config_pypi: false
      nexus_config_docker: false
      nexus_config_raw: false
      nexus_config_rubygems: false
      nexus_config_bower: false
      nexus_config_npm: false
      nexus_config_gitlfs: false
      nexus_config_yum: false

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдорд╛рд╡реЗрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рджрд╛рдпрд░реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИ

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

рд░рд┐рдореЛрдЯ рдпреВрдЬрд░ рджрд╛рдпрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

nexus_rut_auth_realm: true

рдФрд░ рд╢реАрд░реНрд╖рдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

nexus_rut_auth_header: "CUSTOM_HEADER"

рдирд┐рдпрдд рдХрд╛рд░реНрдп

    nexus_scheduled_tasks: []
    #  #  Example task to compact blobstore :
    #  - name: compact-docker-blobstore
    #    cron: '0 0 22 * * ?'
    #    typeId: blobstore.compact
    #    task_alert_email: [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 рдмрдЬреЗ)ред
рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП [рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЧреНрд░реВрд╡реА рдЯреЗрдореНрдкрд▓реЗрдЯ](рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕/рдмреИрдХрдЕрдк.рдЧреНрд░реЛрд╡реА.рдЬреЗ2) рджреЗрдЦреЗрдВред
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдп рджреВрд╕рд░реЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ nexus_scheduled_tasksрдЬреЛ рддреБрдордиреЗ
рдЕрдкрдиреА рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ.

рдпрджрд┐ рдЖрдк рдмреИрдХрдЕрдк рдХреЛ рдШреБрдорд╛рдирд╛/рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ nexus_backup_rotate: true рдФрд░ рдЙрди рдмреИрдХрдЕрдк рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ nexus_backup_keep_rotations (рдбрд┐рдлрд╝реЙрд▓реНрдЯ 4).

рд░реЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрджрд┐ рдЖрдк рдмреИрдХрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ,
рдЖрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ nexus_backup_rotate_first: true. рдпрд╣ рдмреИрдХрдЕрдк рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реА-рд░реЛрдЯреЗрд╢рди/рдбрд┐рд▓реАрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмреИрдХрдЕрдк рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рд░реЛрдЯреЗрд╢рди рд╣реЛрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдмреИрдХрдЕрдк
рд╡рд░реНрддрдорд╛рди рдмреИрдХрдЕрдк рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛.

рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рд╛рдПрдБ -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2017-12-17-21-00-00 17 рджрд┐рд╕рдВрдмрд░ 2017 рдХреЛ 21:00 рдмрдЬреЗ рдХреЗ рд▓рд┐рдП

рд╕рд╛рдВрдардЧрд╛рдВрда рд╣рдЯрд╛рдирд╛

рдЪреЗрддрд╛рд╡рдиреА: рдпрд╣ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкрд╣рд▓реЗ рдмреИрдХрдЕрдк рдмрдирд╛рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ

рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ nexus_purgeрдпрджрд┐ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдиреЗрдХреНрд╕рд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдкрд╣рд▓реА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓реЗрдВ

    nexus_default_admin_password: 'admin123'

рдЗрд╕реЗ рдЖрдкрдХреА рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП. рдкрд╣рд▓реА рдмрд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреЗрдХреНрд╕рд╕ рдПрдбрдорд┐рди рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рднрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдбрдорд┐рди рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ nexus_admin_password.

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдкрд╛рд╕рд╡рд░реНрдб рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж nexus_admin_password рдЕрдкрдиреА рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

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

рдиреЗрдХреНрд╕рд╕ рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдкрд░ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓: https://t.me/ru_nexus_sonatype

рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реА рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВрдХреГрдкрдпрд╛ред

рдЖрдк рдХрд┐рд╕ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

  • рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдиреЗрдХреНрд╕рд╕ рдореБрдлрд╝реНрдд рд╣реИ

  • рд╕реЛрдирд╛рдЯрд╛рдЗрдк рдиреЗрдХреНрд╕рд╕ рдиреЗ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛

  • рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рдореБрдлрд╝реНрдд рд╣реИ

  • рдХрд╛рд░реАрдЧрд░реА рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛

  • рдмрдВрджрд░рдЧрд╛рд╣

  • рд▓реБрдЧрджреА

9 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдорддрджрд╛рди рдХрд┐рдпрд╛ред 3 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд░рд╣реЗред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ