我正在运行的环境要求在复制 Web 应用程序文件之前停止服务器。所以我想使用织物执行以下一组任务:
- 停止服务器
- 复制新文件
- 重启服务器
如果我想部署到 20 台主机,我会做这样的事情......
def deploy:
run("server stop")
run("rsync ...")
run("server start")
...将有不必要的停机时间,因为首先关闭每台服务器,然后将文件同步到所有服务器,最后重新启动所有服务器。这源于“运行”命令在每个主机上执行的事实。
有没有一种优雅的方法可以在每个主机上运行多个命令?这是我正在寻找的天真的刺:
for host in env.hosts
env.host = host
run("server stop")
run("rsync ...")
run("server start")
我确实看到有能力让“运行”命令并行发生,但这并不是我想要的。