BundleWrap logo

Config management with Python

Easy. Minimalistic. Decentralized.

Decentralized: There is no server. Just your laptop and your army of nodes.

Quick and easy to get started. You don't even need to know Python.

Lightweight: Even managing just a single machine won't feel like overkill.

Push configuration directly using SSH. No agent required.

Free as in bird.
100% Free Software.
No Enterprise Edition.

Pythonic and hackable.
Write hooks, custom items or use it just as a library.

By allowing for easy and low-overhead config management, BundleWrap fills the gap between complex deployments using Chef or Puppet and old school system administration over SSH.

While most other config management systems rely on a client-server architecture, BundleWrap works off a repository cloned to your local machine.

It then automates the process of SSHing into your servers and making sure everything is configured the way it's supposed to be. You won't have to install anything on managed servers.

BundleWrap is Free Software licensed under the GNU General Public License.

  What is config management?

When we talk about config management, we're talking about using a piece of software to manage the state of your servers. It will create files, install software and start services.

Using a config management system has many advantages:

  • Versioning: Use an SCM tool like git to keep track of changes to your configuration.
  • Uniformity: Now it's easy to keep similar machines in sync and eliminate configuration drift.
  • Repeatability: Need another five web servers? You just have to configure them once.

bw apply -i output

This example shows the output of bw apply -i tardis.

BundleWrap uses color and non-ascii characters to format its output nicely. As you can see, interactive mode will show you what would be done and gives you an opportunity to decline a destructive change.

For non-interactive use, BundleWrap features a more grep-able output. If an error (e.g. an unreachable node) is encountered, you will get a summary of all errors at the very end, so you don't miss anything important scrolling by.