如何让Ansible在启动PowerShell脚本时返回“OK”(无更改)?

bjg7j2ky  于 2023-01-13  发布在  Shell
关注(0)|答案(1)|浏览(160)

通常,当Ansible使用win_command/win_shell/win_psexec启动PowerShell脚本时,只要它没有遇到错误,它就会返回changed,因为它当然不知道所有脚本都做了什么。
由于我们可以在PowerShell脚本中返回任何退出代码,是否有办法通过退出代码或其他方式通知Ansible不需要更改,以便Ansible返回OK状态?
还是无论发生什么都返回changed(假设没有失败)?

cnh2zyt3

cnh2zyt31#

  • 它将返回changed,因为它当然不知道所有脚本做了什么 *

对,因为这是为这种类型的模块定义的默认行为。
关于你的问题

  • 由于我们可以在PowerShell脚本中返回任何退出代码,是否有办法通过退出代码或其他方式通知Ansible不需要更改,以便Ansible返回OK状态?*

这已经是一个正确的想法了,也就是说,是的,这种行为是可能的。
除了已经给出的关于定义changed的注解之外,还需要定义失败,因为否则non-zero return code会导致失败。
行动手册最小示例

---
- hosts: localhost
  become: false
  gather_facts: false

  tasks:

  - name: Exec sh command
    shell:
      cmd: "echo ''; exit 254;"
    register: result
    failed_when: result.rc != 0 and result.rc != 254
    changed_when: result.rc != 254

  - name: Show result
    debug:
      msg: "{{ result }}"

将导致输出

TASK [Exec sh command] *****************

TASK [Show result] *********************
ok: [localhost] =>
  msg:
    changed: false
    cmd: echo ''; exit 254;
    delta: '0:00:00.012397'
    end: '2022-12-24 18:00:00.012397'
    failed: false
    failed_when_result: false
    msg: non-zero return code
    rc: 254
    start: '2022-12-24 18:00:00.000000'
    stderr: ''
    stderr_lines: []
    stdout: ''
    stdout_lines: []

类似的问答

相关问题