Skip to content

Manage Application Configs

Manage your Application Configs#

A growing theme in the DevOps space is the concept of GitOps. GitOps enables engineers define the desired state of their services and let some other tool / framework / whatever synchronize the defined state with the actual state. Figgy is capable of managing similar functionality for your application's configurations. With Figgy you can define the configuration state your application needs to successfully run and let Figgy figure out how to reconcile the difference between your defined state and your remote state.

This definition is done through a file we'll refer to as the figgy.json file. This JSON file defines your desired state. Figgy parses this file and prompts you for required input, if any, to synchronize your desire and actual remote state.

Your figgy.json can be autogenerated directly from your source code through reflection, static code analysis, or by tailoring your source to integrate with Figgy conventions. By using one of our supported libraries your code will automatically generate the figgy.json file. From there it can be checked into source control effectively linking that specific commit to the exact configurations your application needs to run.

Figgy Integrated Libraries by Language:#

  • Python
  • More to come, please consider contributing!

Language isn't supported yet? No worries! This is a nice-to-have and will save you time but is NOT required to use Figgy. You can also write your own without too much trouble. See our Python library for reference.

By keeping a versioned figgy.json in your repository, you'll get these great features:

  • Easily break CICD builds before the deploy step by detecting missing configurations.
  • Conveniently add and delete groups of configurations by synchronizing your figgy.json file.
  • Application dependency mapping is clear, making it easy to answer "What does this application talk to?"
  • Combat config sprawl. Never have unneeded secrets or configs floating out in the ether again.

With the right library the overhead should be minimal, in fact, using this feature should save your engineers time. You can even integrate the generation or validation of the figgy.json file into your git pre-commit hooks!

What's this figgy.json you speak of?#

The figgy.json file (which can be named whatever-you-want.json) declaratively defines the configurations your application needs to run. The FiggyCLI will parse this file to support lots of great functionality like:

Hint

For a reference on all supported figgy.json options, see: Declarative Configuration

Sync#

The sync command synchronizes your locally declared configuration state (in your figgy.json file) with the current remote state with the targeted environment. For instance, suppose you run:

    figgy config sync --config figgy.json --env dev

Figgy will look-up your currently defined state and compare it to the configuration state in your dev environment. Next, Figgy will prompt you to add any Parameter Store configurations that are missing. Sync will also tell you if there are stray configurations in Parameter Store that your code doesn't appear to need anymore. Finally, sync will set up config replication for any global parameters your service needs and ensures sure they'll always be available to your service in its namespace.

If your sync succeeds and displays no errors you can feel confident your application will run without configuration issues in the targeted environment.

Prune#

Sync will notify you of stray configurations in Parameter Store but prune will will walk you through them one-by-one and ask you if you'd like to delete them.

    figgy config cleanup --config figgy.json --env dev

Combat unneeded config sprawl with Sync + Prune!

Validate#

The validate command can be easily integrated into your CICD build process to break your build before deployment if your defined configuration state is not in sync with the current remote configuration state. Validate will exit with a non 0 exit code if any configurations are missing application needs to run.

Bonus: Integrate validate into your git pre-commit hook! → Example HEre

    figgy config validate --config figgy.json --env dev

See it in action!#

Follow our Getting Started Demo to do all of these things in under 15 minutes!