ProHoster > blog > administratie > Installeren en configureren van Nexus Sonatype met behulp van de infrastructuur als code-aanpak
Installeren en configureren van Nexus Sonatype met behulp van de infrastructuur als code-aanpak
Sonatype Nexus is een geïntegreerd platform waarmee ontwikkelaars Java (Maven)-afhankelijkheden, Docker, Python, Ruby, NPM, Bower-images, RPM-pakketten, gitlfs, Apt, Go, Nuget kunnen proxyen, opslaan en beheren en hun softwarebeveiliging kunnen distribueren.
Waarom heb je Sonatype Nexus nodig?
Voor het opslaan van privé-artefacten;
Voor het cachen van artefacten die zijn gedownload van internet;
Artefacten die worden ondersteund in het basis Sonatype Nexus-pakket:
Variabelen met standaardwaarden (zie default/main.yml):
Algemene variabelen
nexus_version: ''
nexus_timezone: 'UTC'
Standaard installeert de rol de nieuwste beschikbare versie van Nexus. U kunt de versie herstellen door de variabele te wijzigen nexus_version. Bekijk de beschikbare versies op https://www.sonatype.com/download-oss-sonatype.
Als u overstapt naar een nieuwere versie, probeert de rol uw Nexus-installatie bij te werken.
Als je een oudere versie van Nexus gebruikt dan de laatste, moet je ervoor zorgen dat je geen functies gebruikt die niet beschikbaar zijn in de geïnstalleerde release (het hosten van yum-repository's is bijvoorbeeld beschikbaar voor nexus groter dan 3.8.0, git lfs repo voor nexus groter dan 3.3.0 enz.)
nexus timezone is de naam van de Java-tijdzone, die handig kan zijn in combinatie met de volgende cron-expressies voor nexus_scheduled-taken.
Het poort- en contextpad van het Java-verbindingsproces. nexus_default_context_path moet een schuine streep naar voren bevatten als deze is ingesteld, bijvoorbeeld: nexus_default_context_path: '/nexus/'.
Nexus OS-gebruiker en -groep
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
De gebruiker en groep die eigenaar zijn van Nexus-bestanden en de service uitvoeren, worden door de rol aangemaakt als er een ontbreekt.
nexus_os_user_home_dir: '/home/nexus'
Sta het wijzigen van de standaard thuismap voor de Nexus-gebruiker toe
nexus_data_dir bevat alle configuratie, repositories en gedownloade artefacten. Aangepaste blobstore-paden nexus_data_dir kan worden aangepast, zie hieronder nexus_blobstores.
nexus_tmp_dir bevat alle tijdelijke bestanden. Het standaardpad voor redhat is verplaatst van /tmp om potentiële problemen met automatische reinigingsprocedures te overwinnen. Zie #168.
Dit zijn de standaardinstellingen voor Nexus. Wijzig deze waarden alstublieft nietAls je het niet hebt gelezen nexus systeemvereisten geheugensectie en begrijp niet wat ze doen.
Als tweede waarschuwing is hier een fragment uit het bovenstaande document:
Het wordt niet aanbevolen om het JVM-heapgeheugen boven de aanbevolen waarden uit te breiden in een poging de prestaties te verbeteren. Dit kan zelfs het tegenovergestelde effect hebben, wat resulteert in onnodig werk voor het besturingssysteem.
Administrator wachtwoord
nexus_admin_password: 'changeme'
Het “admin”-accountwachtwoord voor installatie. Dit werkt alleen bij de eerste standaardinstallatie. Zie [Wijzig beheerderswachtwoord na eerste installatie](# change-admin-password-after-first-install) als u dit later wilt wijzigen met behulp van een rol.
Het wordt ten zeerste aanbevolen om uw wachtwoord niet in gewone tekst in het playbook op te slaan, maar om [ansible-vault encryptie] te gebruiken (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (inline of in een apart bestand geladen met bijvoorbeeld include_vars)
Standaard anonieme toegang
nexus_anonymous_access: false
Anonieme toegang is standaard uitgeschakeld. Lees meer over anonieme toegang.
Deze variabelen bepalen hoe de rol verbinding maakt met de Nexus API voor inrichting. Alleen voor gevorderde gebruikers. U wilt deze standaardinstellingen waarschijnlijk niet wijzigen
Ingesteld SSL-omgekeerde proxy.
Om dit te doen moet je httpd installeren. Let op: wanneer voor httpd_setup_enable waarde instellentrue, Nexus maakt dus contact met 127.0.0.1:8081 geen rechtstreeks toegankelijk zijn via HTTP-poort 8081 vanaf het externe IP-adres.
De standaard gebruikte hostnaam is nexus_public_hostname. Als u om de een of andere reden andere namen nodig heeft, kunt u dit instellen httpd_server_name met een andere betekenis.
С httpd_copy_ssl_files: true (standaard) zouden de bovenstaande certificaten in uw playbook-map moeten bestaan en naar de server worden gekopieerd en in apache worden geconfigureerd.
Als u bestaande certificaten op de server wilt gebruiken, installeer dan httpd_copy_ssl_files: false en geef de volgende variabelen op:
# 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 is optioneel en moet niet worden ingesteld als u het ketenbestand niet wilt aanpassen
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
Lijst privileges voor instellingen. Bekijk de documentatie en GUI om te controleren welke variabelen moeten worden ingesteld, afhankelijk van het privilegetype.
Deze elementen worden gecombineerd met de volgende standaardwaarden:
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 (niet-LDAP) gebruikers/accountlijst om in Nexus aan te maken.
Lijst met lokale (niet-LDAP) gebruikers/accounts die in Nexus moeten worden aangemaakt.
Ldap-toewijzing van gebruikers/rollen. Staat absent verwijdert rollen van een bestaande gebruiker als deze al bestaat.
Ldap-gebruikers worden niet verwijderd. Als u probeert een rol in te stellen voor een niet-bestaande gebruiker, resulteert dit in een fout.
Inhoudselectors
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Zie voor meer informatie over de inhoudkiezer Documentatie.
Om de inhoudkiezer te gebruiken, voegt u een nieuw privilege toe met type: repository-content-selector en relevantcontentSelector
Verwijder de opslagplaatsen uit de initiële standaardconfiguratie van Nexus Install. Deze stap wordt alleen uitgevoerd bij de eerste installatie (wanneer nexus_data_dir leeg gedetecteerd).
Het verwijderen van opslagplaatsen uit de standaardconfiguratie voor Nexus. Deze stap wordt alleen uitgevoerd tijdens de eerste installatie (wanneer nexus_data_dir leeg).
nexus_delete_default_blobstore: false
Verwijder de standaard-blobstore uit de initiële standaardconfiguratie van Nexus Install. Dit kan alleen worden gedaan als nexus_delete_default_repos: true en alle geconfigureerde repository's (zie hieronder) hebben een expliciete blob_store: custom. Deze stap wordt alleen uitgevoerd bij de eerste installatie (wanneer nexus_data_dir leeg gedetecteerd).
Het verwijderen van blobopslag (binaire artefacten) is standaard uitgeschakeld in de initiële configuratie. Als u blobopslag (binaire artefacten) wilt verwijderen, schakelt u uit nexus_delete_default_repos: true. Deze stap wordt alleen uitgevoerd tijdens de eerste installatie (wanneer nexus_data_dir leeg).
Blobwinkels maken. Een blobstore-pad en een blobstore van een opslagplaats kunnen niet worden bijgewerkt na de eerste creatie (elke update hier wordt genegeerd bij het opnieuw inrichten).
Het configureren van blobstore op S3 wordt voor uw gemak aangeboden en maakt geen deel uit van de geautomatiseerde tests die we op travis uitvoeren. Houd er rekening mee dat opslaan op S3 alleen wordt aanbevolen voor instanties die op AWS zijn geïmplementeerd.
Creatie Blobwinkels. Het opslagpad en de opslagplaats kunnen niet worden bijgewerkt nadat deze voor het eerst zijn gemaakt (elke update hier wordt genegeerd wanneer deze opnieuw wordt geïnstalleerd).
Het instellen van blobopslag op S3 wordt voor uw gemak aangeboden. Houd er rekening mee dat S3-opslag alleen wordt aanbevolen voor instanties die op AWS zijn geïmplementeerd.
Hierboven ziet u een voorbeeldconfiguratie 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 gehoste opslagplaatsen configuratie. Negatieve cacheconfiguratie is optioneel en zal standaard de bovenstaande waarden gebruiken als deze worden weggelaten.
Configuratie gehoste opslagplaatsen Maven. De negatieve cacheconfiguratie (-1) is optioneel en zal standaard de bovenstaande waarden gebruiken als deze niet is opgegeven.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Alle drie repositorytypen worden gecombineerd met de volgende standaardwaarden:
_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- en yum-repositorytypen:
zien defaults/main.yml voor deze opties:
Docker-, Pypi-, Raw-, Rubygems-, Bower-, NPM-, Git-LFS- en yum-repository's zijn standaard uitgeschakeld:
Zien defaults/main.yml voor deze opties:
Houd er rekening mee dat u mogelijk bepaalde beveiligingsscopes moet inschakelen als u andere typen repository's dan maven wilt gebruiken. Dit is standaard onwaar
Back-up wordt pas geconfigureerd als u overstapt nexus_backup_configure в true.
In dit geval wordt de geplande scripttaak geconfigureerd voor uitvoering op Nexus
met het interval gespecificeerd in nexus_backup_cron (standaard elke dag 21:00 uur).
Zie [groovy-sjabloon voor deze taak](templates/backup.groovy.j2) voor details.
Deze geplande taak is onafhankelijk van andere nexus_scheduled_taskswelke jij
kondig het aan in uw draaiboek.
Als u back-ups wilt roteren/verwijderen, installeert u dit nexus_backup_rotate: true en configureer het aantal back-ups dat u wilt gebruiken nexus_backup_keep_rotations (standaard 4).
Als u rotatie gebruikt en u extra schijfruimte wilt besparen tijdens het back-upproces,
U kunt installeren nexus_backup_rotate_first: true. Hiermee wordt pre-rotatie/verwijdering vóór de back-up geconfigureerd. Standaard vindt rotatie plaats nadat een back-up is gemaakt. Houd er rekening mee dat in dit geval de oude back-ups worden gemaakt
wordt verwijderd voordat de huidige back-up wordt gemaakt.
Herstelprocedure
Voer het draaiboek uit met parameter -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(bijvoorbeeld 2017-12-17-21-00-00 voor 17 december 2017 om 21:00 uur
Nexus verwijderen
Waarschuwing: hierdoor worden uw huidige gegevens volledig verwijderd. Zorg ervoor dat u indien nodig eerder een back-up maakt
Gebruik een variabele nexus_purgeals u helemaal opnieuw moet opstarten en de Nexus-instantie opnieuw moet installeren, waarbij alle gegevens zijn verwijderd.
Wijzig het beheerderswachtwoord na de eerste installatie
nexus_default_admin_password: 'admin123'
Dit mag niet worden gewijzigd in uw draaiboek. Deze variabele wordt bij de eerste installatie gevuld met het standaard Nexus-beheerderswachtwoord en zorgt ervoor dat we het beheerderswachtwoord kunnen wijzigen in nexus_admin_password.
Als u het beheerderswachtwoord na de eerste installatie wilt wijzigen, kunt u dit tijdelijk vanaf de opdrachtregel wijzigen in het oude wachtwoord. Na verandering nexus_admin_password in je playbook kun je het volgende uitvoeren: