I am dealing with a distributed application which is going to mange a network of Linux-based servers spread among different places. Having the SSH credentials (as the most supported connection mechanism on these servers) we need to deploy our application seamlessly on these servers and run it there to become an new node on our network. Moreover we don't have and don't want super user rights. This is basically a requirement in a scientific environment to run simulations on a network of resources.

Is there any well known approach to such a problem?


Fabric can be used to run basic deployment commands (and configuration management tools such as Puppet or Chef) for a very nice SSH-based deployment process.

  • This is an open source project so I can't use Puppet or Chef, however Fabric sounds good. – Mehdi Sadeghi Sep 22 '14 at 14:05
  • Huh? Puppet and Chef are open source, aren't they? – l0b0 Sep 22 '14 at 15:18
  • Maybe my mistake, but the websites are not clear enough. Puppets shows me "Buy" option and Chef shows me plans to choose between, however there was a "manage yourself" in Chef website but I did not find the license information. – Mehdi Sadeghi Sep 22 '14 at 15:21
  • 1
    "Open source" and "free" are not the same thing... – l0b0 Sep 22 '14 at 15:33
  • 1
    They don't make it easy to find the FOSS version of Puppet, which is a shame as CentOS never exactly hurt RedHat sales. If its not already in your distro's repositories, then you can get it from PuppetLab's own. – gbjbaanb Sep 22 '14 at 16:14

If you don't need additional layer such as Fabric:

  • Copy files to the server using scp, including the script to run,

  • Run the script through ssh.

In both cases, make sure you don't store SSH password anywhere, but use a pair of private/public keys.

  • What I need is installing python virtualenv and proper libs which may need compiling (or I may use cross compiling) and then run the software. Do you think this can be done with scp and ssh only? – Mehdi Sadeghi Sep 22 '14 at 14:09
  • Totally. Write a bash script which does that, upload the script and launch it with ssh. – Arseni Mourzenko Sep 22 '14 at 14:46
  • 1
    @MehdiSadeghi: There's a Puppet module for virtualenv which works well. – l0b0 Sep 22 '14 at 18:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.