andrewvaughan.prompt
Aufforderung
Dieses Ansible Modul bietet Unterstützung, um einfache Nachrichten an den Benutzer, der ein Playbook ausführt, anzuzeigen. Dies stellt eine sauberere Möglichkeit dar, Nachrichten als die integrierte debug Aufgabe zu präsentieren. Optional kann die Nachricht auch als Aufforderung behandelt werden, um auf Benutzerfeedback zu warten. Die Antworten auf diese Aufforderungen können als Ansible-Variablen registriert werden.
Installation
Dieses Plugin ist in Ansible Galaxy verfügbar. Sobald Ansible Galaxy installiert ist, können Sie dieses Plugin mit dem folgenden Befehl installieren:
ansible-galaxy install andrewvaughan.prompt
Um dieses Plugin zu verwenden, fügen Sie einfach die Rolle in Ihre Playbook-Datei mit folgender Ergänzung hinzu:
roles:
- andrewvaughan.prompt
Sobald dies abgeschlossen ist, können Sie das gesamte Plugin wie in den Nutzungsrichtlinien beschrieben verwenden.
Manuelle Installation
Um dieses Plugin zu Ihrem Projekt hinzuzufügen, kopieren Sie einfach die Datei /action_plugins/prompt.py
in einen Ordner namens action_plugins
im Stammverzeichnis Ihres Playbooks. Ansible findet und aktiviert automatisch alle von dem Plugin zur Verfügung gestellten Befehle, wie in den Nutzungsrichtlinien beschrieben.
Abhängigkeiten
Dieses Modul wurde mit Ansible v2.0 und höher getestet. Es kann auch mit anderen Versionen funktionieren, wird jedoch nicht offiziell unterstützt. Sobald Ansible und seine Abhängigkeiten installiert sind, sollte dieses Plugin nutzbar sein.
Nutzung
Die Funktionalität des Ansible Prompt Moduls ist derzeit sehr eingeschränkt. Momentan wird nur die Anzeige von Nachrichten an den Benutzer unterstützt.
Das Ansible Prompt Plugin nimmt einen einzelnen Parameter, msg
, der eine oder mehrere Nachrichten für den Benutzer enthalten kann. Beispiele für Aufgaben sind wie folgt:
- name: Einfache Nachricht
prompt:
msg: Hallo Welt
- name: Mehrere Nachrichten
prompt:
msg:
- Hallo Welt
- Hallo Universum
Ausrichtung
Die
align
-Option funktioniert nicht zusammen mit derask
-Option.
Nachrichten können bei der Darstellung links (Standard), zentriert oder rechts ausgerichtet sein:
- name: Ausrichtungsnachrichten
msg:
- say: Linke Ausrichtung
align: left
- say: Zentrale Ausrichtung
align: center
- say: Rechte Ausrichtung
align: right
Verhindern von nachgestellten Zeilenumbrüchen
Die
newline
-Option funktioniert nicht zusammen mit derask
-Option.
Um zu verhindern, dass das Ansible Prompt Modul automatisch einen Zeilenumbruch am Ende einer Nachricht hinzufügt, setzen Sie einfach den optionalen newline
-Wert auf false
:
# Gibt "Beginn der Zeile...Mitte der Zeile...Ende der Zeile" ohne nachgestellten Zeilenumbruch aus.
- name: Keine Zeilenumbruchnachricht
prompt:
msg:
- say: "Beginn der Zeile..."
newline: false
- say: "Mitte der Zeile"
newline: false
- say: "...Ende der Zeile"
Fakten von Benutzereingaben sammeln
Die Stärke des Prompt-Plugins liegt in seiner Fähigkeit, Ansible-Fakten während der Ausführung eines Playbooks zu sammeln. Um Ihre Aufforderung in eine Frage zu verwandeln, geben Sie ein say
- und ein ask
-Set von Variablen für jede Frage an, die Sie stellen möchten.
Die say
-Variable enthält die Nachricht, die Sie präsentieren möchten, während die ask
-Variable die Ansible-Variable ist, die global aus der Benutzereingabe gesetzt wird:
- name: Einfache Frage
prompt:
msg:
say: "Wie lautet Ihr Vorname?"
ask: first_name
- debug:
var: first_name
Wie Sie sehen können, wird eine first_name
-Variable mit der Benutzereingabe während der Wiedergabe gesetzt.
Sie können optional mehrere Fragen in derselben Aufforderung stellen:
- name: Adressinformationen
prompt:
msg:
- say: "Straßenadresse:"
ask: address
- say: "Stadt:"
ask: city
- say: "Bundesland:"
ask: state
- say: "Postleitzahl:"
ask: zipcode
Derzeit werden alle Variablen nach Abschluss der Aufgabe erstellt. Beachten Sie, dass Variablen nicht verwendet werden können, bis die Aufgabe abgeschlossen ist, daher wird dies nicht funktionieren:
- name: Adressinformationen
prompt:
msg:
- say: "Vorname:"
ask: first_name
- say: "Hallo {{ first_name }}! Was ist Ihre Lieblingsfarbe?"
ask: color
Stattdessen sollten diese Fragen in zwei separate prompt
-Aufgaben aufgeteilt werden.
Häufig gestellte Fragen
Warum nicht einfach Ansible debug und/oder prompt_vars verwenden?
Während Ansible einige grundlegende Messaging- und Reporting-Funktionen bereitstellt, haben die integrierten Methoden debug
und prompt_vars
einige Nachteile. Insbesondere:
debug
ist nur für die Fehlersuche gedacht und gibt daher keine Ausgaben in einem präsentationsformatierten Format aus.prompt_vars
kann nur zu Beginn des Skripts verwendet werden, was die Optionen für Benutzer einschränkt, die Eingaben während der Wiedergabe von Aufgaben sammeln möchten.prompt_vars
hat eine begrenzte, wenn nicht gar keine, Unterstützung für bedingte Logik.
Mitwirken
Es gibt viele Möglichkeiten, zu diesem Projekt beizutragen! Wenn Sie eine Idee haben oder einen Fehler entdeckt haben, bitte einen Fehlerbericht öffnen, damit daran gearbeitet werden kann.
Wenn Sie interessiert sind, an dem Projekt durch Design oder Entwicklung mitzuarbeiten, lesen Sie bitte unsere Beitragsrichtlinien.
Tests
Eine Makefile
wird bereitgestellt, um bei der Prüfung, den Tests und der Erstellung von Abdeckungsberichten zu helfen. Abhängigkeiten werden während der Tests automatisch verwaltet:
make test # Führt Linting und Test-Suiten aus
make coverage # Führt Linting, Tests aus und generiert einen HTML-Abdeckungsbericht
Bitte beachten Sie, dass vollständige Tests bereitgestellt werden müssen, wenn Beiträge zu diesem Projekt geleistet werden.
Veröffentlichungsrichtlinie
Die Veröffentlichungen dieses Projekts folgen den Standards der Semantischen Versionierung in einem MAJOR.MINOR.PATCH
Versionsschema folgendem Format:
MAJOR
- geändert, wenn große, inkompatible Änderungen an der Anwendung vorgenommen werden,MINOR
- geändert, wenn Funktionen auf rückwärtskompatible Weise hinzugefügt werden undPATCH
- Patches zu bestehenden Funktionen, wie Dokumentation und Fehlerbehebungen.
Lizenz
Dieses Projekt steht unter der MIT-Lizenz.
Copyright 2017 Andrew Vaughan
Hiermit wird jedem, der eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, die Erlaubnis erteilt, mit der Software uneingeschränkt zu verfahren, einschließlich ohne Einschränkungen der Rechte, die Software zu verwenden, zu kopieren, zu ändern, zusammenzuführen, zu veröffentlichen, zu verteilen, Unterlizenzen zu erteilen und/oder Kopien der Software zu verkaufen, und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der oben stehende Copyright-Hinweis und dieser Erlaubnisschein müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE GARANTIE JEDER ART, AUSDRÜCKLICH ODER IMPLIZIT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR ANSPRUCH, SCHÄDEN ODER ANDERE HAFTUNGEN, OB IN EINER HANDLUNG AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, HAFTBAR, DIE AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN INTERAKTIONEN MIT DER SOFTWARE ENTSTEHEN.
Ansible role that provides functionality for messaging and prompting users for input during tasks.
ansible-galaxy install andrewvaughan.prompt