An experimental configuration management system inspired by ansible
Go Other
Switch branches/tags
Nothing to show
Clone or download
Latest commit 0da4f38 Sep 22, 2015
Permalink
Failed to load latest commit information.
base Add sample gem module to show yaml modules May 22, 2014
cmd Include procmgmt modules Apr 13, 2014
lisp Fix aux tests Mar 4, 2014
net Remove str from Command.Run(), require using parsed args Mar 19, 2014
package Report the package name Mar 21, 2014
procmgmt Expose the ability to set ENV vars May 22, 2014
release Add release script May 22, 2014
scripts Add scripts Mar 20, 2014
test Add support for referencing a role's specific task file via role::tasks Mar 21, 2014
upstart Deal with os/user not working when cross-compiling May 22, 2014
vagrant-tachyon Use tachyon to provision Vagrant Apr 12, 2014
.gitignore Add module for interfacing with Upstart Apr 13, 2014
.travis.yml Adjust gopath Sep 21, 2015
BUILTINS.md Start the apt module Feb 27, 2014
LICENSE Fix year and name Jun 6, 2014
README.md Dead link in README file Jan 5, 2015
Rakefile Make test:package work with go installations which aren't in /usr/bin Aug 26, 2014
Vagrantfile Use tachyon to provision Vagrant Apr 12, 2014
async.go Move all printing into reporter Mar 2, 2014
builtin.go Fixup perms even if the files match Mar 21, 2014
builtin_test.go Refactor paths into common interface Mar 5, 2014
command.go Add module for interfacing with Upstart Apr 13, 2014
config.go Add fix command/shell output, add RunCapture Mar 2, 2014
download.go Add ability to only download a file if missing Mar 20, 2014
environment.go Add a json reporter to preserve formating across remote sessions Mar 18, 2014
expand.go map items, explicit ssh persistant ssh Mar 16, 2014
future.go Add timing and file indicators to Task Mar 3, 2014
main.go Add install option May 22, 2014
path.go Add support for module, late expanded tasks Mar 10, 2014
playbook.go Add support for referencing a role's specific task file via role::tasks Mar 21, 2014
playbook_test.go Add support for referencing a role's specific task file via role::tasks Mar 21, 2014
reporter.go Fix result formatting Mar 21, 2014
runner.go Add module for interfacing with Upstart Apr 13, 2014
scope.go Add inlineMap/Vars, let a Command implement custom arg parsing Mar 19, 2014
ssh.go Add support for vagrant targets Mar 19, 2014
tachyon.go Add install option May 22, 2014
task.go map items, explicit ssh persistant ssh Mar 16, 2014
test.go Add s3 module Mar 14, 2014
util.go goyaml moved their repo and it now only goes by yaml Apr 9, 2014
vars.go map items, explicit ssh persistant ssh Mar 16, 2014

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!