Skip to content

jes5199/poppet

Repository files navigation

At this point, the Ansible project (by Michael DeHaan) achieves most of my design goals for Poppet. Use that! https://github.com/ansible/ansible

Summary

THIS IS PRE-ALPHA CODE. NO ONE HAS EVER USED IT TO DO ANYTHING.

Poppet is to Puppet as Sinatra is to Rails. Poppet is a Configuration Management Microframework.

In Poppet, most things are small scripts that accept well-formed JSON on STDIN and output JSON on STDOUT, because Unix + Structure = Awesome.

Instructions

Client/Server

  1. run server.rb on your server # rack app, supplies upload/download access through HTTP
  2. cron coordinator.rb on your server # calculates policies for inventory
  3. cron announce.rb # uploads system information into inventory
  4. cron client.rb # downloads and applies policy

Standalone

  1. ruby system_facts.rb | ruby make_policy.rb | ruby apply.rb

Development

Please submit Pull Requests via Github, because that UI is pretty good actually.

Ideas/Goals

Vital

  1. TODO Propagate errors to the server and to logs
  2. STARTED use GPG
  3. TODO Wrapper scripts for common command lines

Sciency

  1. Figure out how to test all this stuff.
  2. Simplify object constuction by keeping metadata separate from objects
  3. Model imperative sections of policy
  4. Use other projects' implementations of complex system calls
  5. TODO A non-ruby DSL for writing policies
  6. TODO Transient resources
  7. TODO Optional resources
  8. TODO Multi-resource Imp API ("Install all these packages")
  9. TODO Cross-machine coordination
  10. TODO Farm out policy-making

Tedium

  1. TODO various other TODOs scattered around the source.
  2. TODO json-shape files for data types
  3. TODO Don't recreate existing policy files
  4. TODO Command line parsing (probably Trollop)
  5. TODO A second System->System filter to happen on the serverside before System->Policy
  6. TODO Unique filenames for timestamped files
  7. TODO Find more ways to sort files in public/
  8. TODO Model changelog entries as Structs
  9. TODO detect cycles in graphs
  10. TODO detect references to non-existent resources
  11. TODO nudged_by should work

About

A precious little server automation microframework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages