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
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 Dateiennexus_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