Installing et configurans Nexus Sonatype utens infrastructuram ut codice approach

Sonatype Nexus est suggestum integratum per quod tincidunt procuratorem, copia ac clientelas Java (Maven) administrare possunt, Docker, Python, Ruby, NPM, Bower imagines, RPM fasciculi, gitlfs, Apt, Go, Nuget, et securitatem programmatum distribuunt.

Cur opus Sonatype Nexus?

  • Ad reponenda artificia privata;
  • pro caching artificia quae a interreti recepta sunt;

Artificia in basic sarcina Sonatype Nexus sustinetur:

  • Java, Maven (jar)
  • Docker
  • Python (pip)
  • Ruby (gem)
  • NPM
  • referunt thalamo stratisque
  • Yum (rpm)
  • gitlfs
  • rudis
  • Apta (deb)
  • Go
  • Nuget

Community Supported Artificia:

  • Composer:
  • Conan
  • CPAN
  • ELPA
  • helm
  • P2
  • R

Installing Sonatype nexus utens https://github.com/ansible-ThoTeam/nexus3-oss

commodum

  • Lege de utendo ansible in interreti.
  • ansible install pip install ansible in workstation ubi decurrit playbook.
  • install geerlingguy.java in workstation ubi decurrit playbook.
  • install geerlingguy.apache in workstation ubi decurrit playbook.
  • Hoc munus in CentOS 7, Ubuntu Xenial (16.04) et Bionic (18.04) probatum est, Debian Jessie et Tractum
  • jmespath Bibliotheca instituenda est in workstation ubi fabularum currit. Ut install: sudo pip install -r requirements.txt
  • Servare fasciculum playbook (exemplum infra) ad nexus.yml file
  • Curre nexum institutionem ansible-playbook -i host nexus.yml

Exemplum fabularum ansibilis ad instituendum nexum sine LDAP cum Maven (java), Docker, Python, Ruby, NPM, Bower, RPM et gitlfs repositoria.

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

eenshotsscray:

Installing et configurans Nexus Sonatype utens infrastructuram ut codice approach

Installing et configurans Nexus Sonatype utens infrastructuram ut codice approach

Variae partes

Munus Variabiles

Variables with default values ​​(see default/main.yml):

Generalis variabiles

    nexus_version: ''
    nexus_timezone: 'UTC'

Defalta, munus novam versionem Nexus in promptu collocabit. Potes figere versionem mutando variabilis nexus_version. Vide praesto versiones at https://www.sonatype.com/download-oss-sonatype.

Si ad novam versionem mutaveris, munus tentabit ut nexus institutionem tuam update.

Si maiore versione Nexus quam novissimam uteris, curare debes ut notis non utaris, quae in emissione inaugurata non sunt (exempli gratia, repositoria obnoxius yum praesto est pro nexus maior quam 3.8.0, git lfs repo nam nexus maior quam 3.3.0 etc.)

nexus timezone nomen est zona temporis Javae, quae utilis esse potest cum sequentibus expressionibus cronicis pro nexus_schedulatis.

Nexus portus et contexta semita

    nexus_default_port: 8081
    nexus_default_context_path: '/'

Portus et contextus semita processus nexus Java. nexus_default_context_path deinceps exacuere oportet, cum statuitur, ut puta. nexus_default_context_path: '/nexus/'.

Nexus OS User et Group

    nexus_os_group: 'nexus'
    nexus_os_user: 'nexus'

Usor et coetus ad fasciculos nexus proprios adhibiti et ministerium currunt, munus creabitur si unus desit.

    nexus_os_user_home_dir: '/home/nexus'

Patitur mutantur per default domum Directory per nexum user

Nexus instantia directoria

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

Nexus Catalogi.

  • nexus_installation_dir exsecutabile continet installed "
  • nexus_data_dir omnia configuratione, repositoria et artificia receptacula continet. More blobstore semitae nexus_data_dir nativus potest, infra vide nexus_blobstores.
  • nexus_tmp_dir omne tempus files continet. In default iter ad redhat remotum est /tmp vincere potential problems latis purgatio ratio. See #168.

Configurans Nexus JVM Memoria Syntaxis

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

Hae sunt occasus defectus pro Nexus. Quaeso ne haec bona mutantur Si non legere nexus systema requisita memoriae section et non intellegetis quid agant.

In secunda admonitione hic est excerptum ex praedicto documento;

JVM acervus memoriae augere non commendatur ultra suadeo bona in conatu emendandi. Hoc potest actu oppositum habere effectum, unde in opus operandi supervacuum est.

Administrator password

    nexus_admin_password: 'changeme'

The "admin" account password for setup. Hoc modo operatur in primo default institutionem. Quaeso vide [Mutare admin tesseram post primam institutionem](#mutationem-admin-password-postprim-instituendam) si postea munus mutare vis.

Enixe commendatur non ut tesseram tuam ut luculenter in fabularum textu congregem, sed utaris [ansible-vault encryption] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (Sive inline vel in separato lima onerata exempli include_vars)

Anonymous accessum per default

    nexus_anonymous_access: false

Anonymous accessum debilitata est per defaltam. Read more about anonymous accessum.

Publica hostname

    nexus_public_hostname: 'nexus.vm'
    nexus_public_scheme: https

Plene idoneus domain nomen et propositum (https vel http) sub quibus Nexus instantia suis clientibus praesto erit.

API accessum ad hoc munus

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

Hae variabiles regunt quomodo partes nexus API ad commeatum pertinentes connectit.
Nam eget pretium nisi. Tu probabiliter default occasus haec mutare non vis

Erexit fortuna procuratorem

    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

install SSL Reverse Proxy.
Hoc facere debes httpd instituere. Nota: cum for httpd_setup_enable set valoremtruenexus contactus 127.0.0.1:8081, ita non directe accessibilia per HTTP portum 8081 ab IP inscriptione externa.

Default hostname usus est nexus_public_hostname. Si diversis nominibus aliqua de causa opus est, potes httpd_server_name alia significatione.

Π‘ httpd_copy_ssl_files: true (per defaltam) superiores testimoniales in tuo playbook directorio exstare debent et in servo transscribi et in apache figurari.

Si vis uti libellorum existentium in calculonis, install httpd_copy_ssl_files: false et sequentes variabiles praebere:

    # 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 libitum est et debet unset si non vis catenam domicilii

    httpd_default_admin_email: "[email protected]"

Set default admin inscriptio electronica

LDAP configurationis

LDAP hospites et regnum securitatis per default erret

    nexus_ldap_realm: false
    ldap_connections: []

LDAP hospitesQuisque elementum augue ipsum;

    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

Exemplum LDAP configurationis authenticae anonymi (conligatio anonymi), haec quoque figura "minimae" est;

    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'

Exemplum LDAP configurationis pro simplici authenticas (uti DSA ratione);

    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

Exemplum LDAP configurationis pro simplici authenticatione (uti DSA ratione) + catervae pro muneribus divisis:

    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

Exemplum LDAP configurationis pro simplici authenticatione (DSA ratione utens) + circulos dynamice qui partes divisit:

    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'

Privilegium

    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

album privilegia for occasus. Vide in documentis et GUI ut inspicias quae variabiles pendentes privilegii speciei apponantur.

Haec elementa coniunguntur cum valore sequenti default:

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

Munera (Nexus internus significat)

    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

album roles for occasus.

users

    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

Locus (non-LDAP) users/rationum album in nexu creandi.

Indices locorum (non-LDAP) utentium / rationum in nexu creandi.

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

Ldap mapping of users/roles. publicae absent Munera ab usuario existente, si iam existit, removebit.
Utentes Ldap non deleti sunt. Munus imponere conatus pro user non-existente in errore proveniet.

Contentus selectors

  nexus_content_selectors:
  - name: docker-login
    description: Selector for docker login privilege
    search_expression: format=="docker" and path=~"/v2/"

Pro maiori de contento electrix, vide Documentation.

Uti electrix contentus, novum privilegium addis type: repository-content-selector et pertinetcontentSelector

- name: docker-login-privilege
  type: repository-content-selector
  contentSelector: docker-login
  description: 'Login to Docker registry'
  repository: '*'
  actions:
  - read
  - browse

Blobstores et repositoria

    nexus_delete_default_repos: false

Repositoria delere e nexu nexus initialem defaltam configurationem instituere. Hic gradus tantum supplicium est in primo-vicis install (cum nexus_data_dir vacua detecta est).

Repositoria removere ab defalta defalta pro Nexus. Hic gradus tantum fit per primam institutionem (cum nexus_data_dir vacua).

    nexus_delete_default_blobstore: false

Delere default blobstoris e nexu e defalta configuratione initialem install. Id fieri potest, si nexus_delete_default_repos: true et omnia repositoria conformata (vide infra) explicite habent blob_store: custom. Hic gradus tantum supplicium est in primo-vicis install (cum nexus_data_dir vacua detecta est).

Blob repositionis removens (artificiorum binariorum) per defaltam ab initiali configuratione debilitatur. Ad removendum STILLA repono (artificia binarii), averte nexus_delete_default_repos: true. Hic gradus tantum fit per primam institutionem (cum nexus_data_dir vacua).

    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 facere. Viam blobstoris et repositio blobstoris post creationem initialem renovari non potest (quaelibet renovatio hic neglecta erit in re-provisione).

Configurans blobstore in S3 praebetur commodum et non est pars testium automated in travis curritur. Nota quaeso quod actarum in S3 tantum commendatur pro instantiis quae in AWS explicantur.

Creatio Blobstores. Via reposita et repositio repositio non potest renovari post creationem initialem (quaelibet renovatio hic denuo inaugurata ignorabitur).

Erectio blob repono in S3 praebetur ut commodum est. Nota quaeso quod S3 repositio solum commendatur per instantiam quae in AWS explicatur.

    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

Superius est exemplum configuratione ineundo servo Maven.

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

maven hosted repositoria figuratio. Cache negativus config libitum est ac defaltam faciet valoribus supradictis, si omittitur.

configuratione hosted repositoria Maven. Configuratio cache negativa (1) libitum est et defaltam faciet valoribus supradictis si non specificatur.

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

configuratione coetibus Maven.

Omnia tria genera repositoria cum valoribus default sequentibus coniunguntur:

    _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, Rudis, Rubygems, Bower, NPM, Git-LFS et yum genera repositoria:
videre defaults/main.yml ad haec bene:

Docker, Pypi, Rudis, Rubygems, Bower, NPM, Git-LFS et yum repositoria defalta sunt;
Vide defaults/main.yml ad haec bene:

      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

Quaeso note quod aliquas regiones securitatis praebere debes, si aliis repositoriis generibus quam maven uti velis. Hoc falsum est per defaltam

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

Remotis User Regnum potest etiam utens

nexus_rut_auth_realm: true

et titulus potest nativus definiendo

nexus_rut_auth_header: "CUSTOM_HEADER"

Scheduled tasks

    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"

Scheduled tasks for occasus. typeId et opus specificataskProperties/booleanTaskProperties aut suspicari potes;

  • ex Java genus hierarchiae org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • reprehendo HTML negotium creatio formam in navigatro tuo
  • inde petita AJAX inspiciendo in pasco cum munus manually constituens.

Negotium proprietatibus declarandum est in recta yaml obstructionum secundum suum genus:

  • taskProperties omnes chordae proprietates (id est nomina repositoria, nomina repositoria, tempora periodi...).
  • booleanTaskProperties pro omnibus proprietatibus logicalibus (i.e. maxime checkboxs in GUI nexus opus creationis).

Tergum

      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)

Tergum non felis donec vertas nexus_backup_configure Π² true.
Hoc in casu, opus scriptionis scheduled configurabitur ad persequendum Nexus
interuallo specificatur nexus_backup_cron (Annum 21:00 cotidie).
Vide [graovy template for this task](templates/backup.groovy.j2) for details.
Hoc est negotium scheduled sui iuris ab aliis nexus_scheduled_tasksquod tu
nuntia in playbook.

Si vis gyrari / delere tergum, install nexus_backup_rotate: true et configurare numerum tergum velis servare usura nexus_backup_keep_rotations (default 4).

Cum rotatione utens, si vis addere spatii discri additici in processu tergum,
Potes install nexus_backup_rotate_first: true. Hoc configurabit prae-rotatione/deletionem ante tergum. Defalta gyratio fit post tergum creatur. Nota quaeso quod vetus in hoc casu tergum
antequam current tergum fiat delebitur.

Recuperatio procedure

Playbook currere cum parametri -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(exempli gratia, 2017-12-17-21-00-00 pro die 17 mensis Decembris, 2017 ante 21:00

Nexus amotio

Monitum: Haec notitia vena tua omnino delebit. Vide ut ante tergum facere, si necesse est

Utere variabilis nexus_purgesi opus est ut sileo a scabere et instantia nexum restituas omnibus notitiis remotis.

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

Mutatio administrator password post primam institutionem

    nexus_default_admin_password: 'admin123'

Hoc mutari non debet in playbook. Haec variabilis frequentatur cum password Nexus admin default cum primum inauguratus est et efficit ut tesseram admin mutare possimus nexus_admin_password.

Si tesseram administratoris mutare post primam institutionem vis, temporarie mutare potes eam in tesseram veterem ex linea praecepti. Post mutationem nexus_admin_password in playbook vos can run:

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

Telegraphum canale in Nexus Sonatype: https://t.me/ru_nexus_sonatype

Tantum usores descripserunt in aliquet participare possunt. InscribeTe gratissimum esse.

Quod artificium repositoria uteris?

  • Sonatype Nexus est liber

  • Sonatype nexus solvit

  • Artificium est liberum

  • artificium solvit

  • portum

  • pulpam

9 utentes censuerunt. 3 utentes abstinuerunt.

Source: www.habr.com