ProHoster > Blog > Verwaltung > Installation und Konfiguration von Nexus Sonatype unter Verwendung des Infrastructure-as-Code-Ansatzes
Installation und Konfiguration von Nexus Sonatype unter Verwendung des Infrastructure-as-Code-Ansatzes
Sonatype Nexus ist eine integrierte Plattform, über die Entwickler Java (Maven)-Abhängigkeiten, Docker-, Python-, Ruby-, NPM-, Bower-Images, RPM-Pakete, Gitlfs, Apt, Go, Nuget als Proxy verwenden, speichern und verwalten und ihre Softwaresicherheit verteilen können.
Warum brauchen Sie Sonatype Nexus?
Zur Aufbewahrung privater Artefakte;
Zum Zwischenspeichern von Artefakten, die aus dem Internet heruntergeladen werden;
Im Basispaket Sonatype Nexus unterstützte Artefakte:
Lesen Sie mehr über die Verwendung von Ansible im Internet.
Ansible installieren pip install ansible auf der Workstation, auf der das Playbook ausgeführt wird.
Setzen geerlingguy.java auf der Workstation, auf der das Playbook ausgeführt wird.
Setzen geerlingguy.apache auf der Workstation, auf der das Playbook ausgeführt wird.
Diese Rolle wurde auf CentOS 7, Ubuntu Xenial (16.04) und Bionic (18.04), Debian Jessie und Stretch getestet
jmespath Die Bibliothek muss auf der Workstation installiert sein, auf der das Playbook ausgeführt wird. Installieren: sudo pip install -r requirements.txt
Speichern Sie die Playbook-Datei (Beispiel unten) in der Datei nexus.yml
Führen Sie die Nexus-Installation aus ansible-playbook -i host nexus.yml
Beispiel eines Ansible-Playbooks für die Installation von Nexus ohne LDAP mit Maven (Java), Docker, Python, Ruby, NPM, Bower, RPM und Gitlfs-Repositorys.
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 korrigieren, indem Sie die Variable ändern nexus_version. Verfügbare Versionen finden Sie unter https://www.sonatype.com/download-oss-sonatype.
Wenn Sie zu einer neueren Version wechseln, versucht die Rolle, Ihre Nexus-Installation zu aktualisieren.
Если вы используете более старую версию Nexus, чем последняя, вы должны убедиться, что не используете функции, которые недоступны в установленном выпуске (например, размещенние yum репозиториев доступно для nexus больше чем 3.8.0, git lfs repo для nexus больше чем 3.3.0 usw.)
nexus timezone ist der Name der Java-Zeitzone, der in Kombination mit den folgenden Cron-Ausdrücken für nexus_scheduled-Aufgaben nützlich sein kann.
Der Port und Kontextpfad des Java-Verbindungsprozesses. nexus_default_context_path muss beim Setzen einen Schrägstrich enthalten, z. B.: nexus_default_context_path: '/nexus/'.
Nexus OS-Benutzer und -Gruppe
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Der Benutzer und die Gruppe, die Nexus-Dateien besitzen und den Dienst ausführen, werden von der Rolle erstellt, falls eine fehlt.
nexus_os_user_home_dir: '/home/nexus'
Erlauben Sie das Ändern des Standard-Home-Verzeichnisses für den Nexus-Benutzer
nexus_data_dir enthält alle Konfigurationen, Repositorys und heruntergeladenen Artefakte. Benutzerdefinierte Blobstore-Pfade nexus_data_dir kann individuell angepasst werden, siehe unten nexus_blobstores.
nexus_tmp_dir enthält alle temporären Dateien. Der Standardpfad für Redhat wurde verschoben /tmp um potenzielle Probleme mit automatischen Reinigungsverfahren zu überwinden. Siehe #168.
Dies sind die Standardeinstellungen für Nexus. Bitte ändern Sie diese Werte nichtFalls Sie es nicht gelesen haben Speicherabschnitt für Nexus-Systemanforderungen und verstehen nicht, was sie tun.
Als zweite Warnung hier ein Auszug aus dem oben genannten 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 unnötiger Arbeit für das Betriebssystem führen.
Administrator-Passwort
nexus_admin_password: 'changeme'
Das „Admin“-Kontokennwort für die Einrichtung. Dies funktioniert nur bei der ersten Standardinstallation. Bitte lesen Sie [Administratorkennwort nach der ersten Installation ändern](# change-admin-password-after-first-install), wenn Sie es später mithilfe einer Rolle ändern möchten.
Es wird dringend empfohlen, Ihr Passwort nicht im Klartext im Playbook zu speichern, sondern [Ansible-Vault-Verschlüsselung] zu verwenden (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (entweder inline oder in einer separaten Datei, die z. B. mit include_vars geladen wird)
Standardmäßig anonymer Zugriff
nexus_anonymous_access: false
Der anonyme Zugriff ist standardmäßig deaktiviert. Lesen Sie mehr über anonymer Zugriff.
Diese Variablen steuern, wie die Rolle zur Bereitstellung eine Verbindung zur Nexus-API herstellt. Nur für fortgeschrittene Benutzer. Sie möchten diese Standardeinstellungen wahrscheinlich nicht ändern
Setzen SSL-Reverse-Proxy.
Dazu müssen Sie httpd installieren. Hinweis: Wann für httpd_setup_enable Wert einstellentrue, Nexus-Kontakte 127.0.0.1:8081, also nicht direkt über den HTTP-Port 8081 von der externen IP-Adresse aus erreichbar sein.
Der standardmäßig verwendete Hostname ist nexus_public_hostname. Wenn Sie aus irgendeinem Grund andere Namen benötigen, können Sie diese festlegen httpd_server_name mit einer anderen Bedeutung.
С httpd_copy_ssl_files: true (Standardmäßig) sollten 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 möchten, installieren Sie httpd_copy_ssl_files: false und stellen Sie die folgenden Variablen bereit:
# 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 nicht festgelegt werden, wenn Sie die Kettendatei nicht anpassen möchten
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 Privilegien für Einstellungen. Sehen Sie sich die Dokumentation und die GUI an, um zu überprüfen, welche Variablen je nach Berechtigungstyp festgelegt werden müssen.
Diese Elemente werden mit den folgenden Standardwerten kombiniert:
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
Lokale (Nicht-LDAP-)Benutzer-/Kontenliste zum Erstellen in Nexus.
Liste der lokalen (nicht LDAP) Benutzer/Konten, die in Nexus erstellt werden sollen.
Ldap-Zuordnung von Benutzern/Rollen. Zustand absent entfernt Rollen von einem vorhandenen Benutzer, falls bereits einer vorhanden ist.
Ldap-Benutzer werden nicht gelöscht. Der Versuch, eine Rolle für einen nicht vorhandenen Benutzer festzulegen, 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 unter Dokumentation.
Um die Inhaltsauswahl zu verwenden, fügen Sie eine neue Berechtigung mit hinzu type: repository-content-selector und relevantcontentSelector
Löschen Sie die Repositorys aus der anfänglichen Standardkonfiguration der Nexus-Installation. Dieser Schritt wird nur bei der Erstinstallation ausgeführt (wenn nexus_data_dir wurde als leer erkannt).
Entfernen von Repositorys aus der Standardkonfiguration für Nexus. Dieser Schritt wird nur während der ersten Installation durchgeführt (wenn nexus_data_dir leer).
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) haben eine explizite blob_store: custom. Dieser Schritt wird nur bei der Erstinstallation ausgeführt (wenn nexus_data_dir wurde als leer erkannt).
Das Entfernen von Blobspeicher (binäre Artefakte) ist in der Erstkonfiguration standardmäßig deaktiviert. Um den Blobspeicher (binäre Artefakte) zu entfernen, deaktivieren Sie ihn nexus_delete_default_repos: true. Dieser Schritt wird nur während der ersten Installation durchgeführt (wenn nexus_data_dir leer).
Blobstores erschaffen. Ein Blobstore-Pfad und ein Repository-Blobstore können nach der ersten Erstellung nicht aktualisiert werden (jede Aktualisierung hier wird bei der erneuten Bereitstellung ignoriert).
Die Konfiguration von Blobstore auf S3 dient der Bequemlichkeit und ist nicht Teil der automatisierten Tests, die wir auf Travis ausführen. Bitte beachten Sie, dass die Speicherung auf S3 nur für Instanzen empfohlen wird, die auf AWS bereitgestellt werden.
Schaffung Blobstores. Der Speicherpfad und das Speicher-Repository können nach der ersten Erstellung nicht aktualisiert werden (jede Aktualisierung hier wird bei der erneuten Installation ignoriert).
Der Einfachheit halber wird die Einrichtung von Blob-Speicher auf S3 bereitgestellt. Bitte beachten Sie, dass S3-Speicher nur für Instanzen empfohlen wird, die auf AWS bereitgestellt werden.
Oben sehen Sie eine Beispielkonfiguration Proxy Server Maven.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven gehostete Repositories Aufbau. Die negative Cache-Konfiguration ist optional und verwendet standardmäßig die oben genannten Werte, wenn sie weggelassen wird.
Konfiguration gehostete Repositories Maven. Die negative Cache-Konfiguration (-1) ist optional und verwendet standardmäßig die oben genannten Werte, wenn sie nicht angegeben wird.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
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:
sehen defaults/main.yml für diese Optionen:
Docker-, Pypi-, Raw-, Rubygems-, Bower-, NPM-, Git-LFS- und Yum-Repositorys sind standardmäßig deaktiviert:
sehen defaults/main.yml für diese Optionen:
Bitte beachten Sie, dass Sie möglicherweise bestimmte Sicherheitsbereiche aktivieren müssen, wenn Sie andere Arten von Repositorys als Maven verwenden möchten. Dies ist standardmäßig falsch
Die Sicherung wird erst konfiguriert, wenn Sie wechseln nexus_backup_configure в true.
In diesem Fall wird die geplante Skriptaufgabe für die Ausführung auf Nexus konfiguriert
im angegebenen Intervall nexus_backup_cron (Standard jeden Tag 21:00 Uhr).
Weitere Informationen finden Sie unter [Groovy-Vorlage für diese Aufgabe](templates/backup.groovy.j2).
Diese geplante Aufgabe ist unabhängig von anderen nexus_scheduled_taskswelche du
kündigen Sie in Ihrem Playbook an.
Wenn Sie Backups rotieren/löschen möchten, installieren Sie nexus_backup_rotate: true und konfigurieren Sie die Anzahl der Backups, die Sie speichern möchten nexus_backup_keep_rotations (Standard 4).
Wenn Sie bei Verwendung der Rotation während des Sicherungsvorgangs zusätzlichen Speicherplatz sparen möchten,
Sie können installieren nexus_backup_rotate_first: true. Dadurch wird die Vorrotation/Löschung vor der Sicherung konfiguriert. Standardmäßig erfolgt die Rotation, nachdem ein Backup erstellt wurde. Bitte beachten Sie, dass in diesem Fall die alten Backups verwendet werden
werden gelöscht, bevor das aktuelle Backup erstellt wird.
Wiederherstellungsverfahren
Playbook mit Parameter ausführen -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(Beispiel: 2017-12-17-21-00-00 für den 17. Dezember 2017 um 21:00 Uhr
Nexus entfernen
Warnung: Dadurch werden Ihre aktuellen Daten vollständig gelöscht. Stellen Sie sicher, dass Sie bei Bedarf früher ein Backup erstellen
Verwenden Sie eine Variable nexus_purgewenn Sie einen Neustart durchführen und die Nexus-Instanz mit allen entfernten Daten neu installieren müssen.
Ändern Sie das Administratorkennwort nach der ersten Installation
nexus_default_admin_password: 'admin123'
Dies sollte in Ihrem Playbook nicht geändert werden. Diese Variable wird bei der Erstinstallation mit dem Standard-Nexus-Administratorkennwort gefüllt und stellt sicher, dass wir das Administratorkennwort in ändern können nexus_admin_password.
Wenn Sie das Administratorkennwort nach der ersten Installation ändern möchten, können Sie es über die Befehlszeile vorübergehend auf das alte Kennwort ändern. Nach der veränderung nexus_admin_password In Ihrem Playbook können Sie Folgendes ausführen: