在 AWS 实例上使用不同的参数执行脚本

在 AWS 实例上使用不同的参数执行脚本

我有一个接受多个参数的脚本,我需要在 AWS 上的多个实例上并行运行此脚本。例如,为了简单起见,如果我在 AWS 中有三个实例,我想运行以下命令:

On instance-a: script.sh a b
On instance-b: script.sh s t
On instance-c: script.sh y z

我将使用 AMI 生成实例,AMI 将运行时(MATLAB)和程序(使用运行时)作为映像的一部分安装。

我正在检查链接,我看到 Capistrano 被提及。这在我的例子中有用吗?还有其他可以探索的轻量级替代方案吗?顺便说一下,我需要从每个实例生成的返回状态和输出(CSV 文件)。

答案1

如果你只想要 3,那么这将起作用(版本 >= 20161222 才能--results my.csv起作用):

parallel --results my.csv ssh {1} script.sh {2} {3} ::: instance-a instance-b instance-c :::+ a s y :::+ b t z

但让我猜一下:您在名为的文件中列出了更多实例hosts.txt

instance-a
instance-b
instance-c

你不必关心哪个实例运行哪些作业 - 它们只是工作者。你有一个类似这样的 .tsv 文件input.tsv

a[tab]b
s[tab]t
y[tab]z

然后你可以运行:

parallel --slf hosts.txt --results my.csv -a input.tsv --colsep '\t' script.sh 

如果您的命令0成功返回,您甚至可以在廉价的现货市场服务器上运行:通过使用,如果一台服务器发生故障(即不返回),--retries 5您可以要求 GNU Parallel 在另一台服务器上重新执行该作业。0

相关内容