RFC: Parameter and Secret Management Changes
Background
Our Laminas app uses AWS Parameter Store and Secrets Manager for configuration management. We've experienced runtime failures during releases etc when parameter placeholders don't exist in AWS. This creates a need for a defined process to manage parameter and secret changes in vol-app.
Proposed Solution
Process for Parameter Store Management
When adding or modifying parameters in Laminas config files:
- Developer identifies need for new parameter
- Developer MUST:
- Create a branch in
vol-terraform
repository - Determine if the parameter will be the same across multiple environments or change individually per environment
- Add parameter values to appropriate files in
/etc/
- group for common, environment ones for individual
- Create a branch in
- Developer MUST create two linked PRs:
vol-terraform
PR with parameter additionsvol-app
PR with application changes to config
- Both PRs MUST reference each other in their descriptions
- The
vol-terraform
PR should be merged before or at the same time as the application PR
Notes
The vol-terraform etc folder contains the files that define parameters. There are two group files which contain values shared by all environments in an account, then per-environment files for environment-specific values. Please use the least-specific file possible for your changes.
File Structure Example
/etc/
├── env_eu-west-1_dev.tfvars # Dev-specific values
├── env_eu-west-1_pp.tfvars # PP-specific values
├── group_nonprod.tfvars # Shared non-prod values
└── group_prod.tfvars # Shared prod values
Process for Secret Management
As we should not store secret values in a repository, AWS Secrets Manager is used. If a developer needs a new secret it is proposed that they:
- Raises a ticket for Infrastructure team, linked to the ticket they are working on with:
- Secret placeholder name
- Description of purpose
- Required environments
- Where the value can be found / who is responsible for updating it in future etc
- Infrastructure team will:
- Create the secret in AWS Secrets Manager
- Notify the developer upon completion
- Developer can then merge their application changes