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:
- 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 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