superseb / automaton

automaton is a lightweight external node classifier for puppet that supports multiple data backends. New backend storage mechanisms can be easily written for automaton. It has a simple command line interface, as well as an optional REST interface. automaton is written in ruby

Home Page:http://shellfu.github.io/automaton/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

~$ automaton

Code Climate


~$ what is automaton

automaton is a lightweight external node classifier for puppet that supports multiple data backends. New backend storage mechanisms can be easily written for automaton. It has a simple command line interface, as well as an optional REST interface. automaton is written in ruby, and authored by shellfu, just another unix admin out there.

~$ why I wrote automaton

At my last gig we used puppet, and had a fairly large deployment. Large enough that a lot of different departments were asking for data. “What modules are on machineA vs machineB?”, “What parameters are applied to machineB? I need to overwrite them can I?”

We also started to store machine metadata like deploy time, undeploytime, availability zone/physical datacenter, network so on and so fourth. This data was then plugged into other custom tools, and at the time none of the current ENC’s could provide this for me. I was having to write scripts to serialize the data from those ENC’s into something our developers and management could consume. Those scripts evolved into automaton.

One of the main goals of automaton was to ensure it was robust enough to plug into other tools such as deployment dashboards. At the same time it can also be used in a more lightweight fashion with just the command line and flat file support.

I wanted to pick and choose how and where I wanted my node data consumed and manipulated, and automaton solved this for me. If you like it great! Please shoot me a line with comments or suggestions. I hope I can help make your life a little bit easier.

~$ features

  • rest interface
  • command-line interface
  • multi-node inheritance
  • parameterized classes
  • node fact storage via puppet's inventory service
  • facter fact interpolation
  • easy configuration via yaml
  • db or flat file storage
    • mongodb
    • yaml
    • json

~$ roadmap

  • expand ability to modify hiera data (limited to hiera, and automaton sharing data dirs right now)
    • this is experimental, and ill push upstream if people show interest.
    • it takes the nested hash that is generated, and flattens it, appending scope on the keys. at that point hiera can lookup the data.
    • my main goal however is to expand this to modify any hiera flat files, but for now is limited to automaton's data format. that way it can be used as a tool to modify heira data with cli or rest interface. again I need to see how much interest there is for this.
  • a group system. cli,rest (it exists but isnt very apparent, and needs fleshing out)
  • configurable metadata storage (to be a bolt on/plugin)
  • documentation on writing a plugin
  • auditing (maybe things like ticket number or something. will think on this)

~$ documentation

~$ contributing

if you wish to contribute to automaton just send a pull request over.

About

automaton is a lightweight external node classifier for puppet that supports multiple data backends. New backend storage mechanisms can be easily written for automaton. It has a simple command line interface, as well as an optional REST interface. automaton is written in ruby

http://shellfu.github.io/automaton/