Execute script com argumentos diferentes em instâncias do AWS

1

Eu tenho um script que aceita vários argumentos e preciso executar esse script 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

Eu gerarei 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 checando este link e vi Capistrano mencionado. Isso funcionará no meu caso? Alguma outra alternativa leve que possa ser explorada? Só para mencionar, eu vou precisar do status de retorno e saída (arquivo CSV) gerados a partir de cada instância.

    
por Technext 12.12.2017 / 08:06

1 resposta

1

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

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 muitas 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 tarefas - elas são apenas funcionários. 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 devolver 0 no sucesso, você pode até rodar em servidores baratos do mercado spot: Usando --retries 5 , você pode pedir ao GNU Parallel para refazer o trabalho em outro servidor se um servidor quebrar (isto é, retorna não 0 ).

    
por 12.12.2017 / 14:10