ProHoster > بلوق > إدارة > تثبيت وتكوين Nexus Sonatype باستخدام البنية التحتية كنهج للتعليمات البرمجية
تثبيت وتكوين Nexus Sonatype باستخدام البنية التحتية كنهج للتعليمات البرمجية
Sonatype Nexus عبارة عن منصة متكاملة يمكن للمطورين من خلالها تفويض وتخزين وإدارة تبعيات Java (Maven)، وDocker، وPython، وRuby، وNPM، وصور Bower، وحزم RPM، وgitlfs، وApt، وGo، وNuget، وتوزيع أمان البرامج الخاصة بهم.
لماذا تحتاج Sonatype Nexus؟
لتخزين القطع الأثرية الخاصة؛
للتخزين المؤقت للعناصر التي تم تنزيلها من الإنترنت؛
القطع الأثرية المدعومة في حزمة 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 للرابطة أكبر من 3.3.0 وما إلى ذلك)
nexus timezone هو اسم المنطقة الزمنية لـ Java، والذي يمكن أن يكون مفيدًا مع تعبيرات cron التالية للمهام nexus_scheduled.
المنفذ ومسار السياق لعملية اتصال Java. 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. من فضلك لا تغير هذه القيمإذا كنت لم تقرأ قسم الذاكرة لمتطلبات نظام Nexus ولا تفهم ماذا يفعلون.
كتحذير ثانٍ، إليك مقتطف من الوثيقة أعلاه:
لا يوصى بزيادة ذاكرة كومة JVM بما يتجاوز القيم الموصى بها في محاولة لتحسين الأداء. قد يكون لهذا في الواقع تأثير معاكس، مما يؤدي إلى عمل غير ضروري لنظام التشغيل.
كلمة مرور المسؤول
nexus_admin_password: 'changeme'
كلمة مرور حساب "المسؤول" للإعداد. يعمل هذا فقط على التثبيت الافتراضي الأول. يرجى الاطلاع على [تغيير كلمة مرور المسؤول بعد التثبيت الأول](# تغيير كلمة مرور المسؤول بعد التثبيت الأول) إذا كنت تريد تغييرها لاحقًا باستخدام أحد الأدوار.
ضبط وكيل SSL العكسي.
للقيام بذلك تحتاج إلى تثبيت httpd. ملحوظة: متى httpd_setup_enable مجموعة القيمةtrue، اتصالات العلاقة 127.0.0.1:8081، وبالتالي لا يمكن الوصول إليه مباشرة عبر منفذ HTTP 8081 من عنوان IP الخارجي.
اسم المضيف الافتراضي المستخدم هو nexus_public_hostname. إذا كنت بحاجة إلى أسماء مختلفة لسبب ما، يمكنك تعيينها httpd_server_name مع معنى مختلف.
С httpd_copy_ssl_files: true (افتراضيًا) يجب أن تكون الشهادات المذكورة أعلاه موجودة في دليل دليل التشغيل الخاص بك وسيتم نسخها إلى الخادم وتكوينها في Apache.
إذا كنت تريد استخدام الشهادات الموجودة على الخادم، قم بتثبيت 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) المراد إنشاؤها في العلاقة.
قائمة المستخدمين/الحسابات المحلية (غير LDAP) المطلوب إنشاؤها في Nexus.
تعيين Ldap للمستخدمين/الأدوار. ولاية absent سيؤدي ذلك إلى إزالة الأدوار من مستخدم موجود إذا كان موجودًا بالفعل.
لا يتم حذف مستخدمي Ldap. ستؤدي محاولة تعيين دور لمستخدم غير موجود إلى حدوث خطأ.
محددات المحتوى
nexus_content_selectors:
- name: docker-login
description: Selector for docker login privilege
search_expression: format=="docker" and path=~"/v2/"
احذف المستودعات من التكوين الافتراضي الأولي لتثبيت nexus. يتم تنفيذ هذه الخطوة فقط عند التثبيت لأول مرة (متى nexus_data_dir تم اكتشافه فارغًا).
إزالة المستودعات من التكوين الافتراضي الافتراضي لـ Nexus. يتم تنفيذ هذه الخطوة فقط أثناء التثبيت الأول (متى nexus_data_dir فارغ).
nexus_delete_default_blobstore: false
احذف مخزن البيانات الكبيرة الافتراضي من التكوين الافتراضي الأولي لتثبيت Nexus. لا يمكن القيام بذلك إلا إذا nexus_delete_default_repos: true وجميع المستودعات التي تم تكوينها (انظر أدناه) تحتوي على ملف صريح blob_store: custom. يتم تنفيذ هذه الخطوة فقط عند التثبيت لأول مرة (متى nexus_data_dir تم اكتشافه فارغًا).
يتم تعطيل إزالة تخزين الكائنات الثنائية كبيرة الحجم (العناصر الثنائية) افتراضيًا من التكوين الأولي. لإزالة تخزين الكائنات الثنائية كبيرة الحجم (العناصر الثنائية)، قم بإيقاف تشغيله nexus_delete_default_repos: true. يتم تنفيذ هذه الخطوة فقط أثناء التثبيت الأول (متى nexus_data_dir فارغ).
متاجر كبيرة لنصنع او لنبتكر. لا يمكن تحديث مسار blobstore ومستودع blobstore بعد الإنشاء الأولي (سيتم تجاهل أي تحديث هنا عند إعادة التزويد).
يتم توفير تكوين blobstore على S3 كوسيلة راحة وليس جزءًا من الاختبارات التلقائية التي نجريها على travis. يرجى ملاحظة أن التخزين على S3 يوصى به فقط للمثيلات المنشورة على AWS.
خلق متاجر كبيرة. لا يمكن تحديث مسار التخزين ومستودع التخزين بعد الإنشاء الأولي (سيتم تجاهل أي تحديث هنا عند تثبيته مرة أخرى).
يتم توفير إعداد تخزين الكائنات الثنائية كبيرة الحجم على S3 كوسيلة راحة. يرجى ملاحظة أنه يوصى بتخزين S3 فقط للمثيلات المنشورة على AWS.
nexus_repos_maven_hosted:
- name: private-release
version_policy: release
write_policy: allow_once # one of "allow", "allow_once" or "deny"
مخضرم المستودعات المستضافة إعدادات. يعد تكوين ذاكرة التخزين المؤقت السلبي اختياريًا وسيتم ضبطه افتراضيًا على القيم المذكورة أعلاه إذا تم حذفه.
ترتيب المستودعات المستضافة مخضرم. يعد تكوين ذاكرة التخزين المؤقت السلبي (-1) اختياريًا وسيتم ضبطه افتراضيًا على القيم المذكورة أعلاه إذا لم يتم تحديده.
nexus_repos_maven_group:
- name: public
member_repos:
- central
- jboss
يتم دمج جميع أنواع المستودعات الثلاثة مع القيم الافتراضية التالية:
_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 لهذه الخيارات:
لن يتم تكوين النسخ الاحتياطي حتى تقوم بالتبديل nexus_backup_configure в true.
في هذه الحالة، سيتم تكوين مهمة البرنامج النصي المجدولة للتشغيل على Nexus
في الفاصل الزمني المحدد في nexus_backup_cron (الافتراضي 21:00 كل يوم).
راجع [قالب رائع لهذه المهمة](templates/backup.groovy.j2) للحصول على التفاصيل.
هذه المهمة المجدولة مستقلة عن الآخرين nexus_scheduled_tasksالذي
أعلن في كتاب اللعب الخاص بك.
إذا كنت تريد تدوير/حذف النسخ الاحتياطية، فقم بتثبيت nexus_backup_rotate: true وقم بتكوين عدد النسخ الاحتياطية التي ترغب في حفظها باستخدام nexus_backup_keep_rotations (الافتراضي 4).
عند استخدام التدوير، إذا كنت تريد توفير مساحة إضافية على القرص أثناء عملية النسخ الاحتياطي،
يمكنك تثبيت ملفات nexus_backup_rotate_first: true. سيؤدي هذا إلى تكوين التدوير/الحذف المسبق قبل النسخ الاحتياطي. بشكل افتراضي، يحدث التدوير بعد إنشاء نسخة احتياطية. يرجى ملاحظة أنه في هذه الحالة النسخ الاحتياطية القديمة
سيتم حذفه قبل إجراء النسخة الاحتياطية الحالية.
إجراء الاسترداد
قم بتشغيل كتاب اللعب مع المعلمة -e nexus_restore_point=<YYYY-MM-dd-HH-mm-ss>
(على سبيل المثال، 2017-12-17-21-00-00 ليوم 17 ديسمبر 2017 الساعة 21:00
إزالة الرابطة
تحذير: سيؤدي هذا إلى حذف بياناتك الحالية بالكامل. تأكد من عمل نسخة احتياطية مبكرًا إذا لزم الأمر
استخدم متغيرًا nexus_purgeإذا كنت بحاجة إلى إعادة التشغيل من البداية وإعادة تثبيت مثيل nexus مع إزالة جميع البيانات.
لا ينبغي تغيير هذا في قواعد اللعبة التي تمارسها. تتم تعبئة هذا المتغير بكلمة مرور مسؤول Nexus الافتراضية عند تثبيته لأول مرة ويضمن إمكانية تغيير كلمة مرور المسؤول إليها nexus_admin_password.
إذا كنت تريد تغيير كلمة مرور المسؤول بعد التثبيت الأول، فيمكنك تغييرها مؤقتًا إلى كلمة المرور القديمة من سطر الأوامر. بعد التغيير nexus_admin_password في كتاب اللعب الخاص بك يمكنك تشغيل: