itnok.is_ubuntu
is-ubuntu
Erkennt, ob der Ziel-Ubuntu-Host ... ein Container oder eventuell localhost ist.
Durchgeführte Schritte:
- Setze is_ubuntu_localhost Fakt
- Prüfe, ob wir uns in einem Container befinden oder nicht
- Setze is_ubuntu_inside_container Fakt
- Prüfe, ob Proxy-Einstellungen vorhanden sind oder nicht
:exclamation: Anforderungen
Keine.
:abcd: Rollenvariablen
Variable | Beschreibung | Standardwert |
---|---|---|
is_force_lookup |
Die Suche nach benutzerdefinierten zusätzlichen Fakten erfolgt nicht, wenn sie bereits existieren. Damit wird gezwungen, sie zu suchen. | nein |
is_test_url_list |
Liste von URLs, um die Internetverbindung/Erreichbarkeit zu testen | [] |
:link: Abhängigkeiten
Keine.
:loudspeaker: Fakten
Diese Rolle erstellt die folgenden Fakten, die von anderen Rollen oder Playbooks verwendet werden können:
Fakt | Beschreibung |
---|---|
is_ubuntu_behind_proxy |
Version, die für die aktuelle Ansible-Rolle beim Ausführen gekennzeichnet ist (dieser Fakt wird nicht aktualisiert, wenn er vorhanden ist, es sei denn, is_force_lookup ist auf ja gesetzt) |
is_ubuntu_inside_container |
Wahr, wenn wir uns in einem Container befinden. Dies passiert, wenn PID 1 weder init noch systemd ist (dieser Fakt wird nicht aktualisiert, wenn er vorhanden ist, es sei denn, is_force_lookup ist auf ja gesetzt) |
is_ubuntu_localhost |
Wahr, wenn die zielgerichtete Maschine der Rolle localhost ist (dieser Fakt wird nicht aktualisiert, wenn er vorhanden ist, es sei denn, is_force_lookup ist auf ja gesetzt) |
is_ubuntu_network_reachable |
Wahr, wenn alle URLs aus is_test_url_list erreichbar sind (es sind standardmäßig auch alle URLs aus /etc/apt/sources.list enthalten) |
is_ubuntu_url_reachable_list |
Liste aller erreichbaren URLs |
is_ubuntu_url_unreachable_list |
Liste aller unerreichbaren URLs |
:notebook: Beispiel-Playbook
Hier ein Beispiel, wie man diese Rolle in seinen Playbooks verwendet:
---
- hosts: servers
remote_user: ubuntu # optional (dein Benutzer für den Remotezugriff)
gather_facts: ja # optional
rollen:
- { rolle: itnok.is_ubuntu }
:microscope: Tests
Diese Rolle unterstützt Tests mit Molecule, um ihre Funktionalitäten in einer allgemeinen Umgebung zu überprüfen.
Molecule wird nicht benötigt, um die Rolle zu verwenden, ist jedoch notwendig, um sie auf einer lokalen Installation oder in CI zu testen. Ein Beispiel für die Verwendung von Molecule für CI findet sich in den GitHub-Aktionen dieses Repositories. Für die Installation von Molecule siehe die Anweisungen in der Molecule-Dokumentation. Wenn die dort aufgeführten notwendigen Abhängigkeiten vorhanden sind, sollte alles so einfach sein wie:
$ python3 -m pip install --user "molecule[ansible,docker,lint]"
Die Tests werden in Containern ausgeführt, die zur Laufzeit für diesen Zweck erstellt werden (um so allgemein wie möglich zu sein). Aus diesem Grund muss Docker installiert sein. Wenn Podman eine bevorzugte Alternative zur Verwaltung von Containern ist, sollte der notwendige Befehl zur Installation von Molecule wie folgt geändert werden:
$ python3 -m pip install --user "molecule[ansible,podman,lint]"
Um Podman zu verwenden, sollte der von Molecule verwendete Treiber auch in der Datei molecule/default/molecule.yml
geändert werden: Die Zeilen #5-6 sollten folgendermaßen geändert werden:
driver:
name: podman
Alle Tests, zusätzlich zu Überprüfungen für Formatierung, Linting und Idempotenz, können mit folgendem Befehl ausgeführt werden:
$ molecule test --parallel
(Die Verwendung der optionalen --parallel
-Option zum Starten der Test-Suite wird dringend empfohlen, weil sie bei Tests über mehrere Ziel-Container die Testlaufzeit erheblich verkürzt!)
Zusätzliche Tests können in das Playbook molecule/default/verify.yml
hinzugefügt werden, falls nötig.
:guardsman: Lizenz
MIT (mehr erfahren)
Detects whether the target Ubuntu host is... a container or eventually localhost (and more).
ansible-galaxy install itnok.is_ubuntu