betterparse v0.1.1
BetterParse
A simple YAML parsing utility for Kubernetes manifests.
Usage
CLI
The basic usage is:
betterparse <PATH_TO_YAML> [--raw] [--out=<PATH_FOR_OUTPUT>] [--environment=<CONFIG_ENVIRONMENT>]
More detailed info can be found by running betterparse --help
.
When --raw
is specified without --out
, the parsed YAML will be concatenated to allow for ingesting into Kubernetes as a single file:
kubectl apply -f <(betterparse ./kubernetes --raw)
Logging
To see logs, prefix the betterparse
command with DEBUG=betterparse:*
. These logs are sent to stderr
and do not conflict with the --raw
option.
Templating
config.json
The config.json
file should live in the same directory as the YAML to parse.
This file should have top-level keys corresponding to the specific environment. The values inside each environment object are 100% user-defined.
{
"staging": {
"kubernetes": {
"image": "",
"imagePullPolicy": "Always",
"replicas": 2,
"resources": {
"limits": {
"cpu": ""
},
"requests": {
"cpu": "",
"memory": ""
}
}
},
"variables": {
"loggingDisplayName": "QaWorker",
"nodeEnv": "development",
"rabbitmq": {
"user": "user",
"pass": "C4y9ACotwtrtN9Z8"
},
"database": {
"user": "bv",
"pass": "%44JvaL&EVS##ty5"
}
}
}
}
YAML
Each YAML file inside the input directory will be parsed. The parser looks for the token #@
on each line
For example:
config.json
(top-level environment key omitted for brevity)
{
"path": {
"to": {
"replacement": "abcdefg
}
}
}
template.yaml
someValue: defaultValue #@ path.to.replacement
When run through the parser, template.yaml
will be converted to
someValue: 'abcdefg'
Assuming the path could not be found in the config, the original value will be used:
someValue: defaultValue #@ i.dont.exist
This would produce
someValue: defaultValue