Execute script com argumento diferente em instâncias AWS

Execute script com argumento diferente em instâncias AWS

Eu tenho um script que aceita vários argumentos e preciso executá-lo em várias instâncias em paralelo na AWS. Por exemplo, para simplificar, se eu tiver três instâncias na AWS, gostaria de executar o seguinte:

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

Estarei gerando as instâncias usando uma AMI que terá o tempo de execução (MATLAB) e o programa (usando o tempo de execução) instalados como parte da imagem.

Eu estava checandoesselink e vi Capistrano mencionado. Isso funcionará no meu caso? Alguma outra alternativa leve que possa ser explorada? Só para mencionar que precisarei do status de retorno e da saída (arquivo CSV) gerados em cada instância.

Responder1

Se você quiser apenas 3, isso funcionará (versão >= 20161222 para --results my.csvfuncionar):

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

Mas deixe-me adivinhar: você tem muito mais instâncias listadas em um arquivo chamado hosts.txt:

instance-a
instance-b
instance-c

Você não se importa com qual instância executa quais trabalhos - eles são apenas trabalhadores. Você tem um arquivo .tsv como input.tsv:

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

Então você executaria:

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

Se o seu comando retornar 0com sucesso, você pode até mesmo executá-lo em servidores baratos do mercado spot: ao usá-lo, --retries 5você pode pedir ao GNU Parallel para refazer o trabalho em outro servidor se um servidor quebrar (ou seja, retornar not 0).

informação relacionada