ProHoster > Blog > Uprava > Namestitev in konfiguracija Nexus Sonatype z uporabo pristopa infrastrukture kot kode
Namestitev in konfiguracija Nexus Sonatype z uporabo pristopa infrastrukture kot kode
Sonatype Nexus je integrirana platforma, prek katere lahko razvijalci posredujejo, shranjujejo in upravljajo odvisnosti Java (Maven), Docker, Python, Ruby, NPM, slike Bower, pakete RPM, gitlfs, Apt, Go, Nuget in distribuirajo varnost svoje programske opreme.
Zakaj potrebujete Sonatype Nexus?
Za shranjevanje zasebnih artefaktov;
Za predpomnjenje artefaktov, ki so preneseni iz interneta;
Artefakti, podprti v osnovnem paketu Sonatype Nexus:
Spremenljivke s privzetimi vrednostmi (glejte default/main.yml):
Splošne spremenljivke
nexus_version: ''
nexus_timezone: 'UTC'
Privzeto bo vloga namestila najnovejšo razpoložljivo različico Nexusa. Različico lahko popravite tako, da spremenite spremenljivko nexus_version. Oglejte si razpoložljive različice na https://www.sonatype.com/download-oss-sonatype.
Če preklopite na novejšo različico, bo vloga poskušala posodobiti vašo namestitev Nexusa.
Če uporabljate starejšo različico Nexusa od najnovejše, se prepričajte, da ne uporabljate funkcij, ki niso na voljo v nameščeni izdaji (na primer, gostovanje repozitorijev yum je na voljo za nexus nad 3.8.0, git lfs repo za nexus nad 3.3.0 itd.)
nexus timezone je ime časovnega pasu Java, ki je lahko uporabno v kombinaciji z naslednjimi cron izrazi za naloge nexus_scheduled.
Vrata in kontekstna pot procesa povezave Java. nexus_default_context_path mora vsebovati poševnico, ko je nastavljena, npr. nexus_default_context_path: '/nexus/'.
Uporabnik in skupina Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Uporabnik in skupina, ki se uporabljata za lastništvo datotek Nexus in zagon storitve, bosta ustvarjena z vlogo, če ta manjka.
nexus_os_user_home_dir: '/home/nexus'
Dovolite spreminjanje privzetega domačega imenika za uporabnika nexusa
nexus_installation_dir vsebuje nameščene izvršljive datoteke
nexus_data_dir vsebuje vso konfiguracijo, repozitorije in prenesene artefakte. Poti blobstoreja po meri nexus_data_dir lahko prilagodite, glejte spodaj nexus_blobstores.
nexus_tmp_dir vsebuje vse začasne datoteke. Privzeta pot za redhat je bila premaknjena iz /tmp za premagovanje morebitnih težav s samodejnimi postopki čiščenja. Glej #168.
Kot drugo opozorilo je tukaj izvleček iz zgornjega dokumenta:
Ni priporočljivo povečati pomnilnika kopice JVM nad priporočene vrednosti, da bi izboljšali zmogljivost. To ima lahko dejansko nasprotni učinek, kar povzroči nepotrebno delo za operacijski sistem.
Administratorsko geslo
nexus_admin_password: 'changeme'
Geslo računa »admin« za nastavitev. To deluje samo pri prvi privzeti namestitvi. Glejte [Spremeni skrbniško geslo po prvi namestitvi](# change-admin-password-after-first-install), če ga želite pozneje spremeniti z vlogo.
Zelo priporočljivo je, da svojega gesla ne shranjujete kot jasno besedilo v priročniku, ampak da uporabite [šifriranje ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (v vrstici ali v ločeni datoteki, naloženi z npr. include_vars)
Privzeto anonimen dostop
nexus_anonymous_access: false
Anonimni dostop je privzeto onemogočen. Preberite več o anonimni dostop.
Te spremenljivke nadzirajo, kako se vloga poveže z API-jem Nexus za oskrbo. Samo za napredne uporabnike. Verjetno ne želite spremeniti teh privzetih nastavitev
Set SSL Reverse Proxy.
Če želite to narediti, morate namestiti httpd. Opomba: kdaj za httpd_setup_enable nastavljeno vrednosttrue, nexus kontakti 127.0.0.1:8081, torej ne neposredno dostopen prek vrat HTTP 8081 z zunanjega naslova IP.
Uporabljeno privzeto ime gostitelja je nexus_public_hostname. Če iz nekega razloga potrebujete različna imena, jih lahko nastavite httpd_server_name z drugačnim pomenom.
С httpd_copy_ssl_files: true (privzeto) bi morala zgornja potrdila obstajati v vašem imeniku playbook in bodo kopirana na strežnik ter konfigurirana v apache.
Če želite uporabiti obstoječa potrdila na strežniku, namestite httpd_copy_ssl_files: false in podajte naslednje spremenljivke:
# 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 je izbirna in ne sme biti nastavljena, če ne želite prilagoditi verižne datoteke
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
Seznam privilegije za nastavitve. Poglejte dokumentacijo in GUI, da preverite, katere spremenljivke je treba nastaviti glede na vrsto privilegija.
Ti elementi so združeni z naslednjimi privzetimi vrednostmi:
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
Seznam lokalnih (ne-LDAP) uporabnikov/računov za ustvarjanje v nexusu.
Seznam lokalnih (ne-LDAP) uporabnikov/računov za ustvarjanje v Nexusu.
Ldap preslikava uporabnikov/vlog. Država absent odstrani vloge obstoječega uporabnika, če ta že obstaja.
Uporabniki Ldap niso izbrisani. Če poskusite nastaviti vlogo za neobstoječega uporabnika, bo prišlo do napake.
Izbirniki vsebine
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Za več informacij o izbirniku vsebine glejte Dokumentacija.
Če želite uporabiti izbirnik vsebine, dodajte nov privilegij z type: repository-content-selector in relevantnocontentSelector
Izbrišite repozitorije iz začetne privzete konfiguracije namestitve nexusa. Ta korak se izvede le pri prvi namestitvi (ko nexus_data_dir je bilo zaznano prazno).
Odstranjevanje repozitorijev iz privzete privzete konfiguracije za Nexus. Ta korak se izvede samo med prvo namestitvijo (ko nexus_data_dir prazno).
nexus_delete_default_blobstore: false
Izbrišite privzeto shrambo blobstore iz začetne privzete konfiguracije namestitve nexusa. To je mogoče storiti le, če nexus_delete_default_repos: true in vsi konfigurirani repozitoriji (glejte spodaj) imajo eksplicitno blob_store: custom. Ta korak se izvede le pri prvi namestitvi (ko nexus_data_dir je bilo zaznano prazno).
Odstranjevanje pomnilnika blob (binarni artefakti) je privzeto onemogočeno v začetni konfiguraciji. Če želite odstraniti shrambo blob (binarni artefakti), izklopite nexus_delete_default_repos: true. Ta korak se izvede samo med prvo namestitvijo (ko nexus_data_dir prazno).
Blobstores ustvariti. Poti blobstore in repozitorija blobstore ni mogoče posodobiti po začetni izdelavi (kakršna koli posodobitev tukaj bo prezrta pri ponovnem zagotavljanju).
Konfiguriranje blobstore na S3 je na voljo kot priročnost in ni del avtomatiziranih testov, ki jih izvajamo na travisu. Upoštevajte, da je shranjevanje na S3 priporočljivo le za primerke, nameščene na AWS.
Ustvarjanje Blobstores. Shranjevalne poti in repozitorija za shranjevanje ni mogoče posodobiti po začetni izdelavi (vsa posodobitev tukaj bo prezrta, ko bo znova nameščena).
Nastavitev shrambe blob na S3 je na voljo kot priročnost. Upoštevajte, da je shramba S3 priporočljiva samo za primerke, uvedene v AWS.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven gostujoči repozitoriji konfiguracijo. Negativna konfiguracija predpomnilnika ni obvezna in bo privzeto uporabila zgornje vrednosti, če jih izpustite.
Konfiguracija gostujoči repozitoriji Maven. Konfiguracija negativnega predpomnilnika (-1) ni obvezna in bo privzeto uporabila zgornje vrednosti, če ni navedena.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Vse tri vrste repozitorija so združene z naslednjimi privzetimi vrednostmi:
_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
Vrste skladišč Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS in yum:
glej defaults/main.yml za te možnosti:
Repozitoriji Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS in yum so privzeto onemogočeni:
Glej defaults/main.yml za te možnosti:
Upoštevajte, da boste morda morali omogočiti določene varnostne obsege, če želite uporabljati druge vrste repozitorijev, ki niso maven. To je privzeto napačno
Varnostno kopiranje ne bo konfigurirano, dokler ne preklopite nexus_backup_configure в true.
V tem primeru bo načrtovano opravilo skripta konfigurirano za izvajanje na Nexusu
v intervalu, določenem v nexus_backup_cron (privzeto vsak dan ob 21).
Za podrobnosti si oglejte [predlogo Groovy za to nalogo](templates/backup.groovy.j2).
To načrtovano opravilo je neodvisno od drugih nexus_scheduled_taskski si
objavite v svoji knjigi iger.
Če želite rotirati/izbrisati varnostne kopije, namestite nexus_backup_rotate: true in konfigurirajte število varnostnih kopij, ki jih želite shraniti nexus_backup_keep_rotations (privzeto 4).
Pri uporabi rotacije, če želite med postopkom varnostnega kopiranja prihraniti dodaten prostor na disku,
Lahko namestite nexus_backup_rotate_first: true. To bo konfiguriralo predhodno rotacijo/brisanje pred varnostnim kopiranjem. Privzeto se rotacija izvede po izdelavi varnostne kopije. Upoštevajte, da so v tem primeru stare varnostne kopije
bodo izbrisani, preden bo narejena trenutna varnostna kopija.
Postopek izterjave
Zaženi playbook s parametrom -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(na primer 2017-12-17-21-00-00 za 17. december 2017 ob 21:00
Odstranjevanje nexusa
Opozorilo: s tem boste popolnoma izbrisali svoje trenutne podatke. Po potrebi prej naredite varnostno kopijo
Uporabite spremenljivko nexus_purgeče morate znova zagnati iz nič in znova namestiti primerek nexusa z odstranjenimi vsemi podatki.
Tega ne bi smeli spreminjati v svojem priročniku. Ta spremenljivka je ob prvi namestitvi poseljena s privzetim skrbniškim geslom za Nexus in zagotavlja, da lahko spremenimo skrbniško geslo v nexus_admin_password.
Če želite skrbniško geslo spremeniti po prvi namestitvi, ga lahko v ukazni vrstici začasno spremenite v staro geslo. Po spremembi nexus_admin_password v svojem priročniku lahko zaženete: