Skip to main content

Render, merge and validate docker_compose files for deploying a stack

Project description

Stack Config

version number: 0.1.0 author: ScienceLogic

Overview

Render, merge and validate docker_compose files for deploying a stack.

This library is using docker-compose merging process, but at the end it does a final verification to let users know whether this is a valid docker-compose for deploying a stack or not, as docker-compose doesn't validate that.

Additionally, this library will compile valid yaml jinja2 templates, so they can be merged along with the other docker-compose files.

Installation

To install use pip:

$ pip install stackconfig

Or clone the repo:

$ git clone https://github.com/Sciencelogic/stackconfig.git
$ python setup.py install

Development

  1. Fork
  2. Set Dev Environment
pip install -r dev_requirements.txt
pip install -r requirements.txt
pip install -e .
git checkout -b feature-more-cool-stuff

Test

# run tests using tox
tox
# run tests with pytest
pytest

Version

bumpversion major  # major release
or
bumpversion minor  # minor release
or
bumpversion patch  # hotfix release

git push origin release-n.n.0
or
git push origin hotfix-x.x.n

Usage example as cli tool

$ stackconfig --help
Usage: stackconfig [OPTIONS]

Options:
  -f, --file PATH        docker-compose file to be merged. Accept multiple
                         arguments.
  -o, --output PATH      Output path for the final docker-compose file
                         [default: /tmp/docker-compose-20220425-16-49-16.yml]
  -d, --j2data PATH      Yaml file that contains variables to render the
                         provided jinja2 template.
  -t, --j2template PATH  Jinja2 template that needs to be a valid docker-
                         compose file after being rendered.
  --version TEXT         Set valid version for the final docker-compose file
  --help                 Show this message and exit.
$ stackconfig -f docker-compose.yml -f compose-override.yml -t docker-compose-template.yml.j2 -d data_file.yml --version 3.8 -o docker-compose-final.yml

Usage example using Python

from stackconfig.stackconfig import StackConfigCompose
from stackconfig.utils.jinja2_utils import render_jijnja2_compose

jinja_env = {}
yml_compiled_files = render_jijnja2_compose(['/tmp/docker-compose.yml.j2',
                                             '/tmp/docker-compose-override-yml.j2'],
                                            data_file='/tmp/data_file.yml',
                                            data_dict=jinja_env)
# valid docker-compose files can be appended, all of them are going to be merged using the docker-compose library
yml_compiled_files.append("/tmp/docker-copmose-override2.yml")
stack_config = StackConfigCompose(yml_compiled_files, '/tmp/docker-compose-output.yml')
stack_config.merge_stack_compose()

Not Exactly What You Want?

Options that may be a good fit for you:

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

stackconfig-1.0.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

stackconfig-1.0.0-py2.py3-none-any.whl (7.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file stackconfig-1.0.0.tar.gz.

File metadata

  • Download URL: stackconfig-1.0.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.13

File hashes

Hashes for stackconfig-1.0.0.tar.gz
Algorithm Hash digest
SHA256 6943721289cfb52694e476493f40e086cb2da96bd62cba4129437448dcf48902
MD5 a1ed874a30586ba9cb930cfc3c42c175
BLAKE2b-256 6909a5c1b1983b588fe9379c2b800f42099b93c2522f08dcefef7230096d0eeb

See more details on using hashes here.

File details

Details for the file stackconfig-1.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for stackconfig-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 034583b4b709c6dc8590a988c601a49a97cb171421785513de436b1be34993c5
MD5 be332d07323721a9e615fc1dc6514060
BLAKE2b-256 f488549b88763a247554c0b16cb78405a21bc23e9f1bfbd6c4a4b3049fd429aa

See more details on using hashes here.

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