Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

My servers exist in an environment without outside network connectivity (this is a requirement), so when I deploy updates all packages, binaries, config files, etc. must be included on the delivered media. And of course I want some sort of configuration management so I can tell what has and hasn't been installed.

So I was wondering if people had experience with chef, puppet, or another configuration management type tool for dealing with this type of environment. Worst case I deploy my updates as an RPM.


My setup has both Linux servers and Windows servers.

share|improve this question
I'm guessing this is Linux but we shouldn't have to guess. – John Gardeniers Nov 3 '10 at 21:03

I've personally used Puppet and cfEngine are have found both to be good tools for this kind of task and I believe them to currently be the major players in the field. Puppet requires a little more care when you start trying to scale it but has a nicer syntax, cfEngine scales well but it can take a bit more time to learn the voodoo. If the no outside network connectivity includes any other servers you can control, both are capable of caching their catalog/configuration in the case they can't reach a master server, being their own master server, or of running only on demand, so they should both handle the no-network requirement. If it's okay for them to reach an internally managed server, this is definitely not a problem.

A guy I work with swears by bcfg2, but I haven't done any work with it. We're currently using Puppet at my place of work, for whatever that's worth.

Each has it's strengths and weaknesses and your choice should largely depend on any other requirements you might have. You could take a look here for a basic run-down of the more common and more obscure options you have.

share|improve this answer

I've been playing with disconnected Puppet recently for remote environments where I can't have a master server. In particular, this article has been helpful to me and it's probably worth a look for you if you decide to go the Puppet route.

You can set up a normal Puppet structure under /etc/puppet and then run puppet manually. So far I haven't figured out how good the logging and reporting would be without a master.

This has been my best friend during development/testing:

puppet -d -v --modulepath=/etc/puppet/modules /etc/puppet/manifests/site.pp
share|improve this answer

Salt allows you to provide alternate locations for your packages.

    - sources:
      - foo: salt://rpms/foo.rpm
      - bar:
      - baz:
      - qux: /minion/path/to/qux.rpm

In this example these packages will be installed from the indicated location:

  • foo will be installed from the rpm on the Salt file server
  • bar will be installed from an http location
  • baz will be installed from an ftp location
  • qux will be installed from the local file system
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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