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 |
local_vars_file_patterns |
['local.var'] |
Patterns for finding "local" 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, except for with the
"local" vars file. Vars are read in the following order.
- "local" vars file(s) - used as stand-in values when vars that normally come from the environment are not present
- 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:
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
Hashes for deploy-config-generator-1.8.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3df7af7a072c2b347e45f319c1d956de7568f4fa3e5dee8b6a03cd91cf0006d |
|
MD5 | 8cc5ddf8a1942d24ef7eba0622ddb039 |
|
BLAKE2b-256 | 11ac8871f7c6ee38b933af6aa5712f3b1c6b453adb75fca4b28d45142e58d1ac |