En ansible, con win_shell (Powershell), cómo forzar que el estado del trabajo falle

En ansible, con win_shell (Powershell), cómo forzar que el estado del trabajo falle

Soy nuevo en Ansible. Creé un libro de estrategias que usa PowerShell para restablecer la contraseña de su cuenta de administrador. El script tiene una verificación que solo restablece la contraseña SI la cuenta está habilitada. Cuando la cuenta está deshabilitada, aparece un write-hostmensaje que dice que deberían crear un ticket.

Todo esto funciona bien, sin embargo, el trabajo finaliza con un estado verde. Técnicamente, esto es correcto porque todo el libro de jugadas se ejecutó correctamente. Pero el usuario final pensará que se restableció la contraseña. (Sí, el mensaje dice claramente que no, pero sé cómo son los usuarios, no leen y solo miran los colores).

Entonces mi pregunta es conwin_shell ¿Cómo puedo cambiar el color del trabajo de verde a naranja o rojo??

Sé que es posible ansible.windows.win_powershellpero no tenemos ese módulo. Entonces tiene que ser con win_shell.

Espero que esta sea una pregunta fácil. Gracias por su amabilidad.

Editar, solución:

Gracias a Hendrik Pingel a continuación. Me aseguré de incluir solo la frase a continuación después de realizar todos los cambios necesarios. Entonces, a menos que el guión diga esto, algo salió mal y puedo cambiar el color a rojo con seguridad.

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

Respuesta1

Las condiciones de falla de una tarea se pueden controlar con elfallido_cuandocondicional.

Si una tarea siempre falla, es posible hacer simplemente:

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

Si la condición de falla debe basarse en una salida específica del comando, haga algo como esto:

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

Respuesta2

Salga de su secuencia de comandos con un código de error.

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

información relacionada