Installieren und konfigurieren Sie Nexus Sonatype mithilfe der Infrastruktur als Code-Ansatz

Sonatype Nexus ist eine integrierte Plattform, mit der Entwickler Java (Maven) -Abhängigkeiten, Docker-, Python-, Ruby-, NPM-, Bower-Images, RPM-Pakete, Gitlfs, Apt, Go, Nuget vertreten und ihre Software verteilen können Bereitstellung.


Warum brauche ich einen Sonatype Nexus?


  • Private Artefakte speichern;
  • Zum Zwischenspeichern von Artefakten, die aus dem Internet heruntergeladen wurden;

Im Sonatype Nexus-Basispaket unterstützte Artefakte:


  • Java, Maven (Glas)
  • Docker
  • Python (pip)
  • Rubin (Edelstein)
  • NPM
  • Laube
  • Yum (U / min)
  • gitlfs
  • Roh
  • Apt (deb)
  • Geh
  • Nuget

Von der Community unterstützte Artefakte:


  • Komponist
  • Conan
  • CPAN
  • ELPA
  • Helm
  • P2
  • R

Installieren Sie Sonatype Nexus unter https://github.com/ansible-ThoTeam/nexus3-oss


Anforderungen


  • Lesen Sie mehr über die Verwendung von Ansible im Internet.
  • Installiere ansible pip install ansible auf der Workstation, auf der das Playbook startet.
  • Installieren Sie geerlingguy.java auf der Workstation, auf der das Playbook gestartet wird .
  • Installieren Sie geerlingguy.apache auf der Workstation, auf der das Playbook gestartet wird .
  • Diese Rolle wurde unter CentOS 7, Ubuntu Xenial (16.04) und Bionic (18.04), Debian Jessie und Stretch getestet
  • jmespath Bibliothek muss auf der Workstation installiert sein, auf der das Playbook jmespath . Führen Sie zur Installation sudo pip install -r requirements.txt
  • Speichern Sie die Playbook-Datei (Beispiel unten) in der Datei nexus.yml
  • Führen Sie die Installation von nexus ansible-playbook -i host nexus.yml

Ein Ansible-Playbook-Beispiel für die Installation von Nexus ohne LDAP mit den Repositorys Maven (Java), Docker, Python, Ruby, NPM, Bower, RPM und Gitlfs.


 --- - 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: support@company.com 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'] } 

Screenshots:




Rollenvariablen


Rollenvariablen


Variablen mit Standardwerten (siehe default/main.yml ):


Allgemeine Variablen


  nexus_version: '' nexus_timezone: 'UTC' 

Standardmäßig installiert die Rolle die neueste verfügbare Version von Nexus. Sie können die Version nexus_version indem Sie die Variable nexus_version . Die verfügbaren Versionen finden Sie unter https://www.sonatype.com/download-oss-sonatype .


Wenn Sie die Version auf eine neuere ändern, versucht die Rolle, Ihr installiertes Nexus zu aktualisieren.


Wenn Sie eine ältere Version von Nexus als die neueste verwenden, sollten Sie sicherstellen, dass Sie keine Funktionen verwenden, die in der installierten Version nicht verfügbar sind (z. B. ist das Hosten von yum-Repositorys für nexus über 3.8.0 verfügbar, git lfs repo für nexus über 3.3.0 usw.)


nexus timezone ist ein Java- nexus timezone , der in Kombination mit den folgenden cron-Ausdrücken für nexus_scheduled-Aufgaben nützlich sein kann.


Nexus-Port und Kontextpfad


  nexus_default_port: 8081 nexus_default_context_path: '/' 

Der Port- und Kontextpfad des Java-Verbindungsprozesses. nexus_default_context_path muss beim nexus_default_context_path einen Schrägstrich enthalten, z. nexus_default_context_path: '/nexus/' .


Nexus-Benutzer und Gruppe


  nexus_os_group: 'nexus' nexus_os_user: 'nexus' 

Der Benutzer und die Gruppe, die zum Besitz der Nexus-Dateien und zum Starten des Dienstes verwendet wurden, werden von der Rolle erstellt, wenn sie fehlen.


  nexus_os_user_home_dir: '/home/nexus' 

Erlaube das Ändern des Standard-Ausgangsverzeichnisses für Nexus-Benutzer


Nexus-Instanzverzeichnisse


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

Nexus-Kataloge.


  • nexus_installation_dir enthält installierte ausführbare Dateien
  • nexus_data_dir enthält alle Konfigurationen, Repositorys und geladenen Artefakte. Benutzerdefinierte Blobstores nexus_data_dir- nexus_data_dir können konfiguriert werden (siehe nexus_blobstores unten).
  • nexus_tmp_dir enthält alle temporären Dateien. Der Standardpfad für redhat wurde von /tmp verschoben, um potenzielle Probleme mit automatischen Bereinigungsverfahren zu beheben. Siehe # 168.

Konfigurieren Sie die Speichernutzung des Nexus JVM


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

Dies sind die Standardeinstellungen für Nexus. Bitte ändern Sie diese Werte nicht, wenn Sie den Speicherabschnitt der Nexus-Systemanforderungen nicht gelesen haben und nicht verstehen, was sie tun.


Als zweite Warnung hier ein Auszug aus dem obigen Dokument:


Es wird nicht empfohlen, den JVM-Heapspeicher über die empfohlenen Werte hinaus zu erhöhen, um die Leistung zu verbessern. Dies kann tatsächlich den gegenteiligen Effekt haben und zu einem unnötigen Betrieb des Betriebssystems führen.

Administratorkennwort


  nexus_admin_password: 'changeme' 

Das Passwort für das Konto "admin" muss konfiguriert werden. Dies funktioniert nur bei der ersten Standardinstallation . Bitte lesen Sie [Ändern des Administratorkennworts nach der ersten Installation] (# change-admin-password-after-first-install), wenn Sie es später mithilfe der Rolle ändern möchten.


Es wird dringend davon abgeraten, Ihr Passwort im Klartext im Playbook zu speichern, aber [ansible-vault-Verschlüsselung] ( https://docs.ansible.com/ansible/latest/user_guide/vault.html ) zu verwenden (entweder eingebettet oder in einer separaten Datei). geladen, z. B. mit include_vars)


Standardmäßiger anonymer Zugriff


  nexus_anonymous_access: false 

Der anonyme Zugriff ist standardmäßig deaktiviert. Lesen Sie mehr über anonymen Zugriff .


Öffentlicher Hostname


  nexus_public_hostname: 'nexus.vm' nexus_public_scheme: https 

Der vollständig qualifizierte Domänenname und das Schema (https oder http), mit denen die Nexus-Instanz ihren Clients zur Verfügung steht.


API-Zugriff für diese Rolle


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

Diese Variablen steuern, wie die Rolle zur Bereitstellung mit der Nexus-API verbunden wird.
Nur für fortgeschrittene Benutzer. Höchstwahrscheinlich möchten Sie diese Standardeinstellungen nicht ändern


Reverse-Proxy-Setup


  httpd_setup_enable: false httpd_server_name: "{{ nexus_public_hostname }}" httpd_default_admin_email: "admin@example.com" 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 

Installieren Sie SSL Reverse Proxy .
Installieren Sie dazu httpd. Hinweis: Wenn httpd_setup_enable auf true , kontaktiert nexus 127.0.0.1:8081 und ist daher nicht direkt über den HTTP-Port 8081 von einer externen IP-Adresse aus erreichbar.


Der standardmäßig verwendete Hostname ist nexus_public_hostname . Wenn Sie aus irgendeinem Grund andere Namen benötigen, können Sie httpd_server_name mit einem anderen Wert httpd_server_name .


Bei httpd_copy_ssl_files: true (Standard) müssen die oben genannten Zertifikate in Ihrem Playbook-Verzeichnis vorhanden sein und werden auf den Server kopiert und in Apache konfiguriert.


Wenn Sie vorhandene Zertifikate auf dem Server verwenden httpd_copy_ssl_files: false , setzen Sie httpd_copy_ssl_files: false und geben Sie die folgenden Variablen an:


  # 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 ist optional und sollte deinstalliert bleiben, wenn Sie die Chain-Datei nicht konfigurieren möchten


  httpd_default_admin_email: "admin@example.com" 

Legen Sie die Standard-Administrator-E-Mail-Adresse fest


LDAP-Konfiguration


LDAP-Verbindungen und Sicherheitsbereich sind standardmäßig deaktiviert


  nexus_ldap_realm: false ldap_connections: [] 

Bei LDAP-Verbindungen lautet jedes Element wie folgt:


  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 

Beispiel LDAP-Konfiguration für anonyme Authentifizierung (anonyme Bindung), es ist auch eine "minimale" Konfiguration:


  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' 

Beispiel für eine LDAP-Konfiguration zur einfachen Authentifizierung (unter Verwendung eines DSA-Kontos):


  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 

Beispiel einer LDAP-Konfiguration für die einfache Authentifizierung (unter Verwendung eines DSA-Kontos) + Gruppen, die als Rollen zugeordnet sind:


  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 

Beispiel einer LDAP-Konfiguration für die einfache Authentifizierung (unter Verwendung eines DSA-Kontos) + Gruppen, die dynamisch als Rollen zugeordnet sind:


  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' 

Privilegien


  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 

Liste der zu konfigurierenden Berechtigungen . In der Dokumentation und in der GUI finden Sie Informationen dazu, welche Variablen je nach Art der Berechtigung festgelegt werden sollen.


Diese Elemente werden mit den folgenden Standardwerten kombiniert:


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

Rollen (innerhalb von Nexus ist verfügbar)


  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 

Eine Liste der zu konfigurierenden Rollen .


Benutzer


  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: support@company.com # password: "s3cr3t" # roles: # - developers # role ID 

Lokale (Nicht-LDAP-) Benutzer- / Kontenliste, die im Nexus erstellt werden soll.


Liste der lokalen (Nicht-LDAP-) Benutzer / Konten, die auf Nexus erstellt werden sollen.


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

Zuordnen von Ldap-Benutzern / Rollen. Ein absent Status entfernt Rollen von einem vorhandenen Benutzer, falls bereits eine vorhanden ist.
Ldap-Benutzer werden nicht gelöscht. Der Versuch, eine Rolle für einen nicht vorhandenen Benutzer zu installieren, führt zu einem Fehler.


Inhaltsselektoren


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

Weitere Informationen zur Inhaltsauswahl finden Sie in der Dokumentation .


Um die Inhaltsauswahl zu verwenden, fügen Sie eine neue Berechtigung mit dem type: repository-content-selector und der entsprechende contentSelector


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

Blobstores und Repositories


  nexus_delete_default_repos: false 

Löschen Sie die Repositorys aus der anfänglichen Standardkonfiguration der Nexus-Installation. Dieser Schritt wird nur bei der nexus_data_dir ausgeführt (wenn nexus_data_dir als leer erkannt wurde).


Entfernen Sie Repositorys aus der ursprünglichen Standardkonfiguration für Nexus. Dieser Schritt wird nur während der ersten Installation ausgeführt (wenn nexus_data_dir leer ist).


  nexus_delete_default_blobstore: false 

Löschen Sie den Standard-Blobstore aus der anfänglichen Standardkonfiguration der Nexus-Installation. Dies ist nur möglich, wenn nexus_delete_default_repos: true und alle konfigurierten Repositorys (siehe unten) einen expliziten blob_store: custom . Dieser Schritt wird nur bei der nexus_data_dir ausgeführt (wenn nexus_data_dir als leer erkannt wurde).


Das Entfernen des Blob-Speichers (binäre Artefakte) ist in der ursprünglichen Konfiguration standardmäßig deaktiviert. nexus_delete_default_repos: true Sie nexus_delete_default_repos: true um den Blob-Speicher (binäre Artefakte) zu löschen. Dieser Schritt wird nur während der ersten Installation ausgeführt (wenn nexus_data_dir leer ist).


  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 zu erstellen. Ein Blobstore-Pfad und ein Repository-Blobstore können nach der ersten Erstellung nicht aktualisiert werden (Aktualisierungen hier werden bei der erneuten Bereitstellung ignoriert).


Das Konfigurieren von Blobstore in S3 wird als Annehmlichkeit bereitgestellt und ist nicht Teil der automatisierten Tests, die wir auf Travis ausführen. Beachten Sie, dass das Speichern in S3 nur für Instanzen empfohlen wird, die in AWS bereitgestellt werden.


Blobstores erstellen Der Speicherpfad und das Speicherrepository können nach der ersten Erstellung nicht aktualisiert werden (Aktualisierungen hier werden bei der Neuinstallation ignoriert).


Das Konfigurieren des Blob-Speichers in S3 wird zur Vereinfachung bereitgestellt. Beachten Sie, dass S3-Speicher nur für Instanzen empfohlen wird, die in AWS bereitgestellt werden.


  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 

Oben sehen Sie ein Beispiel für eine Maven- Proxy- Konfiguration.


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

Konfiguration der von Maven gehosteten Repositorys . Die Konfiguration des negativen Cache ist optional und verwendet standardmäßig die obigen Werte, wenn sie weggelassen wird.


Konfiguration von gehosteten Maven- Repositorys . Eine negative Cache-Konfiguration (-1) ist optional und verwendet standardmäßig die obigen Werte, falls nicht angegeben.


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

Maven- Gruppenkonfiguration .


Alle drei Repository-Typen werden mit den folgenden Standardwerten kombiniert:


  _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- und Yum-Repository-Typen:
Siehe defaults/main.yml für diese Optionen:


Docker-, Pypi-, Raw-, Rubygems-, Bower-, NPM-, Git-LFS- und Yum-Repositorys sind standardmäßig deaktiviert:
Siehe defaults/main.yml für diese Optionen:


  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 

Beachten Sie, dass Sie möglicherweise bestimmte Sicherheitsbereiche aktivieren müssen, wenn Sie neben maven andere Arten von Repositorys verwenden möchten. Dies ist standardmäßig falsch.


 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 kann auch mit aktiviert werden


 nexus_rut_auth_realm: true 

und der Titel kann durch Definieren angepasst werden


 nexus_rut_auth_header: "CUSTOM_HEADER" 

Geplante Aufgaben


  nexus_scheduled_tasks: [] # # Example task to compact blobstore : # - name: compact-docker-blobstore # cron: '0 0 22 * * ?' # typeId: blobstore.compact # task_alert_email: alerts@example.org # 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: alerts@example.org # 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: alerts@example.org # 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: alerts@example.org # optional # taskProperties: # age: "24" 

Geplante Aufgaben zum Konfigurieren. typeId und aufgabenspezifische taskProperties / booleanTaskProperties können entweder erraten werden:


  • aus der Java- org.sonatype.nexus.scheduling.TaskDescriptorSupport
  • Überprüfen Sie das HTML-Formular, um eine Aufgabe in Ihrem Browser zu erstellen
  • Anzeigen von AJAX-Anforderungen in einem Browser beim manuellen Einrichten einer Aufgabe.

Die Eigenschaften der Aufgabe müssen je nach Typ im richtigen yaml-Block deklariert werden :


  • taskProperties für alle Zeichenfolgeneigenschaften (d. taskProperties Repository-Namen, Repository-Namen, Zeiträume ...).
  • booleanTaskProperties für alle logischen Eigenschaften (d. booleanTaskProperties Grunde genommen Kontrollkästchen in der grafischen Oberfläche der Nexus-Erstellungsaufgabe).

Backups


  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) 

Die Sicherung wird erst festgelegt, wenn Sie nexus_backup_configure auf true .
In diesem Fall wird die geplante Skriptaufgabe so konfiguriert, dass sie auf Nexus ausgeführt wird
in dem in nexus_backup_cron angegebenen nexus_backup_cron (Standard ist 21:00 jeden Tag).
Weitere Informationen finden Sie unter [Die groovige Vorlage für diese Aufgabe] (templates / backup.groovy.j2).
Diese geplante Aufgabe ist unabhängig von den anderen nexus_scheduled_tasks Sie nexus_scheduled_tasks
in deinem Spielbuch ankündigen.


Wenn Sie Backups drehen / löschen möchten, setzen Sie nexus_backup_rotate: true und konfigurieren Sie die Anzahl der Backups, die Sie mit nexus_backup_keep_rotations speichern nexus_backup_keep_rotations (Standard ist 4).


Wenn Sie bei Verwendung der Rotation zusätzlichen Speicherplatz während des Sicherungsvorgangs sparen möchten,
Sie können nexus_backup_rotate_first: true . Dadurch wird die Vorrotation / Löschung vor dem Backup eingerichtet. . ,
, .



playbook -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(, 2017-12-17-21-00-00 17 2017 21:00


nexus


: . ,


nexus_purge , nexus .


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


  nexus_default_admin_password: 'admin123' 

playbook . Nexus , nexus_admin_password .


, . nexus_admin_password :


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

Nexus Sonatype: https://t.me/ru_nexus_sonatype

Source: https://habr.com/ru/post/de473358/


All Articles