ProHoster > Blog > Pangangasiwa > Pag-install at pag-configure ng Nexus Sonatype gamit ang imprastraktura bilang diskarte sa code
Pag-install at pag-configure ng Nexus Sonatype gamit ang imprastraktura bilang diskarte sa code
Ang Sonatype Nexus ay isang pinagsama-samang platform kung saan ang mga developer ay maaaring mag-proxy, mag-imbak at mamahala ng Java (Maven) dependencies, Docker, Python, Ruby, NPM, Bower images, RPM packages, gitlfs, Apt, Go, Nuget, at ipamahagi ang kanilang software security.
Bakit kailangan mo ng Sonatype Nexus?
Para sa pag-iimbak ng mga pribadong artifact;
Para sa pag-cache ng mga artifact na na-download mula sa Internet;
Mga artifact na sinusuportahan sa pangunahing Sonatype Nexus package:
Magbasa tungkol sa paggamit ng ansible sa Internet.
I-install ang ansible pip install ansible sa workstation kung saan tumatakbo ang playbook.
Itakda geerlingguy.java sa workstation kung saan tumatakbo ang playbook.
Itakda geerlingguy.apache sa workstation kung saan tumatakbo ang playbook.
Ang papel na ito ay nasubok sa CentOS 7, Ubuntu Xenial (16.04) at Bionic (18.04), Debian Jessie at Stretch
jmespath Dapat na naka-install ang library sa workstation kung saan tumatakbo ang playbook. Upang i-install: sudo pip install -r requirements.txt
I-save ang playbook file (halimbawa sa ibaba) sa nexus.yml file
Patakbuhin ang pag-install ng nexus ansible-playbook -i host nexus.yml
Halimbawa ng ansible-playbook para sa pag-install ng nexus nang walang LDAP na may Maven (java), Docker, Python, Ruby, NPM, Bower, RPM at gitlfs repository.
Mga variable na may mga default na halaga (tingnan default/main.yml):
Pangkalahatang mga variable
nexus_version: ''
nexus_timezone: 'UTC'
Bilang default, i-install ng tungkulin ang pinakabagong available na bersyon ng Nexus. Maaari mong ayusin ang bersyon sa pamamagitan ng pagpapalit ng variable nexus_version. Tingnan ang mga available na bersyon sa https://www.sonatype.com/download-oss-sonatype.
Kung lilipat ka sa isang mas bagong bersyon, susubukan ng tungkulin na i-update ang iyong pag-install ng Nexus.
Kung gumagamit ka ng mas lumang bersyon ng Nexus kaysa sa pinakabago, dapat mong tiyakin na hindi ka gumagamit ng mga feature na hindi available sa naka-install na release (halimbawa, ang pagho-host ng mga yum repository ay available para sa nexus na higit sa 3.8.0, git lfs repo. para sa nexus na higit sa 3.3.0 atbp.)
nexus timezone ay ang pangalan ng Java time zone, na maaaring maging kapaki-pakinabang sa kumbinasyon ng mga sumusunod na cron expression para sa nexus_scheduled na mga gawain.
Ang port at path ng konteksto ng proseso ng koneksyon sa Java. nexus_default_context_path dapat maglaman ng forward slash kapag nakatakda ito, hal: nexus_default_context_path: '/nexus/'.
Gumagamit at Grupo ng Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Ang user at pangkat na dating nagmamay-ari ng mga Nexus file at nagpapatakbo ng serbisyo ay gagawin ng tungkulin kung may nawawala.
nexus_os_user_home_dir: '/home/nexus'
Payagan ang pagbabago ng default na home directory para sa nexus user
nexus_installation_dir naglalaman ng mga naka-install na executable na file
nexus_data_dir naglalaman ng lahat ng configuration, repository at na-download na artifact. Mga custom na path ng blobstore nexus_data_dir maaaring i-customize, tingnan sa ibaba nexus_blobstores.
nexus_tmp_dir naglalaman ng lahat ng pansamantalang file. Ang default na landas para sa redhat ay inilipat mula sa /tmp upang malampasan ang mga potensyal na problema sa mga awtomatikong pamamaraan ng paglilinis. Tingnan ang #168.
Bilang pangalawang babala, narito ang isang sipi mula sa dokumento sa itaas:
Hindi inirerekumenda na dagdagan ang memorya ng JVM heap na lampas sa mga inirekumendang halaga sa pagtatangkang mapabuti ang pagganap. Ito ay maaaring aktwal na magkaroon ng kabaligtaran na epekto, na nagreresulta sa hindi kinakailangang trabaho para sa operating system.
Password ng administrator
nexus_admin_password: 'changeme'
Ang password ng "admin" account para sa pag-setup. Gumagana lamang ito sa unang default na pag-install. Pakitingnan ang [Baguhin ang password ng admin pagkatapos ng unang pag-install](# change-admin-password-after-first-install) kung gusto mo itong baguhin sa ibang pagkakataon gamit ang isang tungkulin.
Lubos na inirerekomenda na huwag iimbak ang iyong password sa malinaw na teksto sa playbook, ngunit gamitin ang [ansible-vault encryption] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (alinman sa inline o sa isang hiwalay na file na puno ng hal. include_vars)
Anonymous na pag-access bilang default
nexus_anonymous_access: false
Ang anonymous na pag-access ay hindi pinagana bilang default. Magbasa pa tungkol sa hindi kilalang pag-access.
Kinokontrol ng mga variable na ito kung paano kumokonekta ang tungkulin sa Nexus API para sa provisioning. Para sa mga advanced na user lamang. Malamang na ayaw mong baguhin ang mga default na setting na ito
Itakda SSL Reverse Proxy.
Upang gawin ito kailangan mong i-install ang httpd. Tandaan: kailan para sa httpd_setup_enable itakda ang halagatrue, mga contact sa nexus 127.0.0.1:8081, kaya hindi pagiging direktang naa-access sa pamamagitan ng HTTP port 8081 mula sa panlabas na IP address.
Ang default na hostname na ginamit ay nexus_public_hostname. Kung kailangan mo ng iba't ibang mga pangalan para sa ilang kadahilanan, maaari mong itakda httpd_server_name na may ibang kahulugan.
Π‘ httpd_copy_ssl_files: true (bilang default) ang mga sertipiko sa itaas ay dapat na umiiral sa iyong direktoryo ng playbook at makokopya sa server at mai-configure sa apache.
Kung gusto mong gumamit ng mga umiiral nang certificate sa server, i-install httpd_copy_ssl_files: false at ibigay ang mga sumusunod na variable:
# 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 ay opsyonal at dapat iwanang hindi nakatakda kung ayaw mong i-customize ang chain file
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
Listahan mga pribilehiyo para sa mga setting. Tingnan ang dokumentasyon at GUI upang suriin kung aling mga variable ang kailangang itakda depende sa uri ng pribilehiyo.
Ang mga elementong ito ay pinagsama sa mga sumusunod na default na halaga:
Mga Tungkulin (sa loob ng Nexus ang ibig sabihin nito)
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
Listahan ng mga lokal (hindi LDAP) na user/account na gagawin sa nexus.
Listahan ng mga lokal (hindi LDAP) na user/account na gagawin sa Nexus.
Ldap mapping ng mga user/role. Estado absent ay mag-aalis ng mga tungkulin mula sa isang umiiral nang user kung mayroon na.
Ang mga gumagamit ng Ldap ay hindi tinatanggal. Ang pagsubok na magtakda ng tungkulin para sa isang hindi umiiral na user ay magreresulta sa isang error.
Mga tagapili ng nilalaman
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Para sa higit pang impormasyon tungkol sa tagapili ng nilalaman, tingnan Dokumentasyon.
Upang magamit ang tagapili ng nilalaman, magdagdag ng bagong pribilehiyo sa type: repository-content-selector at may kaugnayancontentSelector
Tanggalin ang mga repository mula sa nexus install initial default configuration. Ang hakbang na ito ay isinasagawa lamang sa unang beses na pag-install (kapag nexus_data_dir ay nakitang walang laman).
Pag-alis ng mga repository mula sa default na default na configuration para sa Nexus. Ang hakbang na ito ay isinasagawa lamang sa unang pag-install (kapag nexus_data_dir walang laman).
nexus_delete_default_blobstore: false
Tanggalin ang default na blobstore mula sa nexus install initial default configuration. Magagawa lamang ito kung nexus_delete_default_repos: true at lahat ng naka-configure na repository (tingnan sa ibaba) ay may tahasang blob_store: custom. Ang hakbang na ito ay isinasagawa lamang sa unang beses na pag-install (kapag nexus_data_dir ay nakitang walang laman).
Ang pag-alis ng blob storage (binary artifacts) ay hindi pinagana bilang default mula sa paunang configuration. Para alisin ang blob storage (binary artifacts), i-off nexus_delete_default_repos: true. Ang hakbang na ito ay isinasagawa lamang sa unang pag-install (kapag nexus_data_dir walang laman).
Mga Blobstore gumawa. Ang isang blobstore path at isang repository na blobstore ay hindi maa-update pagkatapos ng paunang paggawa (anumang update dito ay hindi papansinin sa muling pagbibigay).
Ang pag-configure ng blobstore sa S3 ay ibinibigay bilang kaginhawahan at hindi bahagi ng mga automated na pagsubok na pinapatakbo namin sa travis. Pakitandaan na ang pag-iimbak sa S3 ay inirerekomenda lamang para sa mga pagkakataong naka-deploy sa AWS.
Paglikha Mga Blobstore. Ang landas ng imbakan at imbakan ng imbakan ay hindi maa-update pagkatapos ng paunang paggawa (anumang pag-update dito ay hindi papansinin kapag na-install muli).
Ang pag-set up ng blob storage sa S3 ay ibinibigay bilang kaginhawahan. Pakitandaan na ang S3 storage ay inirerekomenda lamang para sa mga pagkakataong naka-deploy sa AWS.
Sa itaas ay isang halimbawang pagsasaayos 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 naka-host na mga repositoryo pagsasaayos. Opsyonal ang negatibong cache config at magiging default sa mga value sa itaas kung aalisin.
Configuration naka-host na mga repositoryo Maven. Ang negatibong pagsasaayos ng cache (-1) ay opsyonal at magiging default sa mga halaga sa itaas kung hindi tinukoy.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
Lahat ng tatlong uri ng repository ay pinagsama sa mga sumusunod na default na halaga:
_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
Mga uri ng Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS at yum repository:
makita defaults/main.yml para sa mga pagpipiliang ito:
Ang Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS at yum repository ay hindi pinagana bilang default:
Tingnan defaults/main.yml para sa mga pagpipiliang ito:
Pakitandaan na maaaring kailanganin mong paganahin ang ilang partikular na saklaw ng seguridad kung gusto mong gumamit ng iba pang uri ng mga repository maliban sa maven. Ito ay mali bilang default
Hindi mako-configure ang backup hanggang sa lumipat ka nexus_backup_configure Π² true.
Sa kasong ito, ang naka-iskedyul na gawain sa script ay iko-configure upang tumakbo sa Nexus
sa pagitan na tinukoy sa nexus_backup_cron (default 21:00 araw-araw).
Tingnan ang [groovy template para sa gawaing ito](templates/backup.groovy.j2) para sa mga detalye.
Ang nakaiskedyul na gawaing ito ay independyente sa iba nexus_scheduled_tasksna ikaw
ipahayag sa iyong playbook.
Kung gusto mong i-rotate/delete ang mga backup, i-install nexus_backup_rotate: true at i-configure ang bilang ng mga backup na gusto mong i-save gamit nexus_backup_keep_rotations (default 4).
Kapag gumagamit ng pag-ikot, kung gusto mong makatipid ng karagdagang espasyo sa disk sa panahon ng proseso ng pag-backup,
Maaari mong i-install nexus_backup_rotate_first: true. Iko-configure nito ang pre-rotation/delete bago ang backup. Bilang default, nangyayari ang pag-ikot pagkatapos gumawa ng backup. Pakitandaan na sa kasong ito ang mga lumang backup
ay tatanggalin bago gawin ang kasalukuyang backup.
Pamamaraan sa pagbawi
Patakbuhin ang playbook na may parameter -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(halimbawa, 2017-12-17-21-00-00 para sa Disyembre 17, 2017 nang 21:00
Tinatanggal ang nexus
Babala: Ito ay ganap na tatanggalin ang iyong kasalukuyang data. Tiyaking gumawa ng backup nang mas maaga kung kinakailangan
Gumamit ng variable nexus_purgekung kailangan mong i-restart mula sa simula at muling i-install ang nexus instance na inalis ang lahat ng data.
Baguhin ang password ng administrator pagkatapos ng unang pag-install
nexus_default_admin_password: 'admin123'
Hindi ito dapat baguhin sa iyong playbook. Ang variable na ito ay na-populate ng default na Nexus admin password noong unang na-install at tinitiyak na maaari naming baguhin ang admin password sa nexus_admin_password.
Kung gusto mong baguhin ang password ng administrator pagkatapos ng unang pag-install, maaari mo itong pansamantalang baguhin sa lumang password mula sa command line. Pagkatapos ng pagbabago nexus_admin_password sa iyong playbook maaari mong patakbuhin ang: