Ansible이 PowerShell 스크립트를 시작할 때 Ansible이 "ok"(변경된 사항 없음)를 반환하도록 하는 방법은 무엇입니까?

Ansible이 PowerShell 스크립트를 시작할 때 Ansible이 "ok"(변경된 사항 없음)를 반환하도록 하는 방법은 무엇입니까?

win_command일반적으로 Ansible이 / win_shell/ 를 사용하여 PowerShell 스크립트를 시작할 때 win_psexec오류가 발생하지 않는 한 "변경됨"을 반환합니다. 물론 모든 스크립트가 무엇을 했는지 알 수 없기 때문입니다.

PowerShell 스크립트에서 모든 종료 코드를 반환할 수 있으므로 종료 코드 등을 통해 Ansible이 "ok" 상태를 반환하도록 필요한 변경 사항이 없음을 Ansible에 알리는 방법이 있습니까? 아니면 무슨 일이 있어도 항상 "변경됨"을 반환합니까(실패가 없다고 가정)?

답변1

찾은 것 같아요. 그만큼win_powershell모듈은 $AnsiblePowerShell 변수에 액세스하여 컨트롤러에 반환되는 정보를 수정할 수 있습니다.

로부터win_powershell선적 서류 비치:

  • $Ansible.Result컨트롤러에 그대로 반환되는 값입니다.
  • $Ansible.Diffansible.windows 1.12.0 릴리스에 추가되었으며 Ansible에서 해석할 수 있는 diff 결과로 설정되는 사전입니다.
  • $Ansible.Changed모듈이 변경되었는지 여부를 반영하기 위해 true 또는 false로 설정할 수 있습니다. 기본적으로 이는 true로 설정됩니다.
  • $Ansible.Failed스크립트가 오류를 컨트롤러에 다시 반환하려는 경우 true로 설정할 수 있습니다.
  • $Ansible.Tmpdir모듈이 완료된 후 정리되는 스크래치 위치로 사용할 임시 디렉토리의 경로입니다.
  • $Ansible.Verbosity이 플레이에 대한 Ansible의 자세한 수준을 보여줍니다. 스크립트가 자세한 정도에 따라 VerbosePreference/DebugPreference를 설정할 수 있도록 허용합니다. 1.9.0에 추가되었습니다.

답변2

간단히 말해서 의사 코드 예제로서 0아무것도 변경되지 않은 경우, 4변경된 사항이 있는 경우 및 문제가 발생한 경우 다른 코드를 사용하여 종료한다고 상상할 수 있는 rc 변형 시나리오를 기반으로 합니다.

- name: some shell task
  ansible.windows.win_command: my_command
  register: my_command
  failed_when: my_command.rc | int not in [0,4]
  changed_when: my_command.rc | int == 4

자세한 내용은 다음을 참조하세요.플레이북의 오류 처리

엄격하게 정보를 제공하고 아무것도 변경하지 않는 명령의 경우 changed_when: false완벽하게 허용됩니다.

관련 정보