ProHoster > Blog > administracja > Instalacja i konfiguracja Nexusa Sonatype przy użyciu podejścia infrastrukturalnego jako kodu
Instalacja i konfiguracja Nexusa Sonatype przy użyciu podejścia infrastrukturalnego jako kodu
Sonatype Nexus to zintegrowana platforma, za pomocą której programiści mogą proxy, przechowywać i zarządzać zależnościami Java (Maven), obrazami Docker, Python, Ruby, NPM, Bower, pakietami RPM, gitlfs, Apt, Go, Nuget i dystrybuować zabezpieczenia oprogramowania.
Dlaczego potrzebujesz Sonatype Nexus?
Do przechowywania prywatnych artefaktów;
Do buforowania artefaktów pobranych z Internetu;
Artefakty obsługiwane w podstawowym pakiecie Sonatype Nexus:
Zmienne z wartościami domyślnymi (patrz default/main.yml):
Zmienne ogólne
nexus_version: ''
nexus_timezone: 'UTC'
Domyślnie rola zainstaluje najnowszą dostępną wersję Nexusa. Możesz naprawić wersję, zmieniając zmienną nexus_version. Zobacz dostępne wersje na https://www.sonatype.com/download-oss-sonatype.
Jeśli przejdziesz na nowszą wersję, rola spróbuje zaktualizować instalację Nexusa.
Jeśli używasz starszej wersji Nexusa niż najnowsza, upewnij się, że nie korzystasz z funkcji, które nie są dostępne w zainstalowanej wersji (na przykład hosting repozytoriów yum jest dostępny dla nexusa nowszego niż 3.8.0, repozytorium git lfs dla nexusa większego niż 3.3.0 itd.)
nexus timezone to nazwa strefy czasowej Java, która może być użyteczna w połączeniu z następującymi wyrażeniami cron dla zadań nexus_scheduled.
Ścieżka portu i kontekstu procesu połączenia Java. nexus_default_context_path musi zawierać ukośnik, gdy jest ustawiony, np.: nexus_default_context_path: '/nexus/'.
Użytkownik i grupa systemu operacyjnego Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Użytkownik i grupa używane do posiadania plików Nexusa i uruchamiania usługi zostaną utworzone na podstawie roli, jeśli jej brakuje.
nexus_os_user_home_dir: '/home/nexus'
Zezwalaj na zmianę domyślnego katalogu domowego dla użytkownika nexusa
nexus_installation_dir zawiera zainstalowane pliki wykonywalne
nexus_data_dir zawiera całą konfigurację, repozytoria i pobrane artefakty. Niestandardowe ścieżki magazynu obiektów blob nexus_data_dir można dostosować, patrz poniżej nexus_blobstores.
nexus_tmp_dir zawiera wszystkie pliki tymczasowe. Domyślna ścieżka dla redhat została przeniesiona z /tmp aby przezwyciężyć potencjalne problemy związane z automatycznymi procedurami czyszczenia. Zobacz #168.
Jako drugie ostrzeżenie, oto fragment powyższego dokumentu:
Nie zaleca się zwiększania pamięci sterty JVM powyżej zalecanych wartości w celu poprawy wydajności. W rzeczywistości może to mieć odwrotny skutek, powodując niepotrzebną pracę dla systemu operacyjnego.
Hasło administratora
nexus_admin_password: 'changeme'
Hasło do konta „admin” do konfiguracji. Działa to tylko w przypadku pierwszej domyślnej instalacji. Zobacz [Zmień hasło administratora po pierwszej instalacji](# zmień-admin-hasło-po-pierwszej-instalacji), jeśli chcesz zmienić je później, korzystając z roli.
Zdecydowanie zaleca się, aby nie przechowywać hasła w postaci zwykłego tekstu w podręczniku, ale używać [szyfrowania ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (wbudowane lub w osobnym pliku załadowanym np. zmienną include_vars)
Domyślnie dostęp anonimowy
nexus_anonymous_access: false
Dostęp anonimowy jest domyślnie wyłączony. Przeczytaj więcej o dostęp anonimowy.
Te zmienne kontrolują sposób, w jaki rola łączy się z interfejsem API Nexusa w celu udostępnienia. Tylko dla zaawansowanych użytkowników. Prawdopodobnie nie chcesz zmieniać tych ustawień domyślnych
Zestaw Odwrotne proxy SSL.
Aby to zrobić, musisz zainstalować httpd. Uwaga: kiedy httpd_setup_enable ustalić wartośćtrue, kontakty nexusa 127.0.0.1:8081, a zatem nie jest bezpośrednio dostępny poprzez port HTTP 8081 z zewnętrznego adresu IP.
Domyślna używana nazwa hosta to nexus_public_hostname. Jeśli z jakiegoś powodu potrzebujesz różnych nazw, możesz je ustawić httpd_server_name z innym znaczeniem.
С httpd_copy_ssl_files: true (domyślnie) powyższe certyfikaty powinny znajdować się w katalogu playbooka i zostaną skopiowane na serwer i skonfigurowane w Apache.
Jeśli chcesz używać istniejących certyfikatów na serwerze, zainstaluj httpd_copy_ssl_files: false i podaj następujące zmienne:
# 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 jest opcjonalny i powinien pozostać nieustawiony, jeśli nie chcesz dostosowywać pliku łańcucha
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
lista przywileje dla ustawień. Przejrzyj dokumentację i graficzny interfejs użytkownika, aby sprawdzić, które zmienne należy ustawić w zależności od typu uprawnień.
Elementy te są łączone z następującymi wartościami domyślnymi:
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
Lista lokalnych użytkowników/kont (innych niż LDAP) do utworzenia w nexusie.
Lista lokalnych użytkowników/kont (innych niż LDAP) do utworzenia w Nexusie.
Mapowanie Ldap użytkowników/ról. Państwo absent usunie role istniejącego użytkownika, jeśli taki już istnieje.
Użytkownicy Ldap nie są usuwani. Próba ustawienia roli dla nieistniejącego użytkownika zakończy się błędem.
Selektory treści
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Aby uzyskać więcej informacji na temat selektora treści, zobacz Dokumentacja.
Aby użyć selektora treści, dodaj nowe uprawnienie za pomocą type: repository-content-selector i istotnecontentSelector
Usuń repozytoria z początkowej domyślnej konfiguracji instalacji nexusa. Ten krok jest wykonywany tylko przy pierwszej instalacji (kiedy nexus_data_dir został wykryty pusty).
Usuwanie repozytoriów z domyślnej konfiguracji domyślnej dla Nexusa. Ten krok jest wykonywany tylko podczas pierwszej instalacji (kiedy nexus_data_dir pusty).
nexus_delete_default_blobstore: false
Usuń domyślny magazyn blobstore z początkowej konfiguracji domyślnej instalacji nexusa. Można to zrobić tylko wtedy, gdy nexus_delete_default_repos: true a wszystkie skonfigurowane repozytoria (patrz poniżej) mają jawny plik blob_store: custom. Ten krok jest wykonywany tylko przy pierwszej instalacji (kiedy nexus_data_dir został wykryty pusty).
Usuwanie magazynu obiektów BLOB (artefaktów binarnych) jest domyślnie wyłączone w konfiguracji początkowej. Aby usunąć magazyn obiektów BLOB (artefakty binarne), wyłącz tę funkcję nexus_delete_default_repos: true. Ten krok jest wykonywany tylko podczas pierwszej instalacji (kiedy nexus_data_dir pusty).
Blobstore'y stworzyć. Ścieżki magazynu blobstore ani magazynu blobstore repozytorium nie można zaktualizować po początkowym utworzeniu (wszelkie aktualizacje w tym miejscu zostaną zignorowane podczas ponownego udostępniania).
Konfigurowanie magazynu blobstore na platformie S3 ma charakter wygody i nie stanowi części automatycznych testów przeprowadzanych na platformie Travis. Należy pamiętać, że przechowywanie na S3 jest zalecane tylko w przypadku instancji wdrożonych na platformie AWS.
kreacja Blobstore'y. Ścieżka przechowywania i repozytorium przechowywania nie mogą zostać zaktualizowane po początkowym utworzeniu (wszelkie aktualizacje w tym miejscu zostaną zignorowane przy ponownej instalacji).
Konfigurowanie magazynu obiektów BLOB na S3 jest zapewniane dla wygody. Należy pamiętać, że pamięć S3 jest zalecana tylko w przypadku instancji wdrożonych na platformie AWS.
Powyżej znajduje się przykładowa konfiguracja Serwer proxy Mavena.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven hostowane repozytoria konfiguracja. Konfiguracja negatywnej pamięci podręcznej jest opcjonalna i w przypadku pominięcia domyślnie przyjmuje powyższe wartości.
Konfiguracja hostowane repozytoria Mavena. Konfiguracja ujemnej pamięci podręcznej (-1) jest opcjonalna i domyślnie przyjmie powyższe wartości, jeśli nie zostaną określone.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Wszystkie trzy typy repozytoriów są połączone z następującymi wartościami domyślnymi:
_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
Typy repozytoriów Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS i yum:
widzieć defaults/main.yml dla tych opcji:
Repozytoria Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS i yum są domyślnie wyłączone:
zobaczyć defaults/main.yml dla tych opcji:
Pamiętaj, że może być konieczne włączenie pewnych zakresów zabezpieczeń, jeśli chcesz korzystać z repozytoriów innych typów niż maven. Domyślnie jest to fałszywe
Kopia zapasowa nie zostanie skonfigurowana, dopóki się nie przełączysz nexus_backup_configure в true.
W takim przypadku zaplanowane zadanie skryptu zostanie skonfigurowane do uruchomienia na Nexusie
w odstępie określonym w nexus_backup_cron (domyślnie codziennie o 21:00).
Aby uzyskać szczegółowe informacje, zobacz [szablon groovy dla tego zadania] (templates/backup.groovy.j2).
To zaplanowane zadanie jest niezależne od innych nexus_scheduled_tasksktóre ty
ogłosić w swoim podręczniku.
Jeśli chcesz obracać/usuwać kopie zapasowe, zainstaluj nexus_backup_rotate: true i skonfiguruj liczbę kopii zapasowych, które chcesz zapisać nexus_backup_keep_rotations (domyślnie 4).
W przypadku korzystania z rotacji, jeśli chcesz zaoszczędzić dodatkowe miejsce na dysku podczas procesu tworzenia kopii zapasowej,
Możesz zainstalować nexus_backup_rotate_first: true. Spowoduje to skonfigurowanie wstępnej rotacji/usunięcia przed utworzeniem kopii zapasowej. Domyślnie rotacja następuje po utworzeniu kopii zapasowej. Należy pamiętać, że w tym przypadku stare kopie zapasowe
zostaną usunięte przed utworzeniem bieżącej kopii zapasowej.
Procedura odzyskiwania
Uruchom podręcznik z parametrem -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(na przykład 2017-12-17-21-00-00 oznaczający 17 grudnia 2017 r. o godzinie 21:00
Usuwanie nexusa
Ostrzeżenie: spowoduje to całkowite usunięcie bieżących danych. Jeśli to konieczne, pamiętaj o wcześniejszym utworzeniu kopii zapasowej
Użyj zmiennej nexus_purgejeśli chcesz uruchomić ponownie od zera i ponownie zainstalować instancję nexusa z usuniętymi wszystkimi danymi.
Zmień hasło administratora po pierwszej instalacji
nexus_default_admin_password: 'admin123'
Nie należy tego zmieniać w swoim podręczniku. Ta zmienna jest wypełniana domyślnym hasłem administratora Nexusa podczas pierwszej instalacji i zapewnia, że możemy zmienić hasło administratora na nexus_admin_password.
Jeśli chcesz zmienić hasło administratora po pierwszej instalacji, możesz tymczasowo zmienić je na stare hasło z wiersza poleceń. Po zmianie nexus_admin_password w swoim podręczniku możesz uruchomić: