summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorJoey Hess2014-03-29 23:10:52 -0400
committerJoey Hess2014-03-29 23:16:43 -0400
commitd9af8bac5eb7836a3c90e37e870fd73d30b841fd (patch)
tree40443efd384415172cf393571fe3f1651ea57423 /README
initial check-in
too young to have a name
Diffstat (limited to 'README')
-rw-r--r--README26
1 files changed, 26 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 00000000..66b2f3d0
--- /dev/null
+++ b/README
@@ -0,0 +1,26 @@
+This is a work in progress configuration management system using Haskell
+and Git.
+
+The design is intentionally very bare bones: A git repository holds the
+source to a program that ensures that the system meets a set of properties,
+taking action as necessary when a property is not yet met.
+
+Once set up, a system will have this git repository cloned to it, and
+the program will be built and run periodically by a cron job. Or something
+can ssh in and run it.
+
+For bootstrapping, the program compiles to a single binary file,
+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,
+and it should be easy to factor out things like classes of hosts in an
+ad-hoc fashion.
+
+[1] http://reclass.pantsfullofunix.net/