You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Sean Johnson 7ba210c352 0.1: yaml mutator and rename fact commands 6 years ago
calvin 0.1: yaml mutator and rename fact commands 6 years ago
config-test 0.1: Added 'inline' template example 6 years ago
.drone.yml 0.1: Initial commit. 6 years ago
.gitignore 0.1: Updated requirements to include netifaces from source, addresses facts, fact command stub 6 years ago
README.md 0.1: Updates roadmap. 6 years ago
UNLICENSE 0.1: Initial commit. 6 years ago
requirements.txt 0.1: Updated requirements to include netifaces from source, addresses facts, fact command stub 6 years ago
setup.cfg 0.1: Initial commit. 6 years ago
setup.py 0.1: Naming conflicts for imports, set up console entry point in setup. 6 years ago

README.md

calvin - a configuration tool.

calvin is a relatively simple configuration tool that allows for the super simple setup of applications. it is currently targeted toward simplifying configuration of containerized applications.

calvin operates against a series of backends with special formatters to pipe config data in to or out of a storage database.

the concept is similar to most config management, except for the fact that calvin isn't file-based, nor is it a pain to set up. in most cases, it's run-once-and-done. sometimes, you may find yourself needing to reconfigure a container app...just make the change with calvin and then restart your app. calvin will run before your app and generate your app's config before handing execution over to the app.

backends

to start, we will implement Redis as the configuration storage backend, since it's fast, simple, and extremely configurable.

over time, more backends will be added to enhance security or provide further features.

mutators

mutators take config data from a file and mutate it into a form that calvin can easily store in a backend. typically, the output from a mutator will be a dictionary or some other iterable.

mutators should not only be able to generate a dictionary from a config, but also generate a config from a dictionary.

command line tools

calvin will have a main entry point: the calvin script. from the main script, you will be able to:

  • Trigger a pull: calvin pull --backend <backend> <config>
  • Push a config through a mutator and to a backend: calvin push --backend <backend> --mutate <config type> <config name> < config-file.txt
  • Dump a pretty view of the config in tree-ish form: calvin dump --backend <backend> <config>
  • Get a config value from a config: calvin get --backend <backend> <config> <key>
  • Set a config value: calvin set --backend <backend> <config> <key> <value>

calvin may also support setting config or config value metadata, depending on the backend used. Redis gives us the advantage of expiring keys (for time-sensitive / secret config data) which may be useful.

roadmap

  • Documentation
  • README
  • Important Stuff
  • Backends
  • Redis
  • Consul
  • Postgres
  • ????
  • Mutators
  • Ini format
  • Malibu extended ini format (?)
  • Yaml
  • JSON
  • Msgpack...?