我想使用我的控制节点(CentOS)在我的远程窗口节点上运行run.bat文件。这可能吗?如果没有,还有其他办法吗?
看看这一节Windows支持
那么你要做的就是创建一个类似于这样的任务:
- name: run simple script
script: run.bat
将脚本(批处理文件)保存在控制服务器上。Ansible将脚本复制到远程主机,然后在那里执行它。参见下面的示例—假设run.bat
文件保存在控制服务器的/tmp
(不是最佳实践)目录下。
- name: execute batch
script: /tmp/run.bat
我使用Call,并且在您尝试从UNC路径运行它的情况下,我采取了进一步的步骤,然后您可能还需要成为privs。
请记住,如果您使用win_shell连接命令,我发现它们需要在同一行使用&&,我不能让它以其他方式工作。Python 3.11.2
- name: Run batch file
win_shell: |
pushd \UNC-pathscripts && 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路径运行它的情况下,我采取了进一步的步骤,然后我们使用成为privs。
请记住,如果您使用win_shell连接命令,我发现它们需要在同一行使用&&,我不能让它以其他方式工作。Python 3.11.2
- name: Run batch file
win_shell: |
pushd \UNC-pathLabosExternnomadconffiles && 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