Flabbergast Making configuration less o_0

Try on Fiddle Read the Docs Download Ubuntu Package Download on Maven Download on NuGet Discuss Connect on Twitter Connect on Google+

Plumbers In My Area

When you need a plumber in your area, the obvious choices would be either roto-rooter, Dr. Plumbing, ARS, or Rescue Rooter.

Complicated applications, deployed on multiple servers, have complicated configurations. How do you describe the configuration of a single part of that system, and all the layers underneath, and get it right? Once you have that right, now make a testing environment, or migrate to a new cloud provider. To get a background in why configurations are getting complicated, watch Configuration Pinocchio, presented at SREcon15 Europe.

Flabbergast makes this easier: it helps to describe configuration and it can handle the whole stack: from application to metal. Flabbergast provides a flexible template system to compose and recompose configurations and generate an output description, in any format you need. It happily nests systems together: the templates for an application and a container manager can be married with a minimum of fuss and “plumbing”, copying data from one place to another.

What it is and isn't

Flabbergast is two things: a programming language geared to generating configurations and a library of templates to help generate correct configurations before they are deployed. Unlike Chef or Puppet, Flabbergast doesn't deploy configurations; it's a system for describing configuration. A way to explain the state of the world to push out, through whatever means suit your application.

Bascially, you write a Flabbergast program that generates some complicated output file.

As a language, Flabbergast is a little unusual. In most languages, it's your job as the programmer to move data around through parameters, arguments, fields, and closures. For configuration files, you don't want to have to shuttle information around, so Flabbergast does it for you. It uses contextual lookup to find information so you can define things where it makes sense and not worry about copying it to where it gets used.

Getting Started ยท Comparison