Skip to content

Latest commit

 

History

History
170 lines (128 loc) · 4.9 KB

README.md

File metadata and controls

170 lines (128 loc) · 4.9 KB

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:

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