mglantz.eda-ha
mglantz.eda-ha
Eine Rolle, die hohe Verfügbarkeit für einen Event Driven Ansible (EDA) Server bereitstellt. Sie müssen zwei oder mehr unabhängige EDA-Server einrichten und einen Lastenausgleich davor setzen. Der Lastenausgleich muss eine aktive-passive Balance zwischen Ihren EDA-Servern durchführen, was bedeutet, dass B nur Verkehr erhält, wenn A ausfällt usw.
Regelwerke, die auf dem EDA-Server laufen, lösen Playbooks aus, die als job_templates in Ihren AAP-Controllern bereitgestellt werden. Wenn Sie die Playbooks erstellen, die Ihre Aktionen durchführen, fügen Sie diese Rolle hinzu, wie im Beispiel gezeigt, und hängen die Aufgaben in den Playbooks vom bereitgestellten eda_activation Boolean ab. Wenn dieser Boolean true ist, bedeutet das, dass der betreffende EDA-Server aktiv ist, wenn nicht, ist er passiv und es sollten keine Aufgaben ausgeführt werden. Aktionen werden also nur ergriffen, wenn ein EDA-Server "aktiviert" wird, was bedeutet, derjenige, auf den der Lastenausgleich verteilt wird.
Der Failover zwischen aktiv und passiv erfolgt in der Geschwindigkeit, die der Lastenausgleich bei einer Störung erkennt, normalerweise etwa eine Sekunde. Der einzige Unterschied zwischen EDA Server A und B sowie den entsprechenden AAP-Controllern besteht darin, dass Aufgaben nur ausgeführt werden, wenn sie vom aktiven EDA-Server ausgelöst werden. Es gibt keine unterschiedlichen Konfigurationen auf der EDA-Server-Seite.
Sobald Sie die folgende Dokumentation gelesen haben und sich die Aufgaben/main.yml der Rolle ansehen, wird das folgende Bild Sinn machen.
Rolle installieren mit:
ansible-galaxy role install mglantz.eda-ha
Um diese Rolle in Ihren Playbooks zu verwenden, erstellen Sie eine requirements.yml-Datei, die Sie in Ihr Rollenverzeichnis legen. Die requirements.yml-Datei muss Folgendes angeben:
---
- name: mglantz.eda-ha
Ein Beispiel dafür finden Sie hier: https://github.com/mglantz/event-driven-ansible-demo/
Anforderungen
Zwei oder mehr installierte Instanzen von Red Hat Ansible Automation Platform 2.4 mit EDA-Controller oder vielleicht https://github.com/ansible/eda-server (der Upstream-eda-server wurde jedoch nicht getestet).
Ein Lastenausgleich, der für aktive-passive Lastenverteilung auf die installierten EDA-Server konfiguriert ist.
Erstellen Sie die Datei: /var/lib/ansible-automation-platform/eda/ui/static/media/detect.json auf jedem EDA-Server, wie folgt:
{
"install_id": "eindeutige_id_die_sie_einfallen_lassen"
}
Wenn die Rolle feststellt, welcher EDA-Server aktiv und welche passiv sind, geschieht dies durch den Abgleich der install_id, die sie findet, wenn sie einen EDA-Server direkt kontaktiert, und derjenigen, die sie findet, wenn sie den Lastenausgleich verwendet.
- Angepasste Aktions-Paybooks wie im Abschnitt
Beispiel-Paybook
weiter unten, die diese Rolle nutzen.
Rollenvariablen
# Domainname des Lastenausgleichs vor den EDA-Servern
load_balancer_fqdn: <string|fqdn des Lastenausgleichs>
# Domainname des EDA-Servers, Vorschlag, wenn AAP, im job_template festlegen
eda_fqdn: <string|fqdn des EDA-Servers>
# ob wir das https-Zertifikat validieren sollen. Wenn auf true gesetzt, müssen alle EDA-Server gültige Zertifikate haben
# gilt auch für die Verbindung über den Lastenausgleich
validate_eda_tls_cert: <bool|true/false>
Abhängigkeiten
Ansible 2.9 oder 2.14.
Beispiel-Paybook
Ein Beispiel, wie man die Rolle verwendet. In den Aktions-Paybooks, die von EDA-Events ausgelöst werden, passen Sie sie wie folgt an:
---
# Das folgende Play muss ganz oben in Ihren Playbooks stehen.
# Es ist sinnvoll, die eda_fqdn-Variable auf der Ebene des job_templates festzulegen
- name: Erkennen, welcher EDA-Server aktiv ist, und die eda_activation entsprechend festlegen
hosts: localhost
roles:
- { role: mglantz.eda-ha, load_balancer_fqdn: "loadbalancer.sudo.net", eda_fqdn: "eda.sudo.net" }
- name: Site ist online
hosts: all
vars:
# Diese Variable muss den Playbooks hinzugefügt werden, die Ihre tatsächlichen Aktionen durchführen
eda_activation: "{{ hostvars['localhost']['eda_activation'] }}"
gather_facts: false
tasks:
- debug:
msg: "Alles ist in Ordnung"
# Fügen Sie die folgende when-Anweisung für Aufgaben hinzu, die Sie steuern möchten
when: eda_activation
# Oder ähnliches für einen Block
- block:
- name: Etwas anderes tun
ansible.builtin.debug:
msg: "Ein imaginäres anderes"
- name: Auch dies tun
ansible.builtin.debug:
msg: "Auch dieses Ding (imaginär)"
when: eda_activation
Lizenz
GPL 3.0
Autor Informationen
- Magnus Glantz, sudo at redhat.com, 2023
- Roberto Nunez, rnunez at redhat.com, 2023
Role which adds HA capability to an EDA server setup
ansible-galaxy install mglantz.eda-ha