App Configuration and Project Structure in Cloudtruth
March 30, 2022
In many environments, managing app configuration data (secrets, API keys, parameters, environment variables, etc.) can be cumbersome. If you have a dev, staging, and production environment, the management of configuration data can cause major headaches for your team.
If you’re handling the same data for clients and/or customers, it can become an even bigger mess due to managing multiple environments and storing the configuration data values. You need an easy-to-use and simple-to-understand approach.
In this blog post, you’ll learn about how CloudTruth can make secrets and parameters simple.
Projects
When thinking about Projects in CloudTruth, think about it as your entry point to an application. Once you click on a Project, you can have multiple Parameters. Inside of those Parameters can be anything from environment variables to secrets. The idea here is that CloudTruth can store any value you want in a safe, secure, and easy fashion.
Projects control the existence of Parameters and Environments control parameter values.
Let’s take a look at the below screenshots.
The Project
In the screenshot below, you’ll see a Project called MyApp. Within MyApp you’ll be able to set multiple Parameters. The Parameters can be anything from:
Secrets
API Keys
Environment variables
Values that you’re passing in at runtime
Variables
Within each project is where you can set multiple parameters. The parameters can be for one client or multiple clients in one environment or multiple environments. CloudTruth also tracks version history for all parameters and secret values. This feature is an automatic system-wide change tracking tool.
Per the screenshot below, there is one parameter called APIKey in the default environment, but what exactly does that mean?
The Parameters
Thinking about the APIKey parameter from the previous section, the API key could work for multiple environments or one environment. For example, below you’ll see that the APIKey is in the default environment, which means it works throughout development, staging, and production.
However, it’s typically not the case to have one value for every environment. You’ll need multiple values. To do that, you can edit the value of the APIKey parameter for each environment. Below you’ll see Secrets inside of development, staging, and production.
CloudTruths Project and Environment inheritance model helps you keep your environment(s) DRY.
Multi-Environment Projects
In the previous section, you learned about multiple environments and Projects if you’re only worried about one client or your own in-house configurations. It’s a great use case, but what about if you have one app and multiple customers using that app? Perhaps you’re storing configuration data values, like environment variables and secrets, for customer configurations.
Luckily, CloudTruth has you covered with that type of scenario as well.
Taking a look at the screenshot below, you can see the MyApp project and now there are multiple Projects underneath. This is what CloudTruth calls Nested Projects. When creating a new Project, you have the option to create child Projects. For example, development, staging, and production. Within each of those Projects, you can create child Projects which can be used by different customers.
Then, you can specify configuration data for each customer in a straightforward way. CloudTruth ensures that you can focus on the application and not have the headache of focusing on secrets and parameters.
Utilizing The CloudTruth CLI
From an automation and developer standpoint, you may not want to click around a UI. Instead, you’ll want a command-line interface that you can use to add Parameters to Projects, regardless of how nested the Projects are. You can use the CloudTruth CLI in any environment to achieve this goal.
Below you’ll see an example of adding parameters to prod-customer-1 and prod-customer-2
cloudtruth --project prod-customer-1 parameter set --value 9+G7;3z<FJD/;4c+ APIKey
cloudtruth --project prod-customer-2 parameter set --value DvQ7gYkhqztS2.9h APIKey
Wrapping Up
Whether you have one application that you need configuration data for internally, or you have multiple customers that you need to manage configuration data for, CloudTruth has the ability to manage any environment you throw at it. Whether it’s multiple clients in dev/staging/production or one client with different parameter/secret values for each stage.
If you’d like to get started with CloudTruth today, you can try it for free at the link here.