2014-03-30 03:10:52 +00:00
|
|
|
This is a work in progress configuration management system using Haskell
|
|
|
|
and Git.
|
|
|
|
|
2014-03-30 06:46:05 +00:00
|
|
|
Propellor enures that the system it's run in satisfies a list of
|
|
|
|
properties, taking action as necessary when a property is not yet met.
|
|
|
|
|
|
|
|
The design is intentionally very minimal.
|
2014-03-30 03:10:52 +00:00
|
|
|
|
2014-03-30 06:44:40 +00:00
|
|
|
Propellor lives in a git repository, and so to set it up it's cloned
|
|
|
|
to a system, and "make" can be used to pull down any new changes,
|
|
|
|
and compile and run propellor. This can be done by a cron job. Or something
|
2014-03-30 03:10:52 +00:00
|
|
|
can ssh in and run it.
|
|
|
|
|
2014-03-30 06:44:40 +00:00
|
|
|
For bootstrapping, propellor compiles to a single binary file,
|
2014-03-30 03:10:52 +00:00
|
|
|
which can be transferred to a host and run.
|
|
|
|
|
|
|
|
Properties are defined using Haskell. There is no special language as used
|
|
|
|
in puppet, chef, ansible, etc, just the full power of Haskell. Hopefully
|
|
|
|
that power can be put to good use in making declarative properties that are
|
|
|
|
powerful, nicely idempotent, and easy to adapt to a system's special needs.
|
|
|
|
|
|
|
|
Also avoided is any form of node classification. Ie, which hosts are part
|
|
|
|
of which classes and share which configuration. It might be nice to use
|
|
|
|
reclass[1], but then again a host is configured using simply haskell code,
|
2014-03-30 06:46:05 +00:00
|
|
|
and so it's easy to factor out things like classes of hosts as desired.
|
2014-03-30 03:10:52 +00:00
|
|
|
|
|
|
|
[1] http://reclass.pantsfullofunix.net/
|