السير في الفضاء لعيد الميلاد

مرحبا يا هبر!

قبل وقت قصير من عيد الميلاد ، تقرر دراسة Spacewalk في قسم تكنولوجيا المعلومات - هذا هو نظام Red Hat ، وهو نظير مجاني للقمر الصناعي ، لإدارة التهيئة المركزية ، وتحديثات النظام ، ودعم مناسب لحديقة الخوادم بأكملها.

نظرًا لحقيقة أن الوثائق المتوفرة على الموقع الرسمي نادرة جدًا للحصول على تعليقات إضافية حول أنواع مختلفة من حل المشاكل ، كانت المهمة هي دراسة المنتج من أجل تقديمه التدريجي أولاً لاختبار الخوادم ، ثم للمنتجات.

لم تكن الفكرة الرئيسية لإدخال Spacewalk هي المركزية وتبسيط التحكم فحسب ، بل وأيضًا حتى لا يلعب أحد التحديثات على خوادم المشروع الجديد بأقلام مرحة ، لأن السوابق قد حدثت بالفعل.

بعد أسبوعين من العمل ، تم إدخال كل المعرفة التي تلقيتها في التماثل الداخلي للالتقاء ، ودفعني يوم عطلة مجاني لكتابة مقال عن هبر.

قبل أن أبدأ ، أود أن أبرز بإيجاز ما كان وما لم يتأثر ، حتى لا أتأهل للحصول على الدليل الكامل للعمل مع Spacewalk:

+ تركيب وتكوين الخادم / العميل
+ إعداد النظام في واجهة المستخدم الرسومية
+ استكشاف أخطاء حزم التثبيت / التحديث ، والعمل مع التكوينات
+ Errata (جمع معلومات حول التحديثات الهامة ، الثغرات الأمنية ، إلخ.)

- وكيل (الحاجة اختفت ، بعد التخلي عن HA)
- الإسكافي / kickstart
- OpenSCAP

متطلبات النظام


نظرًا لحقيقة أن البنية التحتية بأكملها تعمل على VMWare ، تم تنفيذ العمل على VM يعمل بنظام CentOS 7. متطلبات النظام الموصى بها من المطور هي:

  • ذاكرة الوصول العشوائي 4GB
  • مساحة خالية 6 غيغابايت لـ / var / قمر صناعي /
  • 12GB ل DB

اعتدت:

  • ذاكرة الوصول العشوائي 6GB
  • 4 وحدة (وحدات)
  • 40GB HDD

أنصحك أيضًا بتعطيل SELinux ، وإذا لم تستخدم ، جدار الحماية. أو أضف خدمة http إلى الاستثناءات.

ملاحظة: في نهاية المقال ، سيكون هناك كتب تشغيل لـ Ansible ، لكل من العميل وخادم الأجزاء ، وكذلك نصوص bash. من خلال مساعدتهم ، سيكون من الممكن نشر البنية التحتية بأكملها في بضع دقائق.

التثبيت


تم وصف التثبيت نفسه في الوثائق الرسمية وفي العديد من المواقع ، ومع ذلك ، من أجل سلامة المقالة ، اسمحوا لي أن أذكر هذه النقطة هنا.

Spacewalk يعمل مع اثنين من قواعد البيانات: PostgreSQL و Oracle RDBMS. لدي تجربة مع الأول ، وسوف تستخدمه الآن.

هناك خياران للتثبيت: كلاهما من خلال برنامج التثبيت التلقائي من Spacewalk ، والذي سيقوم بتثبيت وتكوين نفسه وقاعدة البيانات ، على نفس الخادم ، والتثبيت اليدوي ، حيث يمكنك وضع DB والتطبيق على خوادم مختلفة. سوف أفكر في كلا الخيارين ، سأبدأ بتثبيت منفصل.

PostgreSQL


yum install -y postgresql-server 

من الضروري أيضًا توصيل وحدات PL / Tcl الخاصة بـ PG:

 yum install -y postgresql-pltcl postgresql-setup initdb systemctl start postgresql 

إنشاء قاعدة بيانات ، مستخدم ، وتوصيل الوحدة النمطية:

 su - postgres -c 'PGPASSWORD=verystrong; createdb spcwlkdb ; createlang plpgsql spcwlkdb ; createlang pltclu spcwlkdb ; yes $PGPASSWORD | createuser -P -sDR spcwlkuser' 

لتجنب مشاكل الاتصال ، يجدر تغيير /var/lib/pgsql/data/pg_hba.conf ، مع إضافة السطور قبل السطر بالكامل:

 local spcwlkdb spcwlkuser md5 host spcwlkdb spcwlkuser 127.0.0.1/8 md5 local spcwlkdb postgres ident 

أعد تشغيل كل شيء:

 systemctl restart postgresql 

إذا كنت تنوي تثبيت التطبيق وقاعدة البيانات على خوادم مختلفة ، فتأكد من تثبيت الحزمة postgresql على خادم قاعدة البيانات.

السير في الفضاء


نحن نربط المستودعات:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm 

قم أيضًا بتوصيل epel:

 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

جافا:

 (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) 

الآن مباشرة المثبت ل Spacewalk - postgres:

 yum -y install spacewalk-setup-postgresql 

الاتصال بقاعدة البيانات لدينا:

 spacewalk-setup-postgresql create --db spcwlkdb --user spcwlkuser --password verystrong 

في حالة استخدامك لقاعدة بيانات / تطبيق منفصل ، ستحتاج إلى إضافة العلامة المستقلة وتحديد عنوان IP لخادم قاعدة البيانات ، ولا تنسَ أيضًا فتح المنفذ 5432.

ملاحظة: أنصح بضبط قاعدة البيانات وفقًا لجهازك من أجل تشغيل أكثر إنتاجية للنظام بأكمله.

الآن تثبيت Spacewalk نفسه وتشغيل التثبيت:

 yum -y install spacewalk-postgresql spacewalk-setup --external-postgresql 

بعد ذلك ، سيتم طرح العديد من الأسئلة ، سواء فيما يتعلق بشهادة SSL وقاعدة البيانات. يمكنك إدخال جميع القيم يدويًا ، أو يمكنك استخدام علامة ملف -answer وتحديد المسار إلى الملف مع الإجابات من أجل أتمتة التثبيت في المستقبل:

 admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = HMP ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y 

للتحكم في التطبيق مباشرة ، يجب عليك استخدام:

 /usr/sbin/spacewalk-service [stop|start|restart] 

لعرض جميع خدمات الجهات الخارجية التي تساهم في التطبيق:

 spacewalk-service status 

الخيار الثاني ، التثبيت التلقائي


بعد توصيل المستودعات ، قم بإعداد وتشغيل:

 yum -y install spacewalk-setup-postgresql yum -y install spacewalk-postgresql spacewalk-setup 

مرة أخرى ، سيتم طرح الأسئلة المتعلقة بقاعدة البيانات و SSL ، نستخدم مفتاح الملف --answer والمسار إلى الملف مع الإجابات.

قنوات الأساس والطفل ، Repos


لإدارة محطات العملاء ، يستخدم نظام Spacewalk ما يسمى بالقنوات ، والتي يمكن أن تكون إما رئيسية (تابعة) أو تابعة (تابعة) ، ومستودع تحتاجه مرتبط بكل قناة ، وكذلك مفتاح - يتم إقران العميل به الخادم.

نتيجة لذلك ، تتم مزامنة المستودعات مع القنوات ، والتي بدورها مرتبطة بالعملاء ، ويعمل Spacewalk بطريقة عامة. من الجدير بالذكر أيضًا أن Errata ، والذي يمكن ربطه بالقنوات ، مما يبسط عملية التحديث والتحكم في الحزمة.

يمكن تجميع جميع العملاء وفقًا لمعايير مختلفة ، سواء مع نفس القنوات أو مع قنوات أو مستودعات مختلفة ، فمن الممكن العمل مع عدد كبير من العملاء في وقت واحد ، مما يساعد على إجراء تحديثات على أكثر من 100 خادم.

تتوفر قائمة بجميع الحزم المثبتة ، وبعد مزامنة المستودعات وإمكانية التثبيت. بعض النقاط بديهية ، وليس من المنطقي التفكير في كل سطر على حدة.

تتم جميع الإجراءات في Spacewalk وفقًا لجدول (جدول) ، ويمكن تكوين أي إجراء تقريبًا في الوقت الأكثر ملاءمة لك.

بعد التثبيت ، سيكون من الممكن الانتقال إلى عنوان الخادم الخاص بك ، وتنفيذ مزيد من التكوين عبر الواجهة الرسومية:



أدخل كلمة المرور واسم المسؤول واسم المؤسسة (والتي تعد أيضًا إحدى الطرق لإدارة العملاء) ، وانتقل إلى لوحة البداية.

في الوقت الحالي ، يمكنك إما استكشاف الخيارات المتاحة بنفسك ، أو الانتقال إلى إنشاء القنوات.

القنوات - إدارة قنوات البرامج - إنشاء قناة:



أوصي بتعيين أسماء القنوات وفقًا لأنواع ونوع نظام التشغيل الذي سيتم ربطه بهذه القناة ، على سبيل المثال ، CentOS_7_x86_64 ، يمكنك اختيار sha256 بأمان كشيكات ، الحقل Channell Summary مخصص لوصف صغير للقناة. أيضا ، يمكنك اختياريا تقديم معلومات إضافية.

أنشئ الآن قناة فرعية واربطها بالقناة الرئيسية. نذهب بنفس طريقة إنشاء القناة الرئيسية ، فقط في حقل القناة الرئيسية سنشير إلى القناة التي تم إنشاؤها مسبقًا.

قم بربط المستودعات بالقنوات الرئيسية والفرعية.
القنوات - إدارة المستودعات



بالنسبة للقنوات الرئيسية ، أستخدم "الموارد الأساسية" للقنوات الفرعية - تحديثات.

بعد إنشاء المستودعات ، تحتاج إلى توصيلها بالقنوات.
القنوات - إدارة قنوات البرامج ، افتح قناتك الرئيسية ، افتح قسم المستودعات.



ستكون هناك جميع المستودعات التي تم إنشاؤها ، وحدد المستودع الذي تحتاجه ، وقم بتمييزه ، وانقر فوق تحديث الموارد.

بعد ذلك ، افتح المفتاح Sync الفرعي:



حيث يمكنك مزامنة المستودع والقناة ، قم بتكوين جدول التزامن.

ملاحظة: في حالة الأقلام المشغولة ، اضطررت إلى حذف المستودع القياسي من نظام العميل.

تثبيت العميل ، وإقران العميل مع الخادم ، وإدارة المفاتيح ، وإعداد قناة التكوين


كما ذكرت سابقًا ، يستخدم Spacewalk نظامًا رئيسيًا من شبكة Red Hat Network ، والذي يستخدم في الاقتران والإدارة.

لإنشاء مفتاح ، انتقل إلى الأنظمة - مفاتيح التنشيط - إنشاء مفتاح:



كل شيء بسيط للغاية هنا ، هل تجدر الإشارة إلى أنه يمكنك تعيين المفتاح بنفسك ، وسيكون تنسيقه دائمًا 1 XXXXXX ، وأيضًا كل مفتاح متصل بالقناة. يفرض العلم الافتراضي العالمي أنظمة جديدة على التقاط المعلمات الأساسية.

تثبيت العميل

قم بتوصيل مستودع العميل وتثبيت الحزم اللازمة:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm 


ملاحظة: هناك حاجة إلى إجراءات rhncfg و deltarpm لكي تعمل التهيئة والتحكم عن بُعد بشكل صحيح.

يستخدم Spacewalk rhn_check لمزامنة خادم العميل ، الذي يعمل كل 4 ساعات. يمكن تخفيض هذه القيمة إلى 60 دقيقة ، ولكن بالنسبة لي لم يكن أي من الخيارات هو الأمثل ، لذلك هناك خياران: استخدام osad ، الذي يأتي مع Spacewalk ، أو ببساطة إضافة cronjob ل rhn_check ، على سبيل المثال ، لكل دقيقة بينما نحن اختبار النظام ، ثم يمكن تغيير القيمة كما يحلو لك.

 crontab -e * * * * * /usr/sbin/rhn_check 

لن يكون من الضروري أيضًا إضافة / usr / bin / rhn-Actions-control - يمكن تمكينه جميعًا إلى Cron أيضًا ، فهو يستخدم لنشر التكوينات ، وفي بعض الأحيان يمل.

نعود إلى إدارة المفاتيح ، وننسخ معرف المفتاح الذي أنشأناه ، وننفذه:

 rhnreg_ks --serverUrl=http://your-server-ip/XMLRPC --activationkey=1-YOURKEY --force 

فقط لا تنسى أن تغير IP والقيم الأساسية الخاصة بك. مرة أخرى ، أنصحك باستخدام علامة القوة ، حيث لاحظت وجود مشاكل دون استخدام هذه العلامة.

نعود إلى الأنظمة - الكل ، يسرنا أن نلاحظ نظامنا. يمكنك الآن فتحه واستكشاف ماذا وكيف هناك ، لكن الآن أوصي بشدة بإنشاء مجموعة لإدارة نظام أكثر ملاءمة.

Systems - Goups System - إنشاء مجموعة ، وملء الاسم والوصف ، وحفظ ، وفتح المجموعة التي تم إنشاؤها حديثًا ، انتقل إلى قسم الأنظمة وإضافة النظام إلى المجموعة.

اشترك الآن في القناة ، الأنظمة - النظام الخاص بك - مجلد البرامج - المجلد الفرعي لقنوات البرامج:



اختر قناتك وانقر على التأكيد. للمتعة ، يمكنك محاولة تثبيت الحزمة ، البرامج - الحزم - التثبيت .

قناة التكوين

لإدارة التكوينات بين خادم العميل / الجهاز المحلي ، فضلاً عن جهاز التحكم عن بُعد ، يجدر إعداد قناة التكوين وربط النظام بها.
نذهب إلى التكوين - قنوات التكوين - إنشاء قناة التكوين ، وتعيين الاسم والوصف ، وحفظ ، ثم في التكوين - إدارة قنوات التكوين - الاشتراك في القنوات وتوقيع قناة التكوين إلى قناة البرنامج ، وعلى النظام.



الآن يمكننا نشر التكوينات من كل من الخادم والأجهزة المحلية ، وإنشاء أقسام.

التكوين - إضافة ملفات - إنشاء ملف / تحميل ملف:



أيضًا ، يمكننا إرسال أوامر عن بُعد في شكل نص bash:



أذكرك بأن جميع الإجراءات تمر عبر جدول زمني ، ويمكن الاطلاع على قائمة بجميع الإجراءات المطبقة على هذا النظام في قسم الأحداث:



يراتا

واحدة من أهم الميزات في Spacewalk هي دعم الأخطاء ، والذي يرتبط بشكل ملائم بالقنوات ويسمح لك بمراقبة مستوى أهمية آخر التحديثات. تم تكوين هذا مباشرة على الخادم ، بالإضافة إلى البرامج النصية ، تحتاج إلى تنزيل الحزم اللازمة لـ Pearl:

 yum -y install perl-Frontier-RPC perl-Text-Unidecode wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl chmod +x errata-import.pl 

ثم أنشئ التحديث الرئيسي وخطأ البرنامج النصي ، والذي سيتم تخزينه في / etc / rhn /:

 #!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='root' export SPACEWALK_PASS='verystrong' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS 

في التصدير ، حدد اسم وكلمة مرور مسؤول Spacewalk ، الذي حددته في البداية.

لنجعل البرنامج النصي قابلاً للتنفيذ وإضافته إلى Cron:

 chmod +x spcwlk_errata.sh crontab -e 0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata.sh 

دعنا ننفذها الآن لرؤية التغييرات في واجهة الرسوم. سوف يستغرق التنفيذ بعض الوقت.



ملخص


هناك نقطة مهمة ، في رأيي ، فاتني شخصيا ، هي إعداد وكيل وتثبيته ، بالإضافة إلى رفع النظام بالكامل مثل HA. كان لدي فكرة لتكوين التطبيق من خلال جهاز تنظيم ضربات القلب ، والمزامنة على قاعدة البيانات. ونتيجة لذلك ، تقرر التخلي عن هذه الفكرة ، في ضوء أسطول الخوادم غير الضخم للغاية من محطات العملاء. ومع ذلك ، إذا أثبت النظام أنه مفيد للغاية في الأشهر الستة المقبلة ، فقد تضطر إلى توسيع الخادم الأصلي.

الأتمتة


الخادم:

البرنامج النصي Bash لنشر الخادم (DISABLES firewalld):

 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) yum -y install spacewalk-setup-postgresql spacewalk-postgresql wget perl-Frontier-RPC perl-Text-Unidecode perl-XML-Simple # mkdir /usr/share/spcwlk-tmp/ echo 'admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = SCK ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y' > /usr/share/spcwlk-tmp/spcwlk_answer spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer # systemctl stop firewalld systemctl disable firewalld # 


نص باش لتثبيت errata (قم أولاً بتعيين اسم وكلمة مرور مسؤول Spacewalk):
 #!/bin/sh # wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl -P /etc/rhn/ echo '#!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='gui username' export SPACEWALK_PASS='Password to your gui account' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS' > /etc/rhn/spcwlk_errata.sh # chmod +x /etc/rhn/errata-import.pl chmod +x /etc/rhn/spcwlk_errata.sh # echo '#!/bin/bash # /etc/rhn/./spcwlk_errata.sh' > /etc/rhn/spcwlk_errata_cron.sh chmod +x /etc/rhn/spcwlk_errata_cron.sh echo '0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata_cron.sh' >> /var/spool/cron/root /etc/rhn/./spcwlk_errata.sh # 


كتاب اللعب غير المرغوب فيه لنشر الخادم (لا تنس إضافة ملف الإجابات):
 - hosts: spcwlk-server tasks: - name: Install Spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install epel repo yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state: present - name: Install PostgreSQL packages yum: name: - spacewalk-setup-postgresql - spacewalk-postgresql - wget - perl-Frontier-RPC - perl-Text-Unidecode - perl-XML-Simple - name: Creates directory for Spacewalk answer file file: path: /usr/share/spcwlk-tmp/ state: directory mode: 0755 - name: Deploy answer file copy: src: /etc/ansible/spcwlk_answer dest: /usr/share/spcwlk-tmp/spcwlk_answer - name: Spacewalk Server Deploy shell: spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer - name: Stop firewalld systemd: name: firewalld state: stopped enabled: no 


العميل:

البرنامج النصي Bash لنشر العميل (لا تنسَ عنوان IP والمفتاح):
 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm wget echo '#!/bin/bash # /usr/sbin/rhn_check' > rhn_check.sh mv rhn_check.sh /etc/cron.hourly/ chmod +x /etc/cron.hourly/rhn_check.sh echo '* * * * * /usr/bin/sh /etc/cron.hourly/rhn_check.sh' >> /var/spool/cron/root /usr/bin/rhn-actions-control --enable-all cd /usr/share/rhn/ wget http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT rhnreg_ks --serverUrl=http://172.22.64.41/XMLRPC --activationkey=1-xxxxxxxxxxxxxxxxxxxxxxxxxxxx --force 


Anisble playbook لنشر العميل:
 - hosts: spcwlk-clients tasks: - name: Install spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install client packages yum: name: - rhn-client-tools - rhn-check - rhn-setup - rhnsd - m2crypto - yum-rhn-plugin - rhncfg-actions - deltarpm - wget - name: Create cronjob for rhn_check cron: name: "rhn_check" minute: "*" hour: "*" day: "*" month: "*" weekday: "*" job: "/usr/sbin/rhn_check" - name: Enable controls for config and remote control deployment shell: /usr/bin/rhn-actions-control --enable-all - name: Get certificate from server to client get_url: url: http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT dest: /usr/share/rhn/ - name: Register client to server rhn_register: state: present server_url: http://YourServerIPAddress/XMLRPC activationkey: "{{ activation_key }}" 


شكرا لكم جميعا لقراءة المقال. حظا سعيدا

Source: https://habr.com/ru/post/ar435578/


All Articles