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/repoYou can specify the environment to generate configuration for.
deploy-config-generator path/to/service/repo -e stageYou can specify the output directory using the --output-dir option.
deploy-config-generator path/to/service/repo --output-dir /tmpYou can increase the verbosity level to see what the script is doing.
deploy-config-generator path/to/service/repo -vvvYou can specify the path to a site config file.
deploy-config-generator path/to/service/repo --config path/to/site/config.ymlThe 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: falseThe 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_varskey) - 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:
dummykongfigkube_configmapkube_cronjobkube_deploymentkube_dnsendpointkube_ingresskube_jobkube_kong_consumerkube_kong_ingresskube_kong_pluginkube_namespacekube_pdbkube_pvkube_pvckube_secretkube_servicekube_servicemonitorkube_statefulsetmarathonmetronome
This tool comes with unit and integration test suites, which can be run with the commands:
python setup.py test
python setup.py integrationYou can run the full test suite in multiple python versions using tox by running:
toxThe 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