title: Deploying and executing programs on distributed remote machines
body: <p>I am developing a distributed program that will run on Amazon EC2 machines.</p>
  
  <p>Ideally I would develop on my local machine, trigger a script to deploy the source on the remote machines (<em>All Linux machines on which I have ssh access</em>), trigger a compile command on each of the remote machines and then run the program on each instance while having control over the running programs (<em>being able to suspend them</em>).</p>
  
  <p>I am wondering if there exist already any tools for such a task (except using MPI, but this is for another question), and if not, what best practices should I follow.</p>