Weltraumspaziergang zu Weihnachten

Hallo Habr!

Kurz vor Weihnachten wurde beschlossen, Spacewalk in der IT-Abteilung zu studieren - dies ist das Red Hat-System, ein kostenloses Analogon von Satellite, für zentrales Konfigurationsmanagement, Systemaktualisierungen und bequemen Support für den gesamten Serverpark.

Aufgrund der Tatsache, dass die auf der offiziellen Website verfügbare Dokumentation für zusätzliche Kommentare zu verschiedenen Arten der Fehlerbehebung eher knapp ist, bestand die Aufgabe darin, das Produkt für seine schrittweise Einführung zunächst in Testserver und anschließend in Produkte zu untersuchen.

Die Hauptidee bei der Einführung von Spacewalk war nicht nur die Zentralisierung und Vereinfachung der Steuerung, sondern auch, dass niemand mit spielerischen Stiften Updates auf den Servern des neuen Projekts abspielen konnte, da es bereits Präzedenzfälle gab.

Nach zweiwöchiger Arbeit wurde das gesamte Wissen, das ich erhielt, in das interne Analogon von Confluence eingegeben, und ein freier Tag veranlasste mich, einen Artikel über Habr zu schreiben.

Bevor ich anfange, möchte ich kurz hervorheben, was betroffen war und was nicht, um mich nicht für das vollständige Handbuch für die Arbeit mit Spacewalk zu qualifizieren:

+ Installation und Konfiguration des Servers / Clients
+ Systemeinrichtung in der GUI
+ Fehlerbehebung bei Installations- / Update-Paketen, Arbeiten mit Konfigurationen
+ Errata (Sammeln von Informationen zu kritischen Updates, Schwachstellen usw.)

- Proxy (die Notwendigkeit verschwand, nachdem HA aufgegeben wurde)
- Schuster / Kickstart
- OpenSCAP

Systemanforderungen


Aufgrund der Tatsache, dass die gesamte Infrastruktur auf VMWare ausgeführt wird, wurden die Arbeiten auf einer VM ausgeführt, auf der CentOS 7 ausgeführt wird. Empfohlene Systemanforderungen des Entwicklers sind:

  • 4 GB RAM
  • 6 GB freier Speicherplatz für / var / Satellit /
  • 12 GB für DB

Ich habe verwendet:

  • 6 GB RAM
  • 4 CPU (s)
  • 40 GB Festplatte

Ich rate Ihnen auch, SELinux zu deaktivieren und, falls Sie Firewalld nicht verwenden, diese zu verwenden. Oder fügen Sie den http-Dienst zu den Ausnahmen hinzu.

Hinweis: Am Ende des Artikels befinden sich Playbooks für Ansible, sowohl für den Client- als auch für den Serverteil, sowie Bash-Skripte. Mit ihrer Hilfe können Sie die gesamte Infrastruktur in wenigen Minuten bereitstellen.

Installation


Die Installation selbst ist sowohl in der offiziellen Dokumentation als auch an mehreren Stellen beschrieben. Um die Integrität des Artikels zu gewährleisten, möchte ich diesen Punkt hier erwähnen.

Spacewalk arbeitet mit zwei DBMS: PostgreSQL und Oracle RDBMS. Ich habe Erfahrung mit dem ersten und werde es jetzt verwenden.

Es gibt zwei Installationsoptionen: sowohl über das automatische Installationsprogramm von Spacewalk, das sich selbst und die Datenbank installiert und konfiguriert, jedoch auf demselben Server, als auch über die manuelle Installation, bei der Sie die Datenbank und die Anwendung auf verschiedenen Servern ablegen können. Ich werde beide Optionen in Betracht ziehen und mit einer separaten Installation beginnen.

PostgreSQL


yum install -y postgresql-server 

Es ist auch erforderlich, PL / Tcl-Module für PG anzuschließen:

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

Erstellen Sie eine Datenbank, einen Benutzer und verbinden Sie das Modul:

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

Um Verbindungsprobleme zu vermeiden, sollten Sie /var/lib/pgsql/data/pg_hba.conf ändern und die Zeilen VOR der Zeile alle hinzufügen:

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

Starten Sie alles neu:

 systemctl restart postgresql 

Wenn Sie die Anwendung und die Datenbank auf verschiedenen Servern installieren möchten , stellen Sie sicher, dass das Paket postgresql-contrib auf dem Datenbankserver installiert ist.

Weltraumspaziergang


Wir verbinden Repositories:

 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 

Verbinden Sie auch epel:

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

Java:

 (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) 

Jetzt direkt das Installationsprogramm für Spacewalk-postgres:

 yum -y install spacewalk-setup-postgresql 

Stellen Sie eine Verbindung zu unserer Datenbank her:

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

Wenn Sie eine separate Datenbank- / Anwendungsmethode verwenden, müssen Sie das Flag --standalone hinzufügen und die IP-Adresse des Datenbankservers angeben. Vergessen Sie auch nicht, Port 5432 zu öffnen.

Hinweis: Ich empfehle, die Datenbank entsprechend Ihrer Hardware zu optimieren, um einen produktiveren Betrieb des gesamten Systems zu gewährleisten.

Installieren Sie nun Spacewalk selbst und führen Sie die Installation aus:

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

Als nächstes werden mehrere Fragen gestellt, sowohl zum SSL-Zertifikat als auch zur Datenbank. Sie können alle Werte manuell eingeben oder das Flag --answer-file verwenden und den Pfad zur Datei mit den Antworten angeben, um die Installation in Zukunft zu automatisieren:

 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 

Um die Anwendung direkt zu steuern, sollten Sie Folgendes verwenden:

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

So zeigen Sie alle Dienste von Drittanbietern an, die zur Anwendung beitragen:

 spacewalk-service status 

Option Zwei, automatische Installation


Richten Sie nach dem Verbinden der Repositorys Folgendes ein und führen Sie es aus:

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

Auch hier werden Fragen zur Datenbank und zu SSL gestellt. Wir verwenden den Schlüssel --answer-file und den Pfad zur Datei mit den Antworten.

Basis- und Kinderkanäle, Repos


Für die Verwaltung von Client-Stationen verwendet Spacewalk ein System sogenannter Kanäle, die entweder main (child) oder child (child) sein können. Jedem Kanal ist ein Repository zugeordnet, das Sie benötigen, sowie ein Schlüssel, mit dem der Client gekoppelt ist Server.

Infolgedessen werden Repositorys mit Kanälen synchronisiert, die wiederum mit Clients verbunden sind, und Spacewalk funktioniert im Allgemeinen. Erwähnenswert sind auch Errata, die an Kanäle gebunden werden können, was die Aktualisierung und Paketkontrolle vereinfacht.

Alle Clients können nach verschiedenen Kriterien gruppiert werden, sowohl mit denselben Kanälen als auch mit unterschiedlichen Kanälen oder Repositorys. Es ist möglich, mit einer großen Anzahl von Clients gleichzeitig zu arbeiten, wodurch Aktualisierungen auf über 100 Servern durchgeführt werden können.

Eine Liste aller installierten Pakete ist verfügbar und kann nach der Synchronisierung der Repositorys installiert werden. Einige Punkte sind intuitiv und es macht keinen Sinn, jedes Element Zeile für Zeile zu betrachten.

Alle Aktionen in Spacewalk finden nach einem Zeitplan (Zeitplan) statt. Fast jede Aktion kann für die Zeit konfiguriert werden, die für Sie am bequemsten ist.

Nach der Installation können Sie zur Adresse Ihres Servers gehen und die weitere Konfiguration über die grafische Oberfläche vornehmen:



Geben Sie das Kennwort, den Administratornamen und den Organisationsnamen ein (dies ist auch eine der Möglichkeiten zum Verwalten von Clients) und rufen Sie das Startfenster auf.

Im Moment können Sie entweder die verfügbaren Optionen selbst erkunden oder Kanäle erstellen.

Kanäle - Software-Kanäle verwalten - Kanal erstellen:



Ich empfehle, die Kanalnamen entsprechend den Typen und dem Typ des Betriebssystems festzulegen , das an diesen Kanal gebunden wird, z. B. CentOS_7_x86_64 . Sie können sicher sha256 als Prüfung auswählen. Das Feld Kanalzusammenfassung ist für eine kleine Beschreibung des Kanals vorgesehen. Optional können Sie zusätzliche Informationen bereitstellen.

Erstellen Sie nun einen untergeordneten Kanal und binden Sie ihn an den Hauptkanal. Wir gehen genauso vor wie beim Erstellen des Hauptkanals, nur geben wir im Feld Elternkanal den zuvor erstellten Kanal an.

Binden Sie die Repositories an die Haupt- und Nebenkanäle.
Kanäle - Repositorys verwalten



Für die Hauptkanäle verwende ich Basisressourcen, für die Nebenkanäle - Updates.

Nachdem Sie die Repositorys erstellt haben, müssen Sie sie mit den Kanälen verbinden.
Kanäle - Verwalten Sie Softwarekanäle , öffnen Sie Ihren Hauptkanal und öffnen Sie den Abschnitt Repositorys.



Es werden alle erstellten Repositorys angezeigt. Wählen Sie das gewünschte aus, markieren Sie es und klicken Sie auf Ressourcen aktualisieren.

Öffnen Sie als Nächstes den Unterschlüssel Synchronisieren:



Wenn Sie das Repository und den Kanal synchronisieren können, konfigurieren Sie den Zeitplan für die Synchronisierung.

Hinweis: Bei verspielten Stiften musste ich das Standard-Repository vom Client-System löschen.

Client-Installation, Pairing des Clients mit dem Server, Schlüsselverwaltung, Einrichten des Konfigurationskanals


Wie bereits erwähnt, verwendet Spacewalk ein Schlüsselsystem von Red Hat Network, das für das Pairing und die Verwaltung verwendet wird.

Um einen Schlüssel zu erstellen, gehen Sie zu Systeme - Aktivierungsschlüssel - Schlüssel erstellen:



Hier ist alles sehr einfach. Erwähnenswert ist, dass Sie den Schlüssel selbst einstellen können. Das Format ist immer 1-XXXXXX . Außerdem ist jeder Schlüssel an den Kanal angeschlossen. Das Universal Default-Flag zwingt neue Systeme, wichtige Parameter zu erfassen.

Client-Installation

Verbinden Sie das Client-Repository und installieren Sie die erforderlichen Pakete:

 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 


Hinweis: Damit die Konfigurationen und die Fernbedienung ordnungsgemäß funktionieren, sind rhncfg-Aktionen und deltarpm erforderlich.

Spacewalk synchronisiert den Client-Server mit rhn_check, der alle 4 Stunden ausgeführt wird. Dieser Wert kann auf 60 Minuten reduziert werden, aber für mich war keine der Optionen optimal, daher gibt es zwei Optionen: Verwenden Sie osad, das mit Spacewalk geliefert wird, oder fügen Sie einfach einen Cronjob für rhn_check hinzu, zum Beispiel für jede Minute, während wir Testen Sie das System, dann kann der Wert nach Belieben geändert werden.

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

Es wird auch nicht schaden, / usr / bin / rhn-action-control --enable-all zu Cron hinzuzufügen, es wird zum Bereitstellen von Konfigurationen verwendet und manchmal wird es langweilig.

Wir kehren zur Schlüsselverwaltung zurück, kopieren die von uns erstellte Schlüssel-ID und führen Folgendes aus:

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

Vergessen Sie jedoch nicht, die IP- und Schlüsselwerte in Ihre eigenen zu ändern. Auch hier rate ich Ihnen, das Flag --force zu verwenden, da ich Probleme festgestellt habe, ohne dieses Flag zu verwenden.

Wir kehren zu Systems zurück - Wir freuen uns alle über unser System. Sie können es jetzt öffnen und untersuchen, was und wie es dort ist. Im Moment empfehle ich jedoch dringend, eine Gruppe für eine bequemere Systemverwaltung zu erstellen.

Systeme - Systemgruppen - Gruppe erstellen , Name und Beschreibung ausfüllen, speichern, die neu erstellte Gruppe öffnen, zum Abschnitt Systeme gehen und das System der Gruppe hinzufügen.

Abonnieren Sie nun das System für den Kanal Systeme - Ihr System - Softwareordner - Unterordner für Softwarekanäle:



Wählen Sie Ihren Kanal und klicken Sie auf Bestätigung. Zum Spaß können Sie versuchen, das Paket Software - Pakete - Installieren zu installieren .

Konfigurationskanal

Um Konfigurationen zwischen dem Client-Server / dem lokalen Computer sowie der Fernsteuerung zu verwalten, sollten Sie den Konfigurationskanal einrichten und das System damit verbinden.
Wir gehen zu Konfiguration - Konfigurationskanäle - Konfigurationskanal erstellen , setzen den Namen, die Beschreibung, speichern, dann unter Konfiguration - Konfigurationskanäle verwalten - Kanäle abonnieren und signieren den Konfigurationskanal für den Softwarekanal und das System.



Jetzt können wir Konfigurationen sowohl vom Server als auch von lokalen Computern bereitstellen und Partitionen erstellen.

Konfiguration - Dateien hinzufügen - Datei erstellen / Datei hochladen:



Wir können auch Remote-Befehle in Form eines Bash-Skripts senden:



Ich erinnere Sie daran, dass alle Aktionen einen Zeitplan durchlaufen. Eine Liste aller auf dieses System angewendeten Aktionen finden Sie im Abschnitt Ereignisse:



Errata

Eine der wichtigsten Funktionen in Spacewalk ist die Errata-Unterstützung, die bequem an Kanäle gebunden wird und es Ihnen ermöglicht, den Wichtigkeitsgrad der letzten Updates zu überwachen. Dies wird direkt auf dem Server konfiguriert. Zusätzlich zu den Skripten müssen Sie die erforderlichen Pakete für Pearl herunterladen:

 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 

Erstellen Sie dann die Haupt-Errata für Aktualisierungs- und Sammlungsskripte, die in / etc / rhn / gespeichert werden :

 #!/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 

Geben Sie beim Export den Namen und das Kennwort des Spacewalk-Administrators an, die Sie ganz am Anfang angegeben haben.

Machen wir das Skript ausführbar und fügen es Cron hinzu:

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

Lassen Sie es uns jetzt ausführen, um Änderungen in der grafischen Oberfläche zu sehen. Die Ausführung wird einige Zeit dauern.



Zusammenfassung


Ein wichtiger Punkt, den ich persönlich vermisst habe, ist das Einrichten und Installieren eines Proxys sowie das Erhöhen des gesamten Systems als HA. Ich hatte die Idee, die Anwendung über den Schrittmacher zu konfigurieren und in der Datenbank zu synchronisieren. Infolgedessen wurde beschlossen, diese Idee angesichts der nicht sehr großen Serverflotte von Client-Stationen aufzugeben. Wenn sich das System jedoch in den nächsten sechs Monaten als äußerst nützlich erweist, müssen Sie möglicherweise den ursprünglichen Server erweitern.

Automatisierung


Server:

Bash-Skript für die Serverbereitstellung (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 # 


Bash-Skript zum Installieren von Errata (legen Sie zuerst den Namen und das Kennwort für den Spacewalk-Administrator fest):
 #!/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 # 


Ansible Playbook für die Serverbereitstellung (vergessen Sie nicht, die Antwortdatei hinzuzufügen):
 - 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 


Kunde:

Bash-Skript für die Clientbereitstellung (IP und Schlüssel nicht vergessen):
 #!/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 für die Clientbereitstellung:
 - 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 }}" 


Vielen Dank für das Lesen des Artikels. Viel Glück

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


All Articles