我想在我的控制节点(CentOS)上运行远程 Windows 节点上存在的 run.bat 文件。这是否可能?如果不是,是否有其他替代方法?
将脚本(批处理文件)保存在控制服务器上。Ansible会将脚本复制到远程主机,然后在那里执行它。请参见下面的例子——假设run.bat
文件保存在您的控制服务器上 /tmp
目录中(这不是最佳实践)。
- name: execute batch
script: /tmp/run.bat
我使用Call,并且进一步采取了措施,以防您尝试从UNC路径运行它,那样的话您也可能需要相应的特权。
请注意,如果您正在使用win_shell连接命令,请确保它们在同一行上,并使用 && 连接,我发现其他方式无法使其工作。 Ans 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
- 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