@adikari/config-manager
Version:
Tool to deploy configs to different stores
97 lines (70 loc) • 2.87 kB
Markdown
# 🗄️ Config Manager
Node module to push configuration and encrypted secrets to AWS.
## Installation
```
# Via yarn
$ yarn add @adikari/config-manager
# Via npm
$ npm install @adikari/config-manager
```
## Usage
1. At the root of your application add configuration file called `configs.yml`.
```
service: my-service
provider: ssm
config:
path: /${stage}/config
defaults:
DB_NAME: my-database
DB_HOST: 3200
required:
DB_TABLE: "some database table name for ${stage}"
secret:
path: /${stage}/secret
required:
DB_PASSWORD: "secret database password"
```
2. Use `config-manager` CLI tool to push your keys to AWS parameter store.
```
$ config-manager run --stage <stage> --interactive
```
### Config File
Following is the configuration file will all possible options:
```
service: my-service
provider: ssm # Only supports ssm for now.
cfOutputs: # Outputs from cloudformation stacks that needs to be pushed to ssm.
- some-cloudformation-stack
config:
path: /${stage}/config # Base path for params to be added to
defaults: # Default parameters. Can be overwritten in different environments.
DB_NAME: my-database
DB_HOST: 3200
production: # If keys are deployed to production stage, its value will be overwritten by following
DB_NAME: my-production-database
required: # Keys mentioned below will be prompted to be entered.
DB_TABLE: "some database table name for ${stage}"
secret:
keyId: some-arn-of-kms-key-to-use . # If not specified, default key will be used to encrypt variables.
path: /${stage}/secret # Base path for params to be added to
required:
DB_PASSWORD: "secret database password" . # Parameter to encrypt and add to. Will be encrypted using KMS.
# Above key will be added to /${stage}/secret/DB_PASSWORD
# Value in quote will be displayed as explanation in prompt during interactive run.
```
### CLI
Following is the usage of `config-manager` CLI.
```
Usage: config-manager [options] [command]
Options:
-V, --version output the version number
-s, --stage [stage] Specify stage to run on. (required)
-c, --config [config] Path to configuration (default: "configs.yml")
-h, --help output usage information
Commands:
run [options] Verify or populate all remote configurations and secrets.
init Initialize config manager. Only required to run once.
list List all remote configurations and secrets.
```
### License
Feel free to use the code, it's released using the MIT license.