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

Связанный контент