ProHoster > blog > Utawala > Inasakinisha na kusanidi Nexus Sonatype kwa kutumia miundombinu kama mbinu ya msimbo
Inasakinisha na kusanidi Nexus Sonatype kwa kutumia miundombinu kama mbinu ya msimbo
Sonatype Nexus ni jukwaa lililojumuishwa ambalo wasanidi programu wanaweza kutumia seva mbadala, kuhifadhi na kudhibiti vitegemezi vya Java (Maven), Docker, Python, Ruby, NPM, picha za Bower, vifurushi vya RPM, gitlfs, Apt, Go, Nuget, na kusambaza usalama wa programu zao.
Kwa nini unahitaji Sonatype Nexus?
Kwa kuhifadhi mabaki ya kibinafsi;
Kwa mabaki ya caching ambayo yanapakuliwa kutoka kwenye mtandao;
Vizalia vya programu vinavyotumika katika kifurushi cha msingi cha Sonatype Nexus:
Sakinisha inavyowezekana pip install ansible kwenye kituo cha kazi ambapo kitabu cha kucheza kinaendeshwa.
Weka geerlingguy.java kwenye kituo cha kazi ambapo kitabu cha kucheza kinaendeshwa.
Weka geerlingguy.apache kwenye kituo cha kazi ambapo kitabu cha kucheza kinaendeshwa.
Jukumu hili limejaribiwa kwenye CentOS 7, Ubuntu Xenial (16.04) na Bionic (18.04), Debian Jessie na Stretch.
jmespath Ni lazima maktaba isakinishwe kwenye kituo cha kazi ambapo kitabu cha kucheza kinaendeshwa. Ili kusakinisha: sudo pip install -r requirements.txt
Hifadhi faili ya kitabu cha kucheza (mfano hapa chini) kwenye faili ya nexus.yml
Endesha usakinishaji wa nexus ansible-playbook -i host nexus.yml
Mfano ansible-playbook kwa kusakinisha nexus bila LDAP na Maven (java), Docker, Python, Ruby, NPM, Bower, RPM na hazina za gitlfs.
Vigezo vilivyo na maadili chaguo-msingi (tazama default/main.yml):
Vigezo vya jumla
nexus_version: ''
nexus_timezone: 'UTC'
Kwa chaguomsingi, jukumu litasakinisha toleo jipya zaidi linalopatikana la Nexus. Unaweza kurekebisha toleo kwa kubadilisha tofauti nexus_version. Tazama matoleo yanayopatikana kwa https://www.sonatype.com/download-oss-sonatype.
Ukibadilisha hadi toleo jipya zaidi, jukumu litajaribu kusasisha usakinishaji wako wa Nexus.
Ikiwa unatumia toleo la zamani la Nexus kuliko la hivi punde zaidi, unapaswa kuhakikisha kuwa hutumii vipengele ambavyo havipatikani kwenye toleo lililosakinishwa (kwa mfano, kupangisha hazina za yum kunapatikana kwa nexus kubwa kuliko 3.8.0, git lfs repo kwa uhusiano mkubwa kuliko 3.3.0 n.k.)
nexus timezone ni jina la eneo la saa la Java, ambalo linaweza kuwa muhimu pamoja na misemo ifuatayo ya cron kwa kazi zilizopangwa.
Njia ya bandari na muktadha wa mchakato wa muunganisho wa Java. nexus_default_context_path lazima iwe na kufyeka mbele inapowekwa, kwa mfano: nexus_default_context_path: '/nexus/'.
Mtumiaji na Kikundi cha Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Mtumiaji na kikundi kinachotumiwa kumiliki faili za Nexus na kuendesha huduma kitaundwa na jukumu ikiwa moja haipo.
nexus_os_user_home_dir: '/home/nexus'
Ruhusu kubadilisha saraka chaguo-msingi ya nyumbani kwa mtumiaji wa nexus
nexus_installation_dir ina faili zinazoweza kutekelezwa zilizosakinishwa
nexus_data_dir ina usanidi wote, hazina na vizalia vya programu vilivyopakuliwa. Njia maalum za duka la blobs nexus_data_dir inaweza kubinafsishwa, tazama hapa chini nexus_blobstores.
nexus_tmp_dir ina faili zote za muda. Njia chaguomsingi ya redhat imehamishwa kutoka /tmp ili kuondokana na matatizo yanayowezekana na taratibu za kusafisha moja kwa moja. Angalia #168.
Kama onyo la pili, hapa kuna nukuu kutoka kwa hati hapo juu:
Haipendekezi kuongeza kumbukumbu ya lundo la JVM zaidi ya maadili yaliyopendekezwa ili kujaribu kuboresha utendaji. Hii inaweza kweli kuwa na athari kinyume, na kusababisha kazi isiyo ya lazima kwa mfumo wa uendeshaji.
Nenosiri la msimamizi
nexus_admin_password: 'changeme'
Nenosiri la akaunti ya "msimamizi" kwa ajili ya kusanidi. Hii inafanya kazi tu kwenye usakinishaji chaguo-msingi wa kwanza. Tafadhali angalia [Badilisha nenosiri la msimamizi baada ya usakinishaji wa kwanza](# badilisha-admin-nenosiri-baada-ya-kwanza-kusakinisha) ikiwa ungependa kulibadilisha baadaye kwa kutumia jukumu.
Inapendekezwa sana usihifadhi nenosiri lako katika maandishi wazi katika kitabu cha kucheza, lakini utumie [usible-vault encryption] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (ama inline au katika faili tofauti iliyopakiwa kwa mfano include_vars)
Ufikiaji bila jina kwa chaguomsingi
nexus_anonymous_access: false
Ufikiaji usiojulikana umezimwa kwa chaguomsingi. Soma zaidi kuhusu ufikiaji usiojulikana.
Vigezo hivi hudhibiti jinsi jukumu linavyounganishwa na API ya Nexus kwa utoaji. Kwa watumiaji wa hali ya juu pekee. Labda hutaki kubadilisha mipangilio hii chaguomsingi
Weka Wakala wa Nyuma wa SSL.
Ili kufanya hivyo unahitaji kusakinisha httpd. Kumbuka: lini kwa httpd_setup_enable kuweka thamanitrue, anwani za uhusiano 127.0.0.1:8081, kwa hivyo hakuna kufikiwa moja kwa moja kupitia HTTP port 8081 kutoka kwa anwani ya IP ya nje.
Jina la mpangishaji chaguo-msingi linalotumika ni nexus_public_hostname. Ikiwa unahitaji majina tofauti kwa sababu fulani, unaweza kuweka httpd_server_name yenye maana tofauti.
Π‘ httpd_copy_ssl_files: true (kwa chaguo-msingi) vyeti vilivyo hapo juu vinapaswa kuwepo katika saraka ya kitabu chako cha kucheza na vitanakiliwa kwa seva na kusanidiwa katika apache.
Ikiwa unataka kutumia vyeti vilivyopo kwenye seva, sakinisha httpd_copy_ssl_files: false na kutoa vigezo vifuatavyo:
# 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 ni ya hiari na inapaswa kuachwa bila kuwekwa ikiwa hutaki kubinafsisha faili ya mnyororo
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
Orodha ya marupurupu kwa mipangilio. Angalia hati na GUI ili kuangalia ni vigeu gani vinahitaji kuwekwa kulingana na aina ya upendeleo.
Vipengee hivi vimeunganishwa na maadili chaguomsingi yafuatayo:
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
Orodha ya akaunti za ndani (zisizo za LDAP) za kuunda kwenye uhusiano.
Orodha ya watumiaji/akaunti za ndani (zisizo za LDAP) za kuunda katika Nexus.
Ramani ya Ldap ya watumiaji/majukumu. Jimbo absent itaondoa majukumu kutoka kwa mtumiaji aliyepo ikiwa tayari ipo.
Watumiaji wa Ldap hawajafutwa. Kujaribu kuweka jukumu kwa mtumiaji ambaye hayupo kutasababisha hitilafu.
Viteuzi vya yaliyomo
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Kwa maelezo zaidi kuhusu kiteuzi cha maudhui, ona Nyaraka.
Ili kutumia kiteuzi cha maudhui, ongeza upendeleo mpya na type: repository-content-selector na husikacontentSelector
Futa hazina kutoka kwa usanidi wa awali wa kusakinisha uhusiano. Hatua hii inatekelezwa tu kwenye usakinishaji wa mara ya kwanza (wakati nexus_data_dir imegunduliwa tupu).
Inaondoa hazina kutoka kwa usanidi chaguo-msingi wa Nexus. Hatua hii inafanywa tu wakati wa usakinishaji wa kwanza (wakati nexus_data_dir tupu).
nexus_delete_default_blobstore: false
Futa blobsstore chaguo-msingi kutoka kwa usanidi chaguo-msingi wa nexus. Hii inaweza kufanyika tu ikiwa nexus_delete_default_repos: true na hazina zote zilizosanidiwa (tazama hapa chini) zina wazi blob_store: custom. Hatua hii inatekelezwa tu kwenye usakinishaji wa mara ya kwanza (wakati nexus_data_dir imegunduliwa tupu).
Kuondoa hifadhi ya blob (vizalia vya awali vya binary) kumezimwa kwa chaguo-msingi kutoka kwa usanidi wa awali. Ili kuondoa hifadhi ya blob (vizalia vya awali vya binary), zima nexus_delete_default_repos: true. Hatua hii inafanywa tu wakati wa usakinishaji wa kwanza (wakati nexus_data_dir tupu).
Blobstores kuunda. Njia ya blobstore na hazina ya blobstore haiwezi kusasishwa baada ya uundaji wa awali (sasisho lolote hapa litapuuzwa wakati wa kutoa upya).
Kusanidi blobstore kwenye S3 kunatolewa kama urahisi na si sehemu ya majaribio ya kiotomatiki tunayofanya kwenye travis. Tafadhali kumbuka kuwa kuhifadhi kwenye S3 kunapendekezwa tu kwa matukio yaliyowekwa kwenye AWS.
Uumbaji Blobstores. Njia ya hifadhi na hazina ya hifadhi haiwezi kusasishwa baada ya uundaji wa awali (sasisho lolote hapa litapuuzwa litakaposakinishwa tena).
Kuweka hifadhi ya blob kwenye S3 imetolewa kama urahisi. Tafadhali kumbuka kuwa hifadhi ya S3 inapendekezwa tu kwa matukio yaliyowekwa kwenye AWS.
Aina zote tatu za hazina zimeunganishwa na maadili chaguomsingi yafuatayo:
_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 na aina za hazina za yum:
kuona defaults/main.yml kwa chaguzi hizi:
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS na hazina za yum zimezimwa kwa chaguo-msingi:
Kuona defaults/main.yml kwa chaguzi hizi:
Tafadhali kumbuka kuwa unaweza kuhitaji kuwezesha wigo fulani wa usalama ikiwa unataka kutumia aina zingine za hazina isipokuwa maven. Hii ni uongo kwa chaguo-msingi
Hifadhi rudufu haitawekwa hadi ubadilishe nexus_backup_configure Π² true.
Katika hali hii, kazi ya hati iliyoratibiwa itasanidiwa ili kuendeshwa kwenye Nexus
kwa muda ulioainishwa katika nexus_backup_cron (chaguo-msingi 21:00 kila siku).
Tazama [kiolezo cha groovy kwa kazi hii](templates/backup.groovy.j2) kwa maelezo.
Kazi hii iliyoratibiwa haitegemei wengine nexus_scheduled_tasksambayo wewe
tangaza katika kitabu chako cha kucheza.
Ikiwa unataka kuzungusha/kufuta nakala rudufu, sakinisha nexus_backup_rotate: true na usanidi idadi ya chelezo ungependa kuhifadhi ukitumia nexus_backup_keep_rotations (chaguo-msingi 4).
Unapotumia mzunguko, ikiwa unataka kuhifadhi nafasi ya ziada ya diski wakati wa mchakato wa kuhifadhi nakala rudufu,
Unaweza kusakinisha nexus_backup_rotate_first: true. Hii itasanidi mzunguko wa awali/ufutaji kabla ya kuhifadhi nakala. Kwa chaguo-msingi, mzunguko hutokea baada ya kuunda nakala rudufu. Tafadhali kumbuka kuwa katika kesi hii chelezo za zamani
itafutwa kabla ya kuhifadhi nakala ya sasa kufanywa.
Utaratibu wa kurejesha
Endesha kitabu cha kucheza na kigezo -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(kwa mfano, 2017-12-17-21-00-00 kwa Desemba 17, 2017 saa 21:00
Inaondoa uhusiano
Onyo: Hii itafuta kabisa data yako ya sasa. Hakikisha kufanya nakala rudufu mapema ikiwa ni lazima
Tumia kibadilishaji nexus_purgeikiwa unahitaji kuanzisha upya kutoka mwanzo na kusakinisha tena mfano wa uhusiano na data yote kuondolewa.
Badilisha nenosiri la msimamizi baada ya usakinishaji wa kwanza
nexus_default_admin_password: 'admin123'
Hii haipaswi kubadilishwa katika kitabu chako cha kucheza. Tofauti hii imejaa nenosiri chaguo-msingi la msimamizi wa Nexus linaposakinishwa kwa mara ya kwanza na huhakikisha kwamba tunaweza kubadilisha nenosiri la msimamizi nexus_admin_password.
Ikiwa unataka kubadilisha nenosiri la msimamizi baada ya usakinishaji wa kwanza, unaweza kuibadilisha kwa muda kwa nenosiri la zamani kutoka kwa mstari wa amri. Baada ya mabadiliko nexus_admin_password katika kitabu chako cha kucheza unaweza kukimbia: