Ansibleでwin_shell(Powershell)を使用してジョブステータスを強制的に失敗にする方法

Ansibleでwin_shell(Powershell)を使用してジョブステータスを強制的に失敗にする方法

私は Ansible を初めて使用します。PowerShell を使用して管理者アカウントのパスワードをリセットするプレイブックを作成しました。スクリプトには、アカウントが有効になっている場合にのみパスワードをリセットするチェックがあります。アカウントが無効になっている場合は、write-hostチケットを作成する必要があるというメッセージが表示されます。

これはすべて正常に動作しますが、ジョブは緑のステータスで終了します。技術的には、プレイブック全体が正しく実行されたため、これは正しいです。しかし、エンド ユーザーは、パスワードがリセットされたと考えます。(はい、メッセージにはリセットされていないことが明確に示されていますが、ユーザーの性質はわかっています。ユーザーは読まず、色だけを見ます)。

私の質問はwin_shell ジョブの色を緑からオレンジまたは赤に変更するにはどうすればよいですか?

で可能であることはわかっていますansible.windows.win_powershellが、そのモジュールはありません。 そのため、 を使用する必要がありますwin_shell

これは簡単なお願いだと思います。よろしくお願いします。

編集、解決策:

下記の Hendrik Pingel に感謝します。必要な変更がすべて完了した後でのみ、以下のフレーズを含めるようにしました。したがって、スクリプトがこれを吐き出さない限り、何か問題が発生したわけではなく、安全に色を赤に変更できます。

- 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.

答え1

タスクの失敗条件は、失敗したとき条件付き。

タスクが常に失敗する場合は、次の操作を実行するだけで済みます。

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

失敗条件がコマンドの特定の出力に基づく必要がある場合は、次のようにします。

- 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'

答え2

エラー コードでスクリプトを終了します。

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

関連情報