andrewvaughan.prompt

Aufforderung

Version Lizenz Build-Status Abdeckung

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 der ask-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 der ask-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 und
  • PATCH - 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.
Über das Projekt

Ansible role that provides functionality for messaging and prompting users for input during tasks.

Installieren
ansible-galaxy install andrewvaughan.prompt
Lizenz
mit
Downloads
4.1k
Besitzer
Software Engineer, CTO, $8BN revenue in eCommerce and SaaS under my belt and growing.