I wrote my own service and I'd like to deploy it via Juju/Puppet scripts. Main goal is to automate whole process of deploying it and I've found out Juju/Puppet should be the best.

  1. Do I have to prepare package (deb/rpm) or can it be downloaded from remote repository (it's python service)?
  2. How should I manage configuration files for this service? Each node has slightly different configuration file and I'd like to know what are approaches to solve this automatically. Is there any common configuration file format which could be used or maybe I could select which lines should be included in configuration on which node or specify "hostname=hostname -s" and it will be executed by Juju/Puppet and overwrite. Any common solutions?

I'm interested how it is done in production - in datacenters, testing environments etc.. How administrators deal with all those configuration files. How are they automating their work. Recently I had to configure many different services (some of them was installed just from sources, because there was no packages for my distribution - I'm using Ubuntu 12.04) on few different servers. I had to create testing environment and I was really bored when I had to repeat each configuration on each node. I'm not an expert at bash scripting to automate whole process in single or few bash scripts, so maybe tools like Juju/Puppet could be helpful - especially I'm not fan of bash :) and I'd like to write as little as it's possible in bash.

I've never worked at datacenter, so I'd like to know how do professionals do it.


Juju has been primarily targeted towards ec2/rackspace and other cloud based deployments. You can probably use it in a traditional data center deployment as well.

If you intend to use Juju in a traditional datacenter or Colo environment, then you may find that Juju and puppet do mostly the same thing. Meaning, you are better off using one or the other, not both.

As for your 2 questions:

  1. I am not sure what specific bits you intend to package as rpms/debs. You can use puppet to install custom packages that you create, if thats what you mean.
  2. In the puppet world, one way to deal with differing configuration files, is to use puppet templates. Templates and puppet manifest code can get their information from backend data sources, using the ENC features, or add-ons like Hiera.

If you want to deploy your service on ec2 or other services, both puppet and juju will work fine.

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.