basic idea:
- rsync + shell scripts + git. ... and I didn't even need rsync!
Puppet exists. Chef exists. CFEngine exists. Slaughter exists. However: I want to depend on nothing but git. I want to decentralise the "master". I want my scripts to be standalone.
Install and run
git clone git://github.com/comotion/gone.git && cd gone && ./gone apply
Works by having several packages that can be applied to a system.
Each package contains atleast a ./apply
script or some files to
sync. To make life easier each package is contained within a
catalog, by default only the modules
catalog is distributed
with gone. You can add any catalog you want, typically you will
have one catalog containing host specific configuration or roles.
Install a base system and some host specific configurations:
./apply
--------------------------------------------------------------------
#!/bin/sh
# All the files you need to sync is in `modules/base` and host
# specifics are in `host/<hostnane>`. You can run ./apply to run the
applicances.
# Catalogs is read by ./gone script
./gone apply ${@:-modules/base host/$(hostname)}
Any appliance can be one of 1) a script, 2) a folder containing any
one of ./files/
or ./apply
. It can be structured any way you like.
Idempotence. "do $foo only when $bar got updated" libs for: package installation on any distro service initscript installation checking configuration .. might make it easier to write scripts, but scripts will no longer stand alone!