Utility to generate service deploy configurations
Project description
deploy-config-generator
Utility for generating deployment configs for a service
Basic usage
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 dirty details
Site config
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
Global options
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
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
Deploy config
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.
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
Development
Running tests
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
Regenerating plugin docs
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file deploy-config-generator-2.29.0.tar.gz
.
File metadata
- Download URL: deploy-config-generator-2.29.0.tar.gz
- Upload date:
- Size: 35.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f685e53bccb44d3be852b28a93314e0d33581cfb27e003c84fb6b4b1ecf7ffad |
|
MD5 | 2fcf5b1b43e61811269d574ce32d9cea |
|
BLAKE2b-256 | a1aeec4b7ce42d8d7e79fdd27476d0cbd280b5041b2a554412e5287a15b6eded |