Utility for generating deployment configs for a service
The below command will generate the required deployment config files for the specified service in the current directory.
deploy-config-generator path/to/service/repo
You can specify the environment to generate configuration for.
deploy-config-generator path/to/service/repo -e stage
You can specify the output directory using the --output-dir
option.
deploy-config-generator path/to/service/repo --output-dir /tmp
You can increase the verbosity level to see what the script is doing.
deploy-config-generator path/to/service/repo -vvv
You can specify the path to a site config file.
deploy-config-generator path/to/service/repo --config path/to/site/config.yml
The optional site config file is expected to be a YAML file with the following basic structure.
---
some_global_option: foo
another_global_option: bar
plugins:
plugin_name:
some_plugin_option: baz
fields:
<field definitions>
The field definitions should have the following basic structure (continued from above).
fields:
field_name1:
type: str
field_name2:
type: bool
default: false
The following global options are available.
Name | Default | Description |
---|---|---|
default_output |
The default output plugin to use (probably to be removed) | |
deploy_dir |
deploy |
Directory within service dir where deploy config is located |
deploy_config_file |
config.yml |
Name of deploy config file |
vars_dir |
var |
Directory within deploy dir to look for vars files |
defaults_vars_file_patterns |
['defaults.var'] |
Patterns for finding "defaults" vars files |
env_vars_file_patterns |
['{{ env }}.var', 'env_{{ env }}.var'] |
Patterns for finding env-specific vars files |
use_env_vars |
True |
Whether to read vars from environment |
plugin_dirs |
[] |
Additional dirs where plugins can be found |
Variables are read from shell-compatible .var
files (by default) located in the deploy directory. Variable
definitions referencing other variables (using the $FOO
or ${FOO}
notation) are supported. Vars are read
in the following order.
- vars from site config (the
default_vars
key) - vars from environment - useful for running in a CI job
- "defaults" vars file(s) - default values for all environments
- env-specific vars files - values specific to a particular application environment
The deploy config is read from deploy/config.yml
(by default) from the directory specified on the
commandline. It is expected to be a YAML file with the following basic structure.
---
apps:
<app definitions>
jobs:
<job definitions>
The available top-level sections and the keys allowed for them are defined by the individual output plugins.
This tool uses a plugin system for handling the generation of deploy files for various backends.
The following output plugins are available:
dummy
kongfig
kube_configmap
kube_cronjob
kube_deployment
kube_dnsendpoint
kube_ingress
kube_job
kube_kong_consumer
kube_kong_ingress
kube_kong_plugin
kube_namespace
kube_pdb
kube_pv
kube_pvc
kube_secret
kube_service
kube_servicemonitor
kube_statefulset
marathon
metronome
This tool comes with unit and integration test suites, which can be run with the commands:
python setup.py test
python setup.py integration
You can run the full test suite in multiple python versions using tox
by running:
tox
The docs for the individual plugins are generated from the code of the plugins. You can regenerate the plugin docs with the following command:
scripts/gen-plugin-docs.py