You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Ansible(临时命令或剧本)执行含本地Python脚本的mpiexec命令

解决Ansible执行本地MPI Python脚本的问题

问题分析

你之前用script模块指定executable='mpiexec -host ... python3'的方式存在逻辑错误——script模块的executable参数仅用于指定执行脚本的解释器(比如bash、python),不能用来传递MPI启动命令。这种错误用法会导致SSH会话被MPI进程异常占用,最终超时断开。

正确实现步骤

1. 复制本地MPI脚本到远程共享目录

先用copy模块把本地的hello_mpi.py传到远程master节点的NFS共享目录/home/pi/cloud,确保所有MPI节点都能访问该脚本:

ansible master -m copy -a "src=./hello_mpi.py dest=/home/pi/cloud/hello_mpi.py mode=0755"

2. 用Shell模块执行MPI启动命令

脚本复制完成后,直接在远程master节点通过shell模块启动MPI任务:

ansible master -m shell -a "cd /home/pi/cloud && mpiexec -host master,node1,node2,node3 python3 hello_mpi.py"

3. 优化:避免SSH会话超时(可选)

如果MPI任务执行时间较长,容易触发SSH超时断开,可以在Ansible配置文件(ansible.cfg)中添加以下配置延长超时时间:

[ssh_connection]
ssh_args = -o ServerAliveInterval=30 -o ServerAliveCountMax=10
timeout = 600

原方法失效的原因

script模块的工作逻辑是:将本地脚本上传到远程临时目录,再用指定的解释器执行脚本。你把executable设为mpiexec -host ... python3,相当于让远程系统用整串MPI命令作为"解释器"去执行脚本,完全违背了模块的设计逻辑,最终导致SSH进程被异常占用并断开连接。

内容的提问来源于stack exchange,提问作者Coddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:38:13