Ejecutar script con argumento diferente en instancias de AWS

Ejecutar script con argumento diferente en instancias de AWS

Tengo un script que toma varios argumentos y necesito ejecutar este script en varias instancias en paralelo en AWS. Por ejemplo, para simplificar, si tengo tres instancias en AWS, me gustaría ejecutar lo siguiente:

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

Generaré las instancias usando una AMI que tendrá el tiempo de ejecución (MATLAB) y el programa (usando el tiempo de ejecución) instalados como parte de la imagen.

Estaba revisandoesteenlace y vi a Capistrano mencionado. ¿Funcionará eso en mi caso? ¿Alguna otra alternativa ligera que pueda explorarse? Solo para mencionar, necesitaré el estado de devolución y el resultado (archivo CSV) generado a partir de cada instancia.

Respuesta1

Si solo quieres 3, esto funcionará (versión >= 20161222 para --results my.csvque funcione):

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

Pero déjame adivinar: tienes muchas más instancias enumeradas en un archivo llamado hosts.txt:

instance-a
instance-b
instance-c

No le importa qué instancia ejecuta qué trabajos: son solo trabajadores. Tienes un archivo .tsv como input.tsv:

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

Entonces ejecutarías:

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

Si su comando tiene 0éxito, incluso puede ejecutarlo en servidores baratos del mercado spot: al usarlo, --retries 5puede pedirle a GNU Parallel que vuelva a hacer el trabajo en otro servidor si un servidor falla (es decir, no devuelve 0).

información relacionada