Выполнить скрипт с другим аргументом на экземплярах 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, который будет иметь среду выполнения (MATLAB) и программу (использующую среду выполнения), установленную как часть образа.

Я проверял эту ссылку и увидел упоминание о Капистрано. Будет ли это работать в моем случае? Любая другая легкая альтернатива, которая может быть исследована? Просто чтобы упомянуть, мне понадобятся возвращаемый статус и выходные данные (файл 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).

Другие вопросы по тегам