Einrichtung und Bereitstellung

Der Produktionseinsatz verwendet Ansible zur Einrichtung und Konfiguration eines Servers für die EaaSI-Bereitstellung.

Systemanforderungen

Hardwareanforderungen

  • Eine VM oder eine physische Maschine für das EaaSI-Gateway (target-Maschine).

  • Minimal/Testing:

    • 8-Core AMD64 CPU

    • 16 GB RAM

    • 10 GB freier Speicherplatz für das EaaSI-System

    • eine zusätzliche 100+ GB Speicherplatz für Ressourcen (Umgebungen, Software, Content), montiert auf lokales Dateisystem

  • Empfohlen:

    • 12-Core AMD64 CPU

    • 24 GB RAM

    • 10 GB freier Speicherplatz für das EaaSI-System

    • einen zusätzlichen 300+ GB Speicherplatz für Ressourcen

    • Unterstützung bei VM-Einsätzen für „Nested KVM“/Nested Virtualisierung auf der Hostmaschine (siehe KVM Unterstützung)

      • Bei der Bereitstellung in der Cloud sollten Azure und GCloud VMs diese Funktion Out-of-the-box anbieten (GCloud-Nutzer müssen daran denken, dass die Funktion noch technisch in „beta“ zuerst ist).

      • AWS bietet derzeit nur verschachtelte Virtualisierungsunterstützung an seinen „barbaren Metall“ Optionen.

  • Eine controller Maschine zur Ausführung der Installationsskripte. Typische Desktop / Laptop-Hardware ist viel. Siehe unten für Softwareanforderungen.

Softwareanforderungen

  • Ein unterstütztes Linux-Betriebssystem sollte auf der target-Maschine installiert werden:

    • Ubuntu 18.04

    • Ubuntu 20.04

    • CentOS/RHEL 7

  • Ein python` Dolmetscher auf der target Maschine (dies sollte in der Regel automatisch auf den oben aufgeführten unterstützten Linux Distributionen bearbeitet werden)

  • Docker muss auf der controller Maschine installiert werden. (Installation von Docker und Docker-Compose auf der target Maschine wird automatisch vom Installer bearbeitet, wenn sie nicht bereits vorhanden sind). Bitte konsultieren Sie Dockers offizielle Dokumentation, um Docker und Docker Compose vor der Installation auf dem Controller-Gerät zu installieren.

Zielmaschinenkonfiguration

  • SSH-Zugang zur target-Maschine mit sudo` oder Root-Funktionen. Bitte stellen Sie sicher, dass der Benutzer der Zielmaschine kein Passwort benötigt, um sudo zu verwenden.

  • Bestimmte Emulatoren wie SheepShaver benötigen eine Zuordnung zu niedrigen Speicheradressen, die von SELinux deaktiviert werden können. Wenn SELinux aktiviert ist, erlauben Sie es, niedrige Speicheradressen zu kartieren, indem sudo setebool -P mmap_low_allowed 1 auf der target Maschine läuft.

  • Stellen Sie sicher, dass der Docker-Benutzer die Erlaubnis zu freigegebenen Ordnern schreibt.

  • Der Docker-Benutzer muss Lese-/Schreibrechte für ``/dev/kvm` für KVM/nted Virtualization support for Environments haben, um richtig zu arbeiten.

  • Um Ressourcen mit dem EaaSI-Netzwerk zu interagieren und auszutauschen, muss die target-Maschine in einer öffentlich adressierbaren IP konfiguriert und HTTP-Anforderungen akzeptieren können.

  • EaaSI holt gezielt Ressourcen aus dem EaaSI-Netzwerk über HTTPS ab, so dass die Maschine auch mit einem gültigen SSL-Zertifikat eingerichtet werden muss.

Installationsverfahren

Das Installationsverfahren besteht aus folgenden Schritten:

  1. Einrichtung einer Controller-Maschine für den Betrieb des Ansible-basierten Installers. Um Plattform- und Versionsunterschiede der benötigten Werkzeuge zu minimieren, werden mehrere vorkonfigurierte Docker-Container in diesem Schritt gebaut. Alle Werkzeuge werden in diesen Behältern ausgeführt, um den Installationsprozess mehr OS agnostisch und reproduzierbar zu machen. Weitere Informationen finden Sie unter:ref:preparing-controller-machine.

  2. Konfigurieren des Installers durch Angabe der Installationszielmaschine und Einstellungsoptionen für Ihre EaaSI-Einstellung. Weitere Details finden Sie unter:ref:configuring-eaasi-installer.

  3. Bereitstellung von EaaSI-Server (siehe Laufende EaaSI-Installation). Hier wird ein ansible playbook (mit kundenspezifischen Optionen aus dem vorherigen Schritt) ausgeführt. Der Bereitstellungsprozess besteht im Wesentlichen aus folgenden Aktionen:

    • Vorbereitung der Zielmaschine, optional Installation von Python, Docker und Docker-Compose

    • EaaaS-Komponenten von unserem CI-System herunterladen

    • Herunterladen von vorgefertigten Docking-Image mit EaaS Laufzeit

    • Erstellung von deploymentspezifischen EaaS-Konfigurationsdateien

    • Starten von EaaS-Container mit generierter Konfiguration und heruntergeladenen Komponenten

Vorbereitung von Controller-Machine

Zunächst muss eine ansible Steuerungsmaschine vorbereitet werden. Diese Controller-Maschine koordiniert den EaaSI-Installationsprozess und sollte vorzugsweise ein Linux-Betriebssystem verwenden, MacOS sollte aber auch funktionieren. Zur Vorbereitung der Steuerungsmaschine werden folgende Schritte ausgeführt:

  • Das eaasi-installer Repository in ein leeres Verzeichnis einbinden:

    $ git clone https://gitlab.com/eaasi/eaasi-installer
    
  • Wechseln Sie in das eaasi-installer-Verzeichnis und überprüfen Sie das aktuell empfohlene Release-Tag für den Installer mit dem bereitgestellten ``git-pull.sh`-Script:

    $ ./git-pull.sh origin v2021.10
    
  • Dann lauf:

    $ ./scripts/prepare.sh
    
Dieses Skript wird das Repository vorbereiten, Docker-Bilder erstellen, die für den Installer erforderlich sind und erzeugen
eine SSH-Schlüssel-Paar für den Zugriff auf die Zielmaschine. Während dieses Prozesses können Sie nach Ihrem Passwort gefragt werden.
abhängig von Ihrer Docker-Installation.
  • Kopieren Sie den generierten SSH Public Key auf die Installationszielmaschine:

    $ ssh-copy-id -i ./artifacts/ssh/admin.key user@hostname
    

    Der Benutzername sollte dem Remote-Benutzer mit Sudo-Funktionen entsprechen.

    Bemerkung

    Wenn Sie Ihren eigenen Exisiting-SSH-Schlüssel verwenden möchten, kopieren Sie einfach die öffentliche und private Schlüssel-Paar in das Verzeichnis ./artifacts/ssh und umbenennen Sie diese Schlüssel zu admin.key` und admin.key.pub`. Bitte beachten Sie, dass symbolische Links nicht funktionieren, denn Ansible wird in einem Docking-Container ausgeführt, wo die symbolischen Links des Hosts nicht gültig sind!

EaaSI-Installer konfigurieren

Die Zielmaschinen zur Installation von EaaSI sollten in einer Datei ``./artifacts/config/hosts.yaml definiert werden. Sie können die bereitgestellte Vorlagendatei für eine grundlegende Konfiguration verwenden:

$ cp ./config/hosts.yaml.template ./artifacts/config/hosts.yaml

Bearbeiten Sie die Vorlage hosts.yaml, um die Details Ihrer Zielmaschine anzupassen:

---
all:
  hosts:
    eaas-gateway:
      ansible_host: <IP-or-FQDN>
      ansible_user: <remote-user>

Als nächstes muss die EaaSI-Bereitstellung in einer Datei ``./artifacts/config/eaasi.yaml konfiguriert werden. Als Ausgangspunkt können Sie die bereitgestellte Vorlagendatei verwenden:

$ cp ./config/eaasi.yaml.template ./artifacts/config/eaasi.yaml

Bearbeiten Sie diese Datei mit einem Texteditor. Eine Beispielkonfiguration kann wie folgt aussehen:

---
host:
  eaas_home: "/eaasi"

docker:
  image: "eaas/eaas-appserver:v2021.10-eaasi"
  network_name: "eaasi"

  # enable SSL with provided certificate
ssl:
  enabled: true
  certificate: "./artifacts/ssl/certificate.crt"
  private_key: "./artifacts/ssl/private.key"


keycloak:
  version: "15.0.2"
  enabled: true
  admin_user: "superadmin"
  admin_password: "<SUPERADMIN-PASSWORD>"
  theme:
    version: "v2021.10"
    name: "eaasi-v1"

minio:
  version: "RELEASE.2021-11-03T03-36-36Z"
  enabled: true

eaas:
  version: "v2021.10-eaasi"
  migrations:
  - name: import-legacy-image-index
  - name: import-legacy-emulator-index
  - name: import-legacy-image-archive-v1
  - name: import-local-emil-environments
  - name: import-legacy-emil-database-v1
  - name: create-absent-emil-environments

  # currently required options,
  # just leave them as-is
  enable_backend_auth: true
  enable_user_auth: true
  single_user_mode: false
  user_archive_enabled: false
  auth_audience: ""

demo_ui:
  version: "v2021.10-eaasi"
  enable_admin_ui: true

eaasi_ui:
  version: "v2021.10"
  edition: "standalone"

Es gibt nur zwei notwendige (oder empfohlene) Bearbeitungen, die vor der Bereitstellung vorgenommen werden müssen: zuerst soll ein admin_password` für den ersten „superadmin“-Benutzer gesetzt werden (dies wird angenommen, dass es die gleiche Person/Benutzer ist, die die Bereitstellung durchführt; sie haben die Möglichkeit, zusätzliche Benutzer, einschließlich zusätzlicher Admins, in der EaSI UI einmal deployed).

Der zweite besteht darin, eine funktionelle SSL-Konfiguration einzustellen (das Deaktivieren von SSL kann funktionieren, wird aber wahrscheinlich unvorhersehbares Verhalten im UI verursachen und wird vom EaaSI-Team unterstützt).

Für die in hosts.yaml angegebene Domäne muss ein full-chain-Zertifikat und Public Key (z.B. sowohl .crt als auch .key-Komponenten) bereitgestellt werden. Da der Installer in einem Docker-Container läuft, müssen die Zertifikatsdateien im ``./artifacts-Verzeichnis platziert oder kopiert werden, bevor die Bereitstellung ordnungsgemäß installiert wird.

Bemerkung

Der EaaSI Installer verfügt über eine Reihe fortschrittlicher Konfigurationsoptionen, die standardmäßig ausgewählt werden, um die Unterstützung und Kompatibilität zwischen Ihrer Installation und vorhandenen Knoten im EaaSI-Netzwerk zu optimieren. Eine Änderung dieser Optionen wird nicht empfohlen oder unterstützt, es sei denn, das EaaSI-Team wird speziell geleitet.

Laufende EaaSI-Installation

Wenn alles konfiguriert ist, kann der Installationsprozess durch Laufen gestartet werden:

$ ./scripts/deploy.sh

Es wird eine Weile dauern, abhängig von Ihrer Internetverbindung und Zielmaschine. Wenn der Installationsprozess abgeschlossen ist, sollten Sie in der Lage sein, auf die EaaSI-Loginseite mit einem Browser auf der URL https://<hostname>` zuzugreifen. `````name>` sollte die in der hosts.yaml`-Datei angegebene Adresse der Zielmaschine entsprechen.

„Organisation“ mit eaas-orgctl einrichten

Sobald die EaaSI-Plattform implementiert ist, muss der Superadmin das eaas-orgctl-Script verwenden, um mindestens eine „Organisation“ für ihre EaaSI-Installation zu erstellen.

„Organisationen“ können verwendet werden, um beliebige Gruppen von Benutzern und Ressourcen innerhalb einer einzigen EaaSI-Installation zu erstellen (also eine einzelne EaaSI-Installation als Back-End für mehrere „Nodes“ zu machen). Die folgenden Anweisungen übernehmen eine Single-Organization-Bereitstellung (die einfachste und aktuell empfohlene Konfiguration; Sie können das README auf dem eaas-orgctl Repository für weitere Informationen zur Verwaltung mehrerer Orgs konsultieren)

Legen Sie das eaas-orgctl Skript in ein leeres Verzeichnis (außer/separate von Ihrem eaasi-installer):

$ git clone https://gitlab.com/eaasi/eaas-orgctl

Wechseln Sie in das neue Verzeichnis und verwenden Sie das eingebaute „template“-Funktion des Skripts, um eine JSON-Konfigurationsdatei für Ihre Organisation zu generieren:

$ ./eaas-orgctl template > <org-name>.json

Öffnen und bearbeiten Sie die leere JSON-Vorlage mit den gewünschten Werten für Ihren Organisationsnamen und geben Sie einen ersten Admin-Level-Benutzer für den Knoten an. Eine Beispielkonfiguration würde wie folgt aussehen:

{
	"tenant_id": "org-xyz",
	"name": "Organization XYZ",
	"admin": {
	   "email": "admin@xyz.internal",
	   "username": "admin-xyz",
	   "firstname": "Admin",
	   "lastname": "XYZ"
}

Warnung

Der EaaSI „superadmin“ und der erste Admin-Level-Benutzer werden separate Konten mit verschiedenen Anmeldeinformationen sein. Der Superadmin hat Zugriff und Kontrolle auf den EaaSI-Server, um diese Bereitstellungs-, Upgrade- und Organisationssteuerungsanweisungen auszuführen. Der anfängliche Admin-Benutzer bezieht sich einfach auf einen ersten Benutzer mit :ref: „Admin-Level <user_admin>“-Leistung in der EaaSI UI, z.B. zum Importieren und Replizieren von Ressourcen, erstellen weitere Benutzer, etc. Bitte beachten Sie, dass der Superadmin und der erste Admin-Benutzer die gleichen oder verschiedene Personen sein kann.

Wenn die Organisationskonfiguration JSON bereit ist, verwenden Sie den ```````````` URL und Superadmin-Berechtigungen aus dem vorherigen Einsatzschritt, um die Organisation zu erstellen:

$ ./eaas-orgctl -e 'https://<hostname>' -u 'superadmin' create <org-name>.json

Sie werden aufgefordert, das superadmin-Konto-Passwort einzugeben (vorher als admin_password` in Ihrem eaasi.yaml`` gesetzt).

Das eaas-orgctl Script wird die Organisation erstellen und ein zufälliges, temporäres Passwort für den anfänglichen Admin-Nutzer erzeugen, der im `<org-name>.json angegeben ist.

Geben Sie den anfänglichen Admin-Benutzernamen und das temporäre Passwort an den gewünschten ersten EaaSI-Benutzer an, oder verwenden Sie es selbst, um sich bei der EaaSI UI unter ``https://<hostname>` anzumelden. Beim ersten Login wird dieser anfängliche Admin-Benutzer aufgefordert, ein neues, dauerhaftes Passwort einzustellen.

Sie sind jetzt bereit, EaaSI zu verwenden!

Verwaltung von EaaSI

Ein vollständiger EaaSI-Einsatz beinhaltet eine Reihe von Docker-Containern im Zusammenhang mit dem Emulation-as-a-Service (EaaS) Back-End und dem EaaSI UI. Diese Container werden am besten in Tandem über systemctl`, anstatt einzeln verwaltet. Zum Beispiel:

$ sudo systemctl stop eaas     # to stop EaaSI
$ sudo systemctl start eaas    # to start EaaSI
$ sudo systemctl restart eaas  # to restart EaaSI

Entfernen von EaaSI

Wenn Fehler während der Ansible-Bereitstellung auftreten, kann es während der Fehlersuche notwendig oder ratsam werden, eine unvollständige Installation zu löschen, bevor Sie das Bereitstellungsskript erneut überprüfen. Alternativ können sysadmins EaaaSI entfernen, um eine Maschine nach dem Testen/Demo wieder zu wiederherstellen oder zu reinigen.

Um eine EaaSI-Installation sauber von Ihrem Server zu entfernen, führen Sie bitte die folgenden Schritte aus, um:

$ sudo systemctl stop eaas                            # stop EaaSI from running
$ sudo rm -rf /eaasi                                  # delete the EaaSI installation directory (as specified in your eaasi.yaml configuration)
$ sudo systemctl rm /etc/systemd/system/eaas.service  # delete the EaaSI service

Verlängerung von Zertifikaten

Unabhängig vom Anbieter müssen SSL-Zertifikate regelmäßig erneuert werden, um die richtigen HTTPS-Verbindungen zur EaaSI-Web-App aufrechtzuerhalten.

Wenn Sie Ihre Das Zertifikat der EaaSI-Bereitstellung wird sicher aktualisiert und ersetzt both das Voll-Ketten-Zertifikat * und* den entsprechenden privaten Schlüssel (mit <eaasi-root-dir>/certificates` auf der bereitgestellten/Zielmaschine). Die Erneuerung wird scheitern, wenn nur ein aktualisiertes Zertifikat/. crt wird ohne einen aktualisierten privaten Schlüssel bereitgestellt.

Der Server des EaaSI Stacks nginx` läuft in einem isolierten Docker-Container und ** holt nicht* automatisch neue oder erneuerte Zertifikate ab. Bitte starten Sie den eaasi-nginx-Container manuell nach dem Austausch eines Zertifikats, um sicherzustellen, dass nginx auf dem neuen Cert abholt:

$ sudo docker kill -s SIGHUP eaasi-nginx

Wenn Ihre Netzwerk-Konfiguration einen Web-Proxy beinhaltet, müssen Sie möglicherweise auch den Proxydienst nghttpx`, der innerhalb von Eaas eaas` läuft, neu starten. Docker Container. Wenn Probleme mit der SSL-Erneuerung auftreten, versuchen Sie, den folgenden Befehl als ersten Fehlerbehebungsschritt auszuführen:

$ sudo docker exec eaas sv restart nghttpx

Aktualisierung von EaaSI

Warnung

Unvorhersehbares Verhalten kann während eines Upgrade- oder Migrationsprozesses immer passieren und EaaSI sysadmins sollte immer eine komplette Serversicherung vorbereiten, bevor Sie eine Aktualisierung oder Migration mit dem Eaasi-Installer durchführen.

Um eine bisher bestehende EaaSI-Installation zu aktualisieren, aktualisieren Sie zunächst das eaasi-installer, indem Sie das git-pull.sh-Script ausführen, um die aktuellste Version des EaaSI-Teams zu erreichen:

$ ./git-pull.sh && ./git-pull.sh origin v2021.10

Bemerkung

Durch zweimaliges Ausführen des Skripts git-pull.sh, zuerst ohne Argumente, wird sichergestellt, dass das Skript selbst auf dem neuesten Stand ist, bevor das aktuelle Release-Zweig abruft.

Die EaaSI-Konfiguration in artifacts/config/eaasi.yaml` muss dann auch mit dem entsprechenden Git-Zweig oder Tag auf bestimmten Linien aktualisiert werden, für die docker```, eaas` und eaasi_ui` und demo_ui-Module. Für die aktuellste Veröffentlichung, die von EaaSI-Mitarbeitern empfohlen wird, verwenden Sie bitte Folgendes (wie in der bereitgestellten eaasi.yaml.template`` zu sehen ist):

  • eaas/eaas-appserver:v2021.10-eaasi `

  • eaas.git_branch: ``v2021.10-eaasi `

  • eaasi_ui.git_branch: v2021.10````

  • demo_ui.git_brach: ``v2021.10-eaasi ``

Nach diesen Konfigurationsänderungen, um die verschiedenen EaaSI-Komponenten zu aktualisieren, laufen:

$ ./scripts/update.sh [<component>...]

<component> kann einer der folgenden sein:

  • ear`: um den Server von EaaSI auf die neueste Version zu aktualisieren

  • docker-image: Laufzeit-Docker-Bild auf die neueste Version aktualisieren

  • eaasi_ui`: die EaaSI UI-Elemente auf die neueste Version aktualisieren

  • demo_ui: die Demo-UI-Elemente auf die neueste Version aktualisieren

Mehrere Komponenten können als platzgetrennte Liste angegeben werden. Wenn Sie ohne <Komponente> Argumente aufgerufen werden, werden alle Komponenten standardmäßig aktualisiert.

Migration von 2020.03 bis 2021.10

Bemerkung

Wenn Sie die Version 2020.03 der EaaSI UI nicht oder nie verwendet haben, um Ressourcen zu erstellen, können Sie diesen Abschnitt bei der Installation oder Aktualisierung von EaaSI ignorieren. Der Eaasi-Installer erkennt automatisch und überspringt Migrationsschritte, wenn sie unnötig sind.

Warnung

Unvorhersehbares Verhalten kann während eines Upgrade- oder Migrationsprozesses immer passieren und EaaSI sysadmins sollte immer eine komplette Serversicherung vorbereiten, bevor Sie eine Aktualisierung oder Migration mit dem Eaasi-Installer durchführen.

Ab v2021.10` eaasi-installer enthält eine Reihe von Migrationen, die wichtige strukturelle Änderungen in der Speicherung und dem Austausch von Ressourcenmetadaten zwischen der Freisetzung von EaaSI UI 2020.03 und später markierten Releases (ab 2021.10) ansprechen sollen.

Diese Migrationen sollten keine Ressourcenmetadaten, die durch die Veröffentlichung von EaaSI UI 2020 erstellt wurden, aktiv verändern oder beeinflussen; alle in einer vorherigen Veröffentlichung importierten oder erstellten Umgebungen, Software und Inhalte werden weiterhin bei der Migration vorhanden sein und mit dem ursprünglichen Benutzer verbunden, der sie erstellt hat. Der Netzstatus (Public/Saved to Node/Private) sollte auch unverändert bleiben. Die Migrationen sollen lediglich die Systemleistung optimieren, indem zuvor nur im Frontend-PostgreSQL-Datenbank des EaaSI-Clients gespeicherte Daten zum Emulation-as-a-Service-Back-End gespeichert werden und die redundante Speicherung einiger Metadaten auf Front- und Backend entfernt wird.

Die notwendigen Migrationsschritte sind im vorgesehenen eaasi.yaml.template` definiert und sollten as-is gelassen werden. Die Migration wird automatisch ausgeführt, wenn das Skript update.sh wie oben in Aktualisierung von EaaSI angegeben ausgeführt wird.

Die Migration von 2020.03 bis 2021.10 EaaSI UI-Release erfordert jedoch die Migration von user-Metadaten aus der Postgres-Datenbank zu Emulation-as-a-Services neues integriertes Keycloak-Modul zur Benutzerverwaltung und Authentifizierung. Leider sind Benutzerkennwörter in Postgres hashed und können nicht direkt migriert werden. Um bestehende Benutzer aus dem Release 2020.03 EaaSI UI zu migrieren, müssen neue, äquivalente Konten in Keycloak erstellt und alle Passwörter zurücksetzen.

Wenn der eaasi-installer die Migration von einer 2020.03-Installation erfolgreich abgeschlossen hat, generiert er automatisch eine Datei mit dem Titel ```keycloak-users.csv` unter `/[eaas-home-dir]/eaasi-ui/migrations/exports`` auf dem Zielserver. Dieser CSV enthält eine Liste aller neu erstellten Keycloak-Nutzer (Name und E-Mail-Kontoinformationen der Version 2020.03) mit einem entsprechenden temporären Passwort. Das Sysadmin, das das Update und die Migration betreibt, muss jedem Benutzer das entsprechende temporäre Passwort zur Verfügung stellen, damit sie beim anfänglichen Login-Test im aktualisierten EaaSI-Knoten verwenden. Der Benutzer wird dann aufgefordert, ein eigenes, dauerhaftes Passwort für sein Konto zu setzen, jetzt von Keycloak verwaltet. (Siehe Einloggen)

Browser-Kompatibilität

Das EaaSI-Team empfiehlt, den Zugang zum EaaSI-UI mithilfe von:

  • Firefox (v. 65+)

  • Chrom/Chrom

  • Microsoft Edge (v. 79+)

Andere Browser - einschließlich Safari oder ältere (nicht-Chrome-basierte) Versionen von Microsoft Edge können zu einem gewissen Grad arbeiten, aber sind nicht gut getestet.

Bemerkung

Einige Browser-Erweiterungen können auch stören EaaSI-Funktionalität, einschließlich Ad-Blocker, Popup-Blocker oder ähnliche. Wenn Sie auf unerwartete Verhaltensweisen stoßen, versuchen Sie bitte, alle Browser-Erweiterungen zuerst zu deaktivieren.