ProHoster > وبلاگ > اداره > نصب و پیکربندی Nexus Sonatype با استفاده از زیرساخت به عنوان رویکرد کد
نصب و پیکربندی Nexus Sonatype با استفاده از زیرساخت به عنوان رویکرد کد
Sonatype Nexus یک پلت فرم یکپارچه است که از طریق آن توسعه دهندگان می توانند وابستگی های جاوا (Maven)، Docker، Python، Ruby، NPM، تصاویر Bower، بسته های RPM، gitlfs، Apt، Go، Nuget را پروکسی، ذخیره و مدیریت کنند و امنیت نرم افزار خود را توزیع کنند.
چرا به Sonatype Nexus نیاز دارید؟
برای ذخیره سازی مصنوعات خصوصی؛
برای ذخیره سازی مصنوعاتی که از اینترنت دانلود می شوند؛
متغیرهای با مقادیر پیش فرض (نگاه کنید به default/main.yml):
متغیرهای کلی
nexus_version: ''
nexus_timezone: 'UTC'
به طور پیش فرض، نقش آخرین نسخه موجود Nexus را نصب می کند. شما می توانید نسخه را با تغییر متغیر اصلاح کنید nexus_version. مشاهده نسخه های موجود در https://www.sonatype.com/download-oss-sonatype.
اگر به نسخه جدیدتر تغییر دهید، نقش تلاش می کند تا نصب Nexus شما را به روز کند.
اگر از نسخه قدیمی تر Nexus نسبت به آخرین نسخه استفاده می کنید، باید اطمینان حاصل کنید که از ویژگی هایی استفاده نمی کنید که در نسخه نصب شده در دسترس نیستند (به عنوان مثال، میزبانی مخازن yum برای nexus بالاتر از 3.8.0، git lfs repo در دسترس است. برای Nexus بزرگتر از 3.3.0 و غیره)
nexus timezone نام منطقه زمانی جاوا است که می تواند در ترکیب با عبارات cron زیر برای وظایف نکسوس_زمان بندی شده مفید باشد.
پورت و مسیر زمینه فرآیند اتصال جاوا. nexus_default_context_path هنگام تنظیم باید دارای یک اسلش رو به جلو باشد، به عنوان مثال: nexus_default_context_path: '/nexus/'.
کاربر و گروه سیستم عامل Nexus
nexus_os_group: 'nexus'
nexus_os_user: 'nexus'
کاربر و گروهی که برای مالکیت فایلهای Nexus استفاده میشود و سرویس را اجرا میکند، در صورت عدم وجود یک نقش، توسط نقش ایجاد میشود.
nexus_os_user_home_dir: '/home/nexus'
اجازه تغییر دایرکتوری اصلی پیشفرض برای کاربر Nexus را بدهید
nexus_installation_dir شامل فایل های اجرایی نصب شده
nexus_data_dir شامل تمام پیکربندی ها، مخازن و مصنوعات بارگیری شده است. مسیرهای سفارشی blobstore nexus_data_dir را می توان سفارشی کرد، زیر را ببینید nexus_blobstores.
nexus_tmp_dir شامل تمام فایل های موقت مسیر پیشفرض redhat از آن جابجا شده است /tmp برای غلبه بر مشکلات احتمالی با روش های تمیز کردن خودکار. شماره 168 را ببینید.
اینها تنظیمات پیش فرض Nexus هستند. لطفا این مقادیر را تغییر ندهیداگر نخوانده اید بخش حافظه مورد نیاز سیستم نکسوس و نمی فهمند چه کار می کنند.
به عنوان هشدار دوم، در اینجا گزیده ای از سند فوق آمده است:
در تلاش برای بهبود عملکرد، افزایش حافظه پشته JVM بیش از مقادیر توصیه شده توصیه نمی شود. این ممکن است در واقع اثر معکوس داشته باشد و منجر به کار غیر ضروری برای سیستم عامل شود.
رمز عبور مدیر
nexus_admin_password: 'changeme'
رمز عبور حساب "admin" برای راه اندازی. این فقط در اولین نصب پیش فرض کار می کند. اگر میخواهید بعداً با استفاده از یک نقش آن را تغییر دهید، لطفاً [تغییر رمز عبور مدیریت پس از اولین نصب] (# change-admin-password-after-first-install) را ببینید.
اکیداً توصیه می شود رمز عبور خود را به صورت متن واضح در کتاب بازی ذخیره نکنید، بلکه از [ansible-vault encryption] استفاده کنید (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (به صورت درون خطی یا در یک فایل جداگانه بارگذاری شده با به عنوان مثال include_vars)
دسترسی ناشناس به صورت پیش فرض
nexus_anonymous_access: false
دسترسی ناشناس به طور پیش فرض غیرفعال است. بیشتر بخوانید در مورد دسترسی ناشناس.
مجموعه پروکسی معکوس SSL.
برای این کار باید httpd را نصب کنید. توجه: زمانی که برای httpd_setup_enable مقدار را تنظیم کنیدtrue, Nexus contacts 127.0.0.1:8081، بنابراین هیچ مستقیماً از طریق پورت HTTP 8081 از آدرس IP خارجی قابل دسترسی است.
نام میزبان پیش فرض استفاده شده است nexus_public_hostname. اگر به دلایلی به نام های مختلف نیاز دارید، می توانید تنظیم کنید httpd_server_name با معنایی متفاوت
С httpd_copy_ssl_files: true (به طور پیش فرض) گواهی های فوق باید در فهرست راهنمای playbook شما وجود داشته باشد و در سرور کپی شده و در آپاچی پیکربندی می شود.
اگر می خواهید از گواهی های موجود در سرور استفاده کنید، نصب کنید httpd_copy_ssl_files: false و متغیرهای زیر را ارائه دهید:
# 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 اختیاری است و اگر نمیخواهید فایل زنجیرهای را سفارشی کنید، باید تنظیم نشده باقی بماند
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
فهرست امتیازات برای تنظیمات به مستندات و رابط کاربری گرافیکی نگاه کنید تا بررسی کنید که کدام متغیرها باید بسته به نوع امتیاز تنظیم شوند.
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
فهرست کاربران/حسابهای محلی (غیر LDAP) برای ایجاد در Nexus.
فهرست کاربران/حسابهای محلی (غیر LDAP) برای ایجاد در Nexus.
نقشه برداری Ldap از کاربران/نقش ها. حالت absent نقش ها را از یک کاربر موجود حذف می کند اگر قبلاً وجود داشته باشد.
کاربران Ldap حذف نمی شوند. تلاش برای تعیین نقش برای یک کاربر غیر موجود منجر به خطا می شود.
انتخابگرهای محتوا
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
برای اطلاعات بیشتر در مورد انتخابگر محتوا، نگاه کنید مستندات.
برای استفاده از انتخابگر محتوا، یک امتیاز جدید با type: repository-content-selector و مرتبطcontentSelector
مخازن را از پیکربندی پیش فرض اولیه نصب Nexus حذف کنید. این مرحله فقط در اولین نصب (زمانی که nexus_data_dir خالی تشخیص داده شده است).
حذف مخازن از پیکربندی پیشفرض Nexus. این مرحله فقط در اولین نصب (زمانی که nexus_data_dir خالی).
nexus_delete_default_blobstore: false
blobstore پیشفرض را از پیکربندی پیشفرض اولیه نصب Nexus حذف کنید. این کار فقط در صورتی قابل انجام است nexus_delete_default_repos: true و تمام مخازن پیکربندی شده (به زیر مراجعه کنید) دارای یک مشخصه هستند blob_store: custom. این مرحله فقط در اولین نصب (زمانی که nexus_data_dir خالی تشخیص داده شده است).
حذف ذخیره سازی حباب (مصنوعات باینری) به طور پیش فرض از پیکربندی اولیه غیرفعال است. برای حذف حافظه حباب (مصنوعات باینری)، خاموش کنید nexus_delete_default_repos: true. این مرحله فقط در اولین نصب (زمانی که nexus_data_dir خالی).
Blobstores خلق كردن. یک مسیر blobstore و یک blobstore مخزن پس از ایجاد اولیه نمیتوانند بهروزرسانی شوند (هر گونه بهروزرسانی در اینجا در تهیه مجدد نادیده گرفته میشود).
پیکربندی blobstore در S3 به عنوان یک راحتی ارائه شده است و بخشی از تست های خودکاری نیست که ما روی تراویس اجرا می کنیم. لطفاً توجه داشته باشید که ذخیره سازی در S3 فقط برای نمونه هایی که در AWS مستقر شده اند توصیه می شود.
ایجاد Blobstores. مسیر ذخیره سازی و مخزن ذخیره سازی پس از ایجاد اولیه نمی توانند به روز شوند (هر به روز رسانی در اینجا پس از نصب مجدد نادیده گرفته می شود).
راه اندازی فضای ذخیره سازی blob در S3 به عنوان یک راحتی ارائه شده است. لطفاً توجه داشته باشید که ذخیره سازی S3 فقط برای نمونه هایی که در AWS مستقر شده اند توصیه می شود.
هر سه نوع مخزن با مقادیر پیش فرض زیر ترکیب می شوند:
_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 و yum:
دیدن defaults/main.yml برای این گزینه ها:
مخازن Docker، Pypi، Raw، Rubygems، Bower، NPM، Git-LFS و yum به طور پیش فرض غیرفعال هستند:
دیدن defaults/main.yml برای این گزینه ها:
لطفاً توجه داشته باشید که اگر میخواهید از انواع دیگر مخازن به غیر از maven استفاده کنید، ممکن است لازم باشد محدودههای امنیتی خاصی را فعال کنید. این به طور پیش فرض نادرست است
پشتیبانگیری پیکربندی نمیشود تا زمانی که تغییر دهید nexus_backup_configure в true.
در این مورد، وظیفه اسکریپت برنامه ریزی شده برای اجرا در Nexus پیکربندی می شود
در فاصله زمانی مشخص شده در nexus_backup_cron (پیش فرض هر روز ساعت 21:00).
برای جزئیات بیشتر به [قالب groovy برای این کار] (templates/backup.groovy.j2) مراجعه کنید.
این کار برنامه ریزی شده مستقل از کارهای دیگر است nexus_scheduled_tasksکه شما
در کتاب بازی خود اعلام کنید.
اگر میخواهید نسخههای پشتیبان را بچرخانید/حذف کنید، نصب کنید nexus_backup_rotate: true و تعداد بک آپ هایی را که می خواهید با استفاده از آن ذخیره کنید، پیکربندی کنید nexus_backup_keep_rotations (پیش فرض 4).
هنگام استفاده از چرخش، اگر می خواهید فضای دیسک اضافی را در طول فرآیند پشتیبان گیری ذخیره کنید،
می توانید نصب کنید nexus_backup_rotate_first: true. این پیش چرخش/حذف را قبل از پشتیبان گیری پیکربندی می کند. به طور پیش فرض، چرخش پس از ایجاد یک نسخه پشتیبان رخ می دهد. لطفا توجه داشته باشید که در این مورد پشتیبان گیری قدیمی است
قبل از تهیه نسخه پشتیبان فعلی حذف خواهد شد.
روش بازیابی
playbook را با پارامتر اجرا کنید -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(به عنوان مثال، 2017-12-17-21-00-00 برای 17 دسامبر 2017 ساعت 21:00
حذف رابطه
هشدار: با این کار اطلاعات فعلی شما به طور کامل حذف می شود. در صورت لزوم حتماً زودتر یک نسخه پشتیبان تهیه کنید
از یک متغیر استفاده کنید nexus_purgeاگر باید از ابتدا راه اندازی مجدد کنید و نمونه نکسوس را با حذف تمام داده ها مجدداً نصب کنید.
این نباید در کتاب بازی شما تغییر کند. این متغیر هنگام نصب برای اولین بار با رمز عبور پیشفرض ادمین Nexus پر میشود و تضمین میکند که میتوانیم رمز عبور مدیریت را به nexus_admin_password.
اگر می خواهید رمز عبور مدیر را پس از اولین نصب تغییر دهید، می توانید به طور موقت آن را از خط فرمان به رمز عبور قدیمی تغییر دهید. بعد از تغییر nexus_admin_password در کتاب بازی خود می توانید اجرا کنید: