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'

에스.

답변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
}

관련 정보