-
Allow a flat style of managing configurations across disparate contexts and different formats (plaintext vs. encrypted)
- aggregates plaintext config values and SOPS secrets in one manifest
- ex: local development vs. docker vs. production environments
- aggregates plaintext config values and SOPS secrets in one manifest
-
Introduce an automated and cohesive way to validate and correlate configurations
TODO
: allow a gradual introduction of new variable names by automating:- introduction of new name for same value (
DB_SECRETS -> DATABASE_SECRETS
) - and deprecation of old name (managing deletion of old
DB_SECRETS
references)
- introduction of new name for same value (
- microservice configuration
- parse YAML manifests
- valid viper package input (so able to output JSON, YAML, and TOML)
- SOPS secret management
- docker-compose YAML env config scheme
cogs migrate
TODOcogs migrate <OLD_KEY_NAME> <NEW_KEY_NAME> [<envs>...]
cogs migrate --commit <OLD_KEY_NAME> <NEW_KEY_NAME> (<envs>...)
Aims to allow a gradual and automated migration of key names without risking sensitive environments:
# config.yaml pre migration
DB_SECRETS: "secret_pw"
Should happen in two main steps:
cogs migrate DB_SECRETS DATABASE_SECRETS
- should default to creating the new key name in all environments
- creates new variable in remote file or cog manifest
# config.yaml during migration
DB_SECRETS: "secret_pw"
DATABASE_SECRETS: "secret_pw"
cogs migrate --commit DB_SECRETS DATABASE_SECRETS <env>...
- removes old key name for all
<envs>
specified
# config.yaml post migration
DATABASE_SECRETS: "secret_pw"
- should apply to plaintext K/Vs and SOPS encrypted values