An experimental configuration management system inspired by ansible
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
base
cmd
lisp
net
package
procmgmt
release
scripts
test
upstart
vagrant-tachyon
.gitignore
.travis.yml
BUILTINS.md
LICENSE
README.md
Rakefile
Vagrantfile
async.go
builtin.go
builtin_test.go
command.go
config.go
download.go
environment.go
expand.go
future.go
main.go
path.go
playbook.go
playbook_test.go
reporter.go
runner.go
scope.go
ssh.go
tachyon.go
task.go
test.go
util.go
vars.go

README.md

tachyon

Build Status

Tachyon is an experimental configuration management tool inspired by ansible implemented in golang.

Ok.. why?

I find the best way to learn something is to try to implement it. I'm curious about ansible's model for configuration management and as a fun weekend project began I this project.

Is this usable?

If you need to run some yaml that executes commands via shell/command, sure! Otherwise no. I'll probably continue to play with it, adding more functionality and fleshing out some ideas I've got.

Oohh what ideas?

  • Exploit golang's single binary module to bootstrap machines and run plays remotely.
  • Use golang's concurrency to make management of large scale changes easy.
  • Use github.com/evanphx/ssh to do integrated ssh
  • Allow creation of modules via templated tasks

Is that a lisp directory I see?

It is! ansible uses python as it's implementation lang and thus also uses it as it's runtime eval language. Obviously I can't do that and I don't wish to runtime eval any golang code. Thus I have opted to embed a simple lisp intepreter (taken and modified from https://github.com/janne/go-lisp) to run code. For instance:

name: Tell everyone things are great
action: shell echo wooooo!
when: $(== everything "awesome")

What should I do with this?

Whatever you want. Play around, tell me what you think about it. Send PRs for crazy ass features!