ProHoster > blog > administrasi > Menginstal dan mengonfigurasi Nexus Sonatype menggunakan pendekatan infrastruktur sebagai kode
Menginstal dan mengonfigurasi Nexus Sonatype menggunakan pendekatan infrastruktur sebagai kode
Sonatype Nexus adalah platform terintegrasi di mana pengembang dapat melakukan proxy, menyimpan dan mengelola dependensi Java (Maven), Docker, Python, Ruby, NPM, gambar Bower, paket RPM, gitlfs, Apt, Go, Nuget, dan mendistribusikan keamanan perangkat lunak mereka.
Mengapa Anda memerlukan Sonatype Nexus?
Untuk menyimpan artefak pribadi;
Untuk menyimpan artefak yang diunduh dari Internet;
Artefak yang didukung dalam paket dasar Sonatype Nexus:
Contoh buku pedoman yang memungkinkan untuk menginstal nexus tanpa LDAP dengan repositori Maven (java), Docker, Python, Ruby, NPM, Bower, RPM, dan gitlfs.
Variabel dengan nilai default (lihat default/main.yml):
Variabel umum
nexus_version: ''
nexus_timezone: 'UTC'
Secara default, peran tersebut akan menginstal Nexus versi terbaru yang tersedia. Anda dapat memperbaiki versinya dengan mengubah variabel nexus_version. Lihat versi yang tersedia di https://www.sonatype.com/download-oss-sonatype.
Jika Anda mengubah ke versi yang lebih baru, peran tersebut akan mencoba memperbarui instalasi Nexus Anda.
Jika Anda menggunakan Nexus versi lama dibandingkan versi terbaru, Anda harus memastikan bahwa Anda tidak menggunakan fitur yang tidak tersedia dalam rilis terinstal (misalnya, hosting repositori yum tersedia untuk nexus yang lebih besar dari 3.8.0, git lfs repo untuk nexus lebih besar dari 3.3.0 dll.)
nexus timezone adalah nama zona waktu Java, yang dapat berguna jika dikombinasikan dengan ekspresi cron berikut untuk tugas nexus_scheduled.
Port dan jalur konteks dari proses koneksi Java. nexus_default_context_path harus mengandung garis miring ketika disetel, misalnya: nexus_default_context_path: '/nexus/'.
Pengguna dan Grup Nexus OS
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
Pengguna dan grup yang digunakan untuk memiliki file Nexus dan menjalankan layanan akan dibuat berdasarkan peran tersebut jika ada yang hilang.
nexus_os_user_home_dir: '/home/nexus'
Izinkan mengubah direktori home default untuk pengguna nexus
nexus_installation_dir berisi file executable yang diinstal
nexus_data_dir berisi semua konfigurasi, repositori, dan artefak yang diunduh. Jalur blobstore khusus nexus_data_dir dapat disesuaikan, lihat di bawah nexus_blobstores.
nexus_tmp_dir berisi semua file sementara. Jalur default untuk redhat telah dipindahkan /tmp untuk mengatasi potensi masalah dengan prosedur pembersihan otomatis. Lihat #168.
Ini adalah pengaturan default untuk Nexus. Harap jangan mengubah nilai-nilai iniJika Anda belum membaca bagian memori persyaratan sistem nexus dan tidak mengerti apa yang mereka lakukan.
Sebagai peringatan kedua, berikut kutipan dari dokumen di atas:
Tidak disarankan untuk meningkatkan memori tumpukan JVM melebihi nilai yang disarankan dalam upaya meningkatkan kinerja. Hal ini sebenarnya dapat menimbulkan efek sebaliknya, mengakibatkan pekerjaan yang tidak diperlukan pada sistem operasi.
Kata sandi administrator
nexus_admin_password: 'changeme'
Kata sandi akun βadminβ untuk pengaturan. Ini hanya berfungsi pada instalasi default pertama. Silakan lihat [Ubah kata sandi admin setelah instalasi pertama](# ubah-kata sandi-admin-setelah-instal pertama) jika Anda ingin mengubahnya nanti menggunakan peran.
Sangat disarankan untuk tidak menyimpan kata sandi Anda dalam teks yang jelas di buku pedoman, tetapi menggunakan [enkripsi brankas yang memungkinkan] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (baik sebaris atau dalam file terpisah yang dimuat dengan misalnya include_vars)
Akses anonim secara default
nexus_anonymous_access: false
Akses anonim dinonaktifkan secara default. Baca lebih lanjut tentang akses anonim.
Variabel-variabel ini mengontrol bagaimana peran terhubung ke Nexus API untuk penyediaan. Hanya untuk pengguna tingkat lanjut. Anda mungkin tidak ingin mengubah pengaturan default ini
Mengatur Proksi Terbalik SSL.
Untuk melakukan ini, Anda perlu menginstal httpd. Catatan: kapan untuk httpd_setup_enable tetapkan nilaitrue, nexus menghubungi 127.0.0.1:8081, jadi tidak dapat diakses langsung melalui port HTTP 8081 dari alamat IP eksternal.
Nama host default yang digunakan adalah nexus_public_hostname. Jika Anda memerlukan nama yang berbeda karena alasan tertentu, Anda dapat mengaturnya httpd_server_name dengan arti yang berbeda.
Π‘ httpd_copy_ssl_files: true (secara default) sertifikat di atas harus ada di direktori playbook Anda dan akan disalin ke server dan dikonfigurasi di Apache.
Jika Anda ingin menggunakan sertifikat yang ada di server, instal httpd_copy_ssl_files: false dan berikan variabel berikut:
# 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 bersifat opsional dan tidak boleh disetel jika Anda tidak ingin menyesuaikan file rantai
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
Daftar hak istimewa untuk pengaturan. Lihat dokumentasi dan GUI untuk memeriksa variabel mana yang perlu disetel bergantung pada jenis hak istimewa.
Elemen-elemen ini digabungkan dengan nilai default berikut:
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
Daftar pengguna/akun lokal (non-LDAP) yang akan dibuat di nexus.
Daftar pengguna/akun lokal (non-LDAP) yang akan dibuat di Nexus.
Pemetaan Ldap pengguna/peran. Negara absent akan menghapus peran dari pengguna yang ada jika sudah ada.
Pengguna Ldap tidak dihapus. Mencoba menetapkan peran untuk pengguna yang tidak ada akan menghasilkan kesalahan.
Pemilih konten
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
Untuk informasi selengkapnya tentang pemilih konten, lihat Dokumentasi.
Untuk menggunakan pemilih konten, tambahkan hak istimewa baru dengan type: repository-content-selector dan relevancontentSelector
Hapus repositori dari konfigurasi default awal pemasangan nexus. Langkah ini hanya dijalankan pada instalasi pertama kali (saat nexus_data_dir telah terdeteksi kosong).
Menghapus repositori dari konfigurasi default default untuk Nexus. Langkah ini hanya dilakukan pada instalasi pertama (saat nexus_data_dir kosong).
nexus_delete_default_blobstore: false
Hapus blobstore default dari konfigurasi default awal pemasangan nexus. Hal ini hanya dapat dilakukan jika nexus_delete_default_repos: true dan semua repositori yang dikonfigurasi (lihat di bawah) memiliki eksplisit blob_store: custom. Langkah ini hanya dijalankan pada instalasi pertama kali (saat nexus_data_dir telah terdeteksi kosong).
Menghapus penyimpanan blob (artefak biner) dinonaktifkan secara default dari konfigurasi awal. Untuk menghapus penyimpanan blob (artefak biner), matikan nexus_delete_default_repos: true. Langkah ini hanya dilakukan pada instalasi pertama (saat nexus_data_dir kosong).
Toko Blob untuk membuat. Jalur blobstore dan blobstore repositori tidak dapat diperbarui setelah pembuatan awal (pembaruan apa pun di sini akan diabaikan saat penyediaan ulang).
Mengonfigurasi blobstore di S3 disediakan demi kemudahan dan bukan merupakan bagian dari pengujian otomatis yang kami jalankan di travis. Harap perhatikan bahwa penyimpanan di S3 hanya disarankan untuk instans yang diterapkan di AWS.
Penciptaan Toko Blob. Jalur penyimpanan dan repositori penyimpanan tidak dapat diperbarui setelah pembuatan awal (pembaruan apa pun di sini akan diabaikan saat dipasang kembali).
Menyiapkan penyimpanan blob di S3 disediakan demi kemudahan. Harap perhatikan bahwa penyimpanan S3 hanya direkomendasikan untuk instans yang diterapkan di AWS.
Ketiga tipe repositori digabungkan dengan nilai default berikut:
_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
Jenis repositori Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dan yum:
melihat defaults/main.yml untuk opsi ini:
Repositori Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS dan yum dinonaktifkan secara default:
Lihat defaults/main.yml untuk opsi ini:
Harap dicatat bahwa Anda mungkin perlu mengaktifkan cakupan keamanan tertentu jika Anda ingin menggunakan jenis repositori lain selain maven. Ini salah secara default
Cadangan tidak akan dikonfigurasi sampai Anda beralih nexus_backup_configure Π² true.
Dalam hal ini, tugas skrip terjadwal akan dikonfigurasikan untuk dijalankan di Nexus
pada interval yang ditentukan dalam nexus_backup_cron (defaultnya adalah 21:00 setiap hari).
Lihat [template asyik untuk tugas ini](templates/backup.groovy.j2) untuk detailnya.
Tugas terjadwal ini tidak bergantung pada tugas lain nexus_scheduled_tasksyang Anda
umumkan di buku pedoman Anda.
Jika Anda ingin memutar/menghapus cadangan, instal nexus_backup_rotate: true dan konfigurasikan jumlah cadangan yang ingin Anda simpan nexus_backup_keep_rotations (standar 4).
Saat menggunakan rotasi, jika Anda ingin menghemat ruang disk tambahan selama proses pencadangan,
Anda dapat menginstal nexus_backup_rotate_first: true. Ini akan mengkonfigurasi pra-rotasi/penghapusan sebelum pencadangan. Secara default, rotasi terjadi setelah cadangan dibuat. Harap dicatat bahwa dalam hal ini cadangan lama
akan dihapus sebelum cadangan saat ini dibuat.
Prosedur pemulihan
Jalankan playbook dengan parameter -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(misalnya, 2017-12-17-21-00-00-17 Desember 2017 pukul 21:00
Menghapus perhubungan
Peringatan: Ini akan menghapus data Anda saat ini sepenuhnya. Pastikan untuk membuat cadangan lebih awal jika perlu
Gunakan variabel nexus_purgejika Anda perlu memulai ulang dari awal dan menginstal ulang instance nexus dengan semua data dihapus.
Ubah kata sandi administrator setelah instalasi pertama
nexus_default_admin_password: 'admin123'
Ini tidak boleh diubah dalam buku pedoman Anda. Variabel ini diisi dengan kata sandi admin Nexus default saat pertama kali diinstal dan memastikan bahwa kita dapat mengubah kata sandi admin menjadi nexus_admin_password.
Jika Anda ingin mengubah kata sandi administrator setelah instalasi pertama, Anda dapat mengubahnya untuk sementara ke kata sandi lama dari baris perintah. Setelah perubahan nexus_admin_password di buku pedoman Anda, Anda dapat menjalankan: