Wie erzwingt man in Ansible mit win_shell (Powershell) den Jobstatus auf „Fehlgeschlagen“?

Wie erzwingt man in Ansible mit win_shell (Powershell) den Jobstatus auf „Fehlgeschlagen“?

Ich bin neu bei Ansible. Ich habe ein Playbook erstellt, das PowerShell verwendet, um Ihr Passwort für Ihr Administratorkonto zurückzusetzen. Das Skript verfügt über eine Prüfung, die das Passwort nur zurücksetzt, WENN das Konto aktiviert ist. Wenn das Konto deaktiviert ist, wird eine write-hostMeldung ausgegeben, dass ein Ticket erstellt werden soll.

Das funktioniert alles einwandfrei, der Job endet jedoch mit einem grünen Status. Technisch gesehen ist das korrekt, da das gesamte Playbook korrekt ausgeführt wurde. Der Endbenutzer wird jedoch denken, dass das Kennwort zurückgesetzt wurde. (Ja, die Meldung besagt eindeutig, dass dies nicht der Fall war, aber ich weiß, wie Benutzer sind, sie lesen nicht und achten nur auf Farben.)

Meine Frage ist also,win_shell Wie kann ich die Farbe des Jobs von grün auf orange oder rot ändern??

Ich weiß, dass es mit möglich ist, ansible.windows.win_powershellaber wir haben dieses Modul nicht. Also muss es mit sein win_shell.

Ich hoffe, das ist eine einfache Frage. Vielen Dank.

Bearbeiten, Lösung:

Vielen Dank an Hendrik Pingel. Ich habe darauf geachtet, den folgenden Satz erst einzufügen, nachdem alle erforderlichen Änderungen vorgenommen wurden. Wenn das Skript dies also nicht ausspuckt, ist etwas schiefgelaufen und ich kann die Farbe bedenkenlos auf Rot ändern.

- name: Change flag to red if there was no success in the message output.
  debug:
    msg: "{{lookupResult.stdout_lines}}"
  failed_when: '"Password reset was a success" not in lookupResult.stdout'

S.

Antwort1

Die Fehlerbedingungen einer Aufgabe können kontrolliert werden mit demfehlgeschlagen_wannbedingt.

Wenn eine Aufgabe immer fehlschlagen sollte, können Sie Folgendes tun:

    - name: fail always
      ansible.builtin.debug:
        msg: "Failed"
      failed_when: always

Wenn der Fehlerzustand auf einer bestimmten Befehlsausgabe basieren soll, gehen Sie etwa wie folgt vor:

- name: Check if a file exists in temp and fail task if it does
  ansible.builtin.command: ls /tmp/this_should_not_be_here
  register: result
  failed_when: '"No such" not in result.stdout'

Antwort2

Beenden Sie Ihr Skript mit einem Fehlercode.

if ($account.disabled) {
    Write-Host "Account is disabled"
    Exit 1
}

verwandte Informationen