Inhaltsverzeichnis
Für eine Oracle System Umgebung Foreman 3.5 auf Oracle Linux 8 als Repository Proxy und Konfigurationswerkzeug aufsetzen
01.2022
Übersicht Foreman
Standardfunktionen von Foreman:
- Erkennung, Bereitstellung und Upgrade von Servern
- Erstellen und Verwalten von Instanzen in Virtualisierungsumgebungen / in privaten bzw. öffentlichen Clouds
- Installation von Betriebssystemen über PXE, lokale Medien oder aus Vorlagen / Images
- Übersicht und Verwaltung aller Server im System
- Auditierung historische Änderungen für Audits und Fehlersuche
- Web-Benutzeroberfläche, JSON REST API und CLI für Linux
- Kann nach Bedarf über eine Plugin-Architektur erweitert werden
Für unseren Einsatzzweck als Proxy Funktionalität für RPM Repositories mit Lizenz-Verwaltung z.B. für Redhat muss die Katello Option zum Foreman bei der Installation gleich mit ausgewählt werden.
Nachträglich lässt sich das nicht mehr hinzufügen.
Ablauf Installation
Voraussetzung: Der Server muss die folgenden Repos erreichen können:
D.h. falls eine Applikation FW bzw. ein URL Filter im Proxy im Einsatz ist, diese URL's freischalten lassen.
Ablauf:
- Oracle Linux 8 Umgebung bereitstellen wie Ein Oracle Linux 8 Basis System als Grundlagen für eine Oracle Clusterware und Datenbank Installation vorbereiten
- Umgebung für Foreman optimieren
- Puppet / Foreman Repository integrieren
- Foreman Installer mit den notwendigen Parametern aufrufen
- Benutzer einrichten
- Den ersten Host registrieren
- Die PRM Repositories einbinden
Linux Server Umgebung für Foreman optimieren
Zeitdienst kontrollieren, Uhrzeit muss über aller verwalteten Server korrekt sein! Bei Bedarf Crony einrichten!
Namensauflösung muss perfekt über einen DNS Server funktionieren!
Der Server muss sich auch selber auflösen können und unter dem Namen von allen System erreichbar sein!
ping -c 2 $(hostname -f)
Ruby
Ruby auf dem System konfigurieren:
dnf module reset ruby dnf -y module enable ruby:2.7 dnf install ruby -y
Firewall
Ports freischalten:
# firewall-cmd \ --add-port="53/udp" --add-port="53/tcp" \ --add-port="67/udp" \ --add-port="69/udp" \ --add-port="80/tcp" --add-port="443/tcp" \ --add-port="5647/tcp" \ --add-port="8000/tcp" --add-port="9090/tcp" \ --add-port="8140/tcp" firewall-cmd --reload
bzw. komplett deaktiveren:
systemctl stop firewalld systemctl disable firewalld
Puppet / Foreman Repository integrieren
Konfigure Redhat Linux 8 Repos:
subscription-manager repos --disable "*" subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms \ --enable=rhel-8-for-x86_64-appstream-rpms dnf clean all
Foreman und Puppet Repos hinzufügen:
dnf -y install https://yum.theforeman.org/releases/3.5/el8/x86_64/foreman-release.rpm dnf -y install https://yum.theforeman.org/katello/4.7/katello/el8/x86_64/katello-repos-latest.rpm dnf -y install https://yum.puppet.com/puppet7-release-el-8.noarch.rpm dnf module enable katello:el8 pulpcore:el8 # requires module(postgresql:12) Meldung kann ignoriert werden
Testen ob alle Repos erreicht werden:
dnf clean all dnf install unzip
Problem Curl error (60): Peer certificate cannot be authenticated with given CA certificates for SSL certificate problem: self signed certificate in certificate chain
SSL Verifzierung für dnf temopräre über „sslverify=0“ in der dns Konfiuration /etc/dnf/dnf.conf ausschalten falls hinter einem SSL Proxy:
vi /etc/dnf/dnf.conf sslverify=0
Allerdings hat das nicht in meinen Fall geholfen am Ende die Datei zu laden, es blieb nicht anders übrig als die Daten über die URL https://yum.puppet.com/puppet7-release-el-8.noarch.rpm direkt zu holen:
curl --insecure https://yum.puppet.com/puppet7-release-el-8.noarch.rpm dnf -y install puppet7-release-el-8.noarch.rpm
bzw. von andern Host holen und dann einspielen.
Problem repository are already installed but they are not correct for this package ..
Darauf achten das die Katello und Forman Repo auch von der geleichen Version sind! Auf die Reihenfolge der Aufrufe achten!
Foreman Installation
Da wir Foremann als Proxy zu Redhat für die RPM Verteilung und Lizenzverwaltung einsetzten wollen, muss auch das Katello plug-in Gleich zu Begin installiert werden. Nachträglich ist das nicht möglich!
Umgebung aktualisieren:
dnf update
Installer installieren:
dnf -y install foreman-installer-katello
Installation aufrufen (mit –tuning development da meine VM nur 16GB Ram hat!) :
foreman-installer --help foreman-installer --full-help foreman-installer -i # oder foreman-installer --scenario katello \ --foreman-initial-organization "GPIConsult" \ --foreman-initial-location "Rossbach" \ --foreman-initial-admin-username admin \ --foreman-initial-admin-password xxxxx \ --enable-foreman-plugin-openscap \ --enable-foreman-proxy-plugin-openscap \ --enable-foreman-plugin-ansible \ --enable-foreman-proxy-plugin-ansible \ --enable-foreman-plugin-remote-execution \ --enable-foreman-proxy-plugin-remote-execution-script \ --tuning development 2023-01-19 15:31:12 [NOTICE] [root] Loading installer configuration. This will take some time. 2023-01-19 15:31:15 [NOTICE] [root] Running installer with log based terminal output at level NOTICE. 2023-01-19 15:31:15 [NOTICE] [root] Use -l to set the terminal output log level to ERROR, WARN, NOTICE, INFO, or DEBUG. See --full-help for definitions. 2023-01-19 15:34:07 [NOTICE] [configure] Starting system configuration. 2023-01-19 15:35:57 [NOTICE] [configure] 250 configuration steps out of 1502 steps complete. 2023-01-19 15:36:38 [NOTICE] [configure] 500 configuration steps out of 1504 steps complete. 2023-01-19 15:36:49 [NOTICE] [configure] 750 configuration steps out of 1509 steps complete. 2023-01-19 15:38:16 [NOTICE] [configure] 1000 configuration steps out of 1532 steps complete. 2023-01-19 15:40:32 [NOTICE] [configure] 1250 configuration steps out of 1532 steps complete. 2023-01-19 15:42:53 [NOTICE] [configure] 1500 configuration steps out of 1532 steps complete. 2023-01-19 15:43:00 [NOTICE] [configure] System configuration has finished. Executing: foreman-rake upgrade:run WARNING: Sidekiq::Web.sessions= is no longer relevant and will be removed in Sidekiq 7.0. /usr/share/gems/gems/sidekiq-6.3.1/lib/sidekiq/web.rb:75:in `set' ============================================= Upgrade Step 1/8: katello:correct_repositories. This may take a long while. ============================================= Upgrade Step 2/8: katello:clean_backend_objects. This may take a long while. 0 orphaned consumer id(s) found in candlepin. Candlepin orphaned consumers: [] ============================================= Upgrade Step 3/8: katello:upgrades:4.0:remove_ostree_puppet_content. ============================================= Upgrade Step 4/8: katello:upgrades:4.1:sync_noarch_content. ============================================= Upgrade Step 5/8: katello:upgrades:4.1:fix_invalid_pools. I, [2023-01-19T15:43:10.385970 #16591] INFO -- : Corrected 0 invalid pools I, [2023-01-19T15:43:10.386001 #16591] INFO -- : Removed 0 orphaned pools ============================================= Upgrade Step 6/8: katello:upgrades:4.1:reupdate_content_import_export_perms. ============================================= Upgrade Step 7/8: katello:upgrades:4.2:remove_checksum_values. ============================================= Upgrade Step 8/8: katello:upgrades:4.4:publish_import_cvvs. Success! * Foreman is running at https://gpiforeman01.pipperr.local Initial credentials are admin / xxxxxxxxxxx * To install an additional Foreman proxy on separate machine continue by running: foreman-proxy-certs-generate --foreman-proxy-fqdn "$FOREMAN_PROXY" --certs-tar "/root/$FOREMAN_PROXY-certs.tar" * Foreman Proxy is running at https://gpiforeman01.pipperr.local:9090
health Check ausführen
foreman-maintain health check Running ForemanMaintain::Scenario::FilteredScenario ================================================================================ Check number of fact names in database: [OK] -------------------------------------------------------------------------------- Check whether all services are running: [OK] -------------------------------------------------------------------------------- Check whether all services are running using the ping call: [OK] -------------------------------------------------------------------------------- Check for paused tasks: [OK] --------------------------------------------------------------------------------
Settings über die Console prüfen:
hammer settings list --fields="Name,Value"
Problem - Umgebung zu wenig RAM
Ist die Umgebung nicht so groß mit „–tuning development“ auf die kleinste Umgebung konfugrieren:
Probem: Tuning profile 'default' requires at least 20 GB of memory and 4 CPU cores
Lösung : –tuning development
Repositories einbinden
MS:
- In the Foreman web UI, navigate to Content > Products.
- Click Repo Discovery.
- In the Repository Type field, select Yum Repositories.
- In the URL to Discover field, enter the Microsoft URL https://packages.microsoft.com/rhel/8/
- Click Discover.
- Select /prod repositories.
- Click Create Selected.
- In the Product field select New Product.
- In the Name field enter desired product name.
- Click Run Repository Creation.
Client einbinden
Vorbereitung Foreman Server
Activation Key erzeugen:
Template und Registation Feature vom Smart Proxy aktiviert werden:
foreman-installer --foreman-proxy-registration true --foreman-proxy-templates true --foreman-proxy-template-url 'http://gpiforeman01.pipperr.local'
Betriebsystem unter Operation System anlegen
Über Host⇒„Register Host“ URL erzeugen, falls einigermaßen sicheres Netz mit dem Schalter „Insecure“
FW Freischaltung
Der Client benötigt die folgenden FW Freischaltungen:
# firewall-cmd \ --add-port="53/udp" --add-port="53/tcp" \ --add-port="67/udp" \ --add-port="69/udp" \ --add-port="80/tcp" --add-port="443/tcp" \ --add-port="8443/tcp" \ --add-port="8140/tcp" --add-port="9090/tcp" firewall-cmd --runtime-to-permanent firewall-cmd --list-all
Client umziehen
# Remove Katello Agent systemctl stop goferd systemctl disable goferd yum -y remove remove katello-agent # Unregister old sub yum clean all subscription-manager remove --all subscription-manager unregister subscription-manager clean # URL aus der Oberfläche aufrufen curl -sS --insecure 'https://gpiforeman01.pipperr.local:9090/register?activation_keys=xxxxxxxxxxxx................... # Evlt. Repos die zu viel sind per Pool ID wieder mit remove entfernen subscription-manager remove --pool=xxxxxxxxxxxxxxxx
Deinstallieren
Vor der Installation einen Snapshot der Maschine erstellen! Dann das das zurückgehen auf dem Snapshot die bessere Wahl!
Entfernen mit:
Remove foreman yum remove foreman foreman-installer foreman-proxy foreman-installer-katello rm -rf /var/lib/foreman rm -rf /usr/share/foreman rm -rf /usr/share/foreman-proxy/logs rm -rf /etc/httpd/conf.d/foreman.conf rm -rf /etc/foreman rm -rf /etc/foreman-installer rm -rf /etc/foreman-proxy rm -rf /opt/puppetlabs/server/data/puppetserver/yaml/foreman rm -rf /run/foreman rm -rf /usr/libexec/foreman rm -rf /var/lib/selinux/targeted/active/modules/400/foreman rm -rf /var/log/foreman # Remove puppet yum remove puppet puppetmaster puppet-common puppetmaster-common puppetlabs-release rm -rf /usr/lib/ruby/vendor_ruby/puppet rm -rf /usr/share/puppet rm -rf /var/lib/puppet /etc/puppet rm -rf /etc/apache2/conf.d/puppet.conf
Installation mit zurücksetzen der Daten mit „ –reset-data“ :
foreman-installer --scenario katello \ --foreman-initial-organization "GPIConsult" \ --foreman-initial-location "Roßbach" \ --foreman-initial-admin-username admin \ --foreman-initial-admin-password xxxxxxx\ --enable-foreman-plugin-openscap \ --enable-foreman-proxy-plugin-openscap \ --enable-foreman-plugin-ansible \ --enable-foreman-proxy-plugin-ansible \ --enable-foreman-plugin-remote-execution \ --enable-foreman-proxy-plugin-remote-execution-script \ --tuning development --reset-data
Quellen
Web:
Doku Installation:
Anleitung:
OpenScap