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.30.2.tar.gz (36.6 kB view details)

Uploaded Source

File details

Details for the file deploy_config_generator-2.30.2.tar.gz.

File metadata

  • Download URL: deploy_config_generator-2.30.2.tar.gz
  • Upload date:
  • Size: 36.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for deploy_config_generator-2.30.2.tar.gz
Algorithm Hash digest
SHA256 55f1fad648b0d0d55ec30284606cd9892caa1cc5b06e461a1e8a613b4ef4f314
MD5 4519e6f1b442d96e11fdf000d3150640
BLAKE2b-256 d45beb8744a1480306136bddb293e9cfb4406a7e947124ce77c8cf8e6327e189

See more details on using hashes here.

Supported by

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