我想使用我的控制节点 (CentOS) 运行远程 Windows 节点上的 run.bat 文件。是否可以?如果没有的话有什么替代方法吗?
将脚本(批处理文件)保存在控制服务器上。 Ansible 将脚本复制到远程主机,然后在那里执行。请参阅下面的示例 - 假设
run.bat
文件保存在控制服务器上的 /tmp
(不是最佳实践)目录中。
- name: execute batch
script: /tmp/run.bat
我使用 Call,并且我更进一步,以防您尝试从 UNC 路径运行它,那么您可能还需要成为特权。
请记住,如果您使用 win_shell 连接命令,我发现它们需要使用 && 位于同一行,我无法让它以其他方式工作。 答 2.14.2 Python 3.11.2
- name: Run batch file
win_shell: |
pushd \\UNC-path\scripts && Call "run.bat"
args:
executable: cmd
vars:
ansible_become: yes
ansible_runas_user: "{{ win_service_user }}"
ansible_become_user: "{{ win_service_user }}"
ansible_become_password: "{{ win_service_pass }}"
register: res_run_batch
- debug:
var: res_run_batch
我使用 Call,并且我更进一步,以防您尝试从 UNC 路径运行它,然后我们使用成为特权。
请记住,如果您使用 win_shell 连接命令,我发现它们需要使用 && 位于同一行,我无法让它以其他方式工作。 答 2.14.2 Python 3.11.2
- name: Run batch file
win_shell: |
pushd \\UNC-path\Labos\Extern\nomadconffiles && Call "run.bat"
args:
executable: cmd
vars:
ansible_become: yes
ansible_runas_user: "{{ win_user }}"
ansible_become_user: "{{ win_user }}"
ansible_become_password: "{{ win_pass }}"
register: res_run_batch
- debug:
var: res_run_batch