Code Monkey home page Code Monkey logo

tachyon's Introduction

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!

tachyon's People

Contributors

evanphx avatar pierrerambaud avatar maxim avatar

Stargazers

Ihor Antonov avatar bingooyong avatar Thomas Ussery avatar Stéphane ROBERT avatar  avatar iain wright avatar Thomas Lee avatar Nur Sarowar avatar Erik Kristensen avatar zw avatar Keith Mitchell avatar  avatar ChunFuWu avatar  avatar Evgenii Omelchenko avatar liuliu avatar Vikrant Sagar avatar Cyan Tarek avatar Tino S. aka "Nox" avatar Gaurav Kanoongo avatar ehocchen avatar imxyb avatar Parker Zhou avatar Li Jianqiang avatar Remko avatar Dominik Lekse avatar Scott Ivey avatar James Mills avatar  avatar ben6 avatar leoluk avatar Kamalesh Dhayal avatar Mehmet Ali Kıpçak avatar Karsten Horsmann avatar  avatar Sukhorukov Olexandr avatar 103.cloud avatar Jerry avatar Doru Carastan avatar Burhan Deniz Abdi avatar Justin Dennison avatar Gadelkareem avatar John Zeringue avatar  avatar Adam Miller avatar Mike Roth avatar  avatar Ambrose Chua avatar Lex Tang avatar Mark Hindess avatar canavar avatar Ahmad Wesson avatar Burl avatar Juri Hahn avatar Sebastian Webber avatar  avatar qinhao avatar Girish avatar Wesley Moore avatar 王吉彬 avatar Karim Radhouani avatar Chris Bednarski avatar Loric Brevet avatar Jay Zeschin avatar qhsong avatar Fayaz avatar see~see avatar Andy Kosela avatar  avatar ozakilsc avatar Maksim Soltan avatar lixyon avatar laeshiny avatar Esteban Echeverry avatar Song Liu avatar Ricardo Hernandez avatar Yongqiang Qu avatar Phillip Hagger avatar  avatar  avatar Or Elimelech avatar Timothy Appnel avatar Magicshui avatar Cédric Blondeau avatar Wade Zhang avatar Traun Leyden avatar Ruibin avatar Jonathan Niesen avatar Ilya Dmitrichenko avatar Taizeng Wu avatar Zhong Chen avatar Andrii Melekhovskiy avatar Paulo Pereira avatar Nedumaran Rajagopal avatar Xu Tao avatar Diogo Gomes avatar Adrián López avatar Daniel Blendea avatar John D'Agostino avatar Eric Ripa avatar

Watchers

 avatar Kevin Clark avatar Ravil Bayramgalin avatar Erin Ptacek avatar Bao Nguyen avatar Richard Bowden avatar Björn Pettersson avatar  avatar mingfeng.zhang avatar Sam Kottler avatar Akira Chiku avatar Evgeny avatar James Cloos avatar Alex Chistyakov avatar Liel Ran avatar Zsolt Keseru avatar Richard J avatar Michael Anthony avatar Alexander Feller avatar  avatar ACoder avatar Nick Parry avatar chinglin avatar ando-masaki avatar Tuts avatar  avatar  avatar  avatar

tachyon's Issues

want to join you

I like tachyon!! I am a golang developer, can I join your organization?

More code comments, please!

Hey there, I'd be interested in using code from this package or contributing to it. However, a lot of source files have zero comments or sometimes just one. Would the author mind filling some in? Thank you!

Failing travis build

Hey there, your Travis build is failing and it looks like a configuration issue (rather than a test failure). Might want to check it out!

Question: why no user-side golang code for the tasks / playbooks?

Hello there.
You project seems to be the only CMS written in Go at the moment. So it would be nice to hear some elaboration on this bit of your README file:

don't wish to runtime eval any golang code

As being something important / worthwhile to comment about in terms of feasibility, some technical analysis.

The thing is that I do find ansible can be very slow... and it's based on python. It would be great to keep the successful ideas of ansible while improving the performance / execution time. Maybe you do already achieve right now quite a good performance with your stated Lisp interpreter. Unfortunately I can't cope with lisp myself. And I suspect it's also a view shared by many others. Tried lisp with emacs and just hated it. Too many ((())) brackets.

So my question really is: what would a GO-based CMS actually look like if it were like Ansible?

We would need the host control machine to have golang (in the same way that ansible requires python as a dependancy). In order to compile user code fragments (modules, user tasks, playbooks) into runtime executable(s). Perhaps cached. Then to run them either locally on the control machine (to exec sequences of SSH cmds / copy over shell scripts) or else to transfer them onto the target machine to be executed directly there. Depending if the target machine's architecture can be compiled or not.

It is feasible? Well I don't know that. Would it work? Don't know. But I think that using the popular implementation language GO throughout may help to gain more interest / community momentum from outside contributors.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.