Skip to main content

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:

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deploy-config-generator-2.5.0.tar.gz (29.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page