Verschiebe einen Dienst auf einen anderen Host

AnsibleBeginner
Jetzt üben

Einführung

Riverlight Weekend hat ein funktionierendes Programm, und eine vorbereitete Ersatzquelle ist jetzt freigegeben. Verlege nur die Programmverbindung auf das neue Mitglied. Erhalte Veranstaltungsort, aktuelle Besuchererfahrung und ursprüngliche Programmquelle.

Schließe zuerst Verbinde die Veranstaltungsseiten ab oder sei mit Inventargruppen, hostvars, Vorlagen, reinen uri-Leseprüfungen und Handlern vertraut. Dieses unabhängige Lab liefert das zuvor vermittelte Playbook und die Vorlage. Dienstinstallation oder Migration der Quelldaten sind nicht erforderlich. Die Dauer ist eine Autorenschätzung.

Verschiebe das Programm und erhalte die alte Quelle

In diesem Schritt änderst du eine Inventargruppe für ein vorbereitetes Ersatzprogramm und erhältst die Verbindung zum Veranstaltungsort sowie die ursprüngliche Quelle.

Diese Umgebung ist unabhängig. Event Site liefert bereits ein funktionierendes Riverlight-Programm; der freigegebene Ersatz hat andere Programmpunkte. Öffne Program: Das alte Programm zeigt Morning sketchbook und Lunch by the river. Auch Visit und Visitor guide funktionieren und müssen während des Mitgliedswechsels verfügbar bleiben.

Wechsle zu Controller, das in /home/labex/project startet. Das geschützte connect.yml und die Routenvorlage aus dem vorherigen Lab liegen bereit; diese VM hängt nicht von dessen Dateien ab. Kehre bei Bedarf mit cd /home/labex/project ins Arbeitsverzeichnis zurück. Lies die Freigabe und die aktuellen Mitglieder:

cat approved-services.txt
cat inventory.ini
ansible-inventory --graph

Das freigegebene Programm liegt jetzt auf web2, Ausgabe 2026-revised. Das Inventar wählt weiterhin web1 mit dem alten Programm. web2 bietet zugleich den Veranstaltungsort auf einem anderen Port an. Ein Host darf beiden Gruppen angehören: Gruppenmitgliedschaft beschreibt Dienstrollen und verlangt keine eigene Maschine je Rolle. Beide Quellcontainer teilen den Kernel der Lern-VM; der Eingang läuft auf dem Controller.

Sieh dir die Hostdaten und beide Quellidentitäten an. Wie zuvor liest curl --config die vorbereitete URL und die Fehleroptionen aus einer Datei:

cat host_vars/web2.yml
cat requests/new-program.conf
curl --config requests/new-program.conf
curl --config requests/old-program.conf

Alte und neue Quelle funktionieren. Hinter den aktuellen Website-Eingang gehört jedoch nur die neue Ausgabe. Das Verschieben der Verbindung erlaubt nicht, die alte Quelle oder ihre Dateien zu löschen.

Lies die vorbereitete wiederverwendbare Automatisierung:

cat connect.yml
cat templates/routes.json.j2

groups['program'][0] wählt das Programmmitglied; hostvars liefert seine Adresse und program_port. Der Ausdruck für den Veranstaltungsort verwendet unabhängig seine Gruppe und venue_port. HTTP-Assertions stehen vor der Vorlage. Eine Routenänderung benachrichtigt den vorbereiteten Helfer, der den vorhandenen Eingangsprozess neu laden lässt.

Ersetze das kleine Inventar wie unten. Du verwendest wie im ersten Lab cat, Ausgabeumleitung und ein Here-Dokument mit einfachen Anführungszeichen. Füge das abschließende EOF auf einer eigenen Zeile ein. Fehlt es, drücke Ctrl+C und wiederhole den gesamten Block. Hostdaten und freigegebene Ausgaben bleiben unverändert:

cat > inventory.ini <<'EOF'
[gateway]
entry ansible_connection=local ansible_python_interpreter=/usr/bin/python3

[program]
web2

[venue]
web2
EOF
ansible-inventory --graph

Beide Dienstgruppen sollten jetzt web2 enthalten. Das lokale entry bleibt in [gateway]. Korrigiere falsch geschriebene Gruppen oder ein zusätzliches Mitglied in dieser Datei, bevor du fortfährst. Gleiche solche Fehler nicht durch feste Adressen in der Vorlage aus.

Prüfe die Syntax und sieh dir die geplanten Routen an:

ansible-playbook connect.yml --syntax-check
ansible-playbook connect.yml --check --diff

Die reinen HTTP-Leseabfragen laufen auch während der Vorschau und müssen das freigegebene Programm und den Veranstaltungsort erkennen. Nur die Programmroute darf sich ändern. Adresse und Port des Veranstaltungsorts bleiben gleich. Die Vorschau lädt das Gateway nicht neu. Wende die Änderung an:

ansible-playbook connect.yml

Erwarte die Vorlagenänderung und RUNNING HANDLER [Reload entry]. Öffne Event Site, folge Program und bestätige, dass Paper and ink, Acoustic afternoon und Shared supper den alten Zeitplan ersetzen. Klicke auf Download the schedule, danach auf Visit und Visitor guide. Veranstaltungsort und Anreisehinweise müssen unverändert sein.

Der Eingang sollte nun das Ersatzprogramm zeigen. Achte auf die drei Programmpunkte und die Ausgabe 2026-revised unter dem Downloadlink:

Ersatzprogramm am bestehenden Website-Eingang

Kehre zu Controller zurück. Speichere den aktuellen Download in der VM; -o benennt die Ausgabedatei:

curl -fsS http://127.0.0.1:8081/program/schedule.csv -o schedule.csv
cat schedule.csv

Die CSV muss die drei aktuellen Programmpunkte enthalten und nicht das alte Programm mit zwei Einträgen. Bestätige, dass die alte Quelle direkt weiter antwortet:

curl --config requests/old-program.conf

Sie sollte weiterhin program, riverlight, 2026-original melden. Sie wurde aus der Eingangskonfiguration entfernt und nicht abgeschaltet. Damit bleiben Daten und eine unabhängige Referenz erhalten, ohne sie weiterhin als ausgewählt auszugeben.

Wiederhole abschließend das Playbook:

ansible-playbook connect.yml

Erwarte changed=0, failed=0 und keinen Handler. Ist eine Quelle vorübergehend nicht erreichbar, muss die Vorabprüfung vor der Vorlage stoppen. Ein Verbindungsfehler fordert nicht zum Entfernen des alten Knotens auf. Korrigiere das ausgewählte Mitglied oder den Datenverweis und versuche es erneut. Mit dem sha256sum-Vergleich aus dem ersten Lab kannst du eine unveränderte Eingangsdatei nachweisen.

Verwalte ausschließlich Inventarmitglieder, das wiederverwendbare connect.yml und templates/routes.json.j2 sowie die Route über dieses Playbook. Erhalte gelieferte Hostvariablen, freigegebene Veranstaltung und Ausgaben, Quellinhalte, private Notizen, sämtliche Quelldienste und die Gateway-Implementierung. Abfragen und Vorlagen müssen andere Mitgliedsnamen, Adressen und Ports unterstützen. Nutze /opt/labex/service-links/reload.py mit dem Eingangsverzeichnis dieses Projekts. Verwende die vermittelten direkten Aufgaben uri, assert, template und einen begrenzten command-Handler zum Neuladen. Verbirg keine Abfragefehler und führe im Prüfmodus keine Schreibzugriffe aus.

Zusammenfassung

Du hast die Dienstmitglieder geändert, statt eine neue Adresse fest einzutragen, die Route vorab betrachtet und die Änderung angewendet. Die echte Website und die CSV bestätigten das neue Programm. Die alte Quelle blieb unabhängig verfügbar, und Veranstaltungsort sowie Leitfaden blieben erhalten.