Ansible将Windows主机PS脚本输出保存到本地报错求助
解决Ansible将Windows主机stdout保存到控制节点时的连接拒绝问题
错误原因
报错里的Connection refused指向localhost的5986端口,本质是你的Playbook默认采用Windows的WinRM连接配置,当执行delegate_to: localhost时,Ansible错误地用WinRM协议去连接控制节点(通常是Linux系统),但控制节点没有运行WinRM服务,导致连接失败。
解决方案
在执行本地任务时,强制指定使用local连接方式,避免Ansible沿用WinRM配置。
修改后的Playbook示例(delegate_to写法)
--- - name: Check Antivirus software hosts: all become: false gather_facts: no tasks: - name: Get AV details win_shell: | echo "script printing data on stdout" register: result - name: Save response to control node copy: content: '{{ result.stdout }}' dest: '{{ response_file }}' delegate_to: localhost vars: ansible_connection: local
另一种写法(local_action)
--- - name: Check Antivirus software hosts: all become: false gather_facts: no tasks: - name: Get AV details win_shell: | echo "script printing data on stdout" register: result - name: Save response to control node local_action: module: copy content: '{{ result.stdout }}' dest: '{{ response_file }}' vars: ansible_connection: local
注意事项
- 确保
response_file变量已正确定义,可通过命令行参数传递:ansible-playbook your_playbook.yml -e "response_file=/path/to/save/output.txt" - 如果控制节点本身是Windows系统,无需此配置;但多数场景下控制节点为Linux,必须指定
ansible_connection: local
内容的提问来源于stack exchange,提问作者Amarjit Singh
相关产品推荐
相关产品推荐

