在Windows上使用Ansible运行批处理文件。

6
我想在我的控制节点(CentOS)上运行远程 Windows 节点上存在的 run.bat 文件。这是否可能?如果不是,是否有其他替代方法?
4个回答

9
请看这个章节 Windows Support 所以你需要创建一个类似于以下的任务:
- name: run simple script
  script: run.bat

1
那个链接已经失效了! - Chris F

0

将脚本(批处理文件)保存在控制服务器上。Ansible会将脚本复制到远程主机,然后在那里执行它。请参见下面的例子——假设run.bat文件保存在您的控制服务器上 /tmp目录中(这不是最佳实践)。

- name: execute batch
  script: /tmp/run.bat

0

我使用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

0
我使用Call,并且为了防止您尝试从UNC路径运行它,我进一步使用了Become特权。
请记住,如果您正在使用win_shell连接命令,我发现它们需要使用“&&”放在同一行上,否则无法正常工作。 Ans 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接