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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for stackconfig-1.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0ac6c8454411bbf4241016e1fb92da1a9de22a98aed300bedfb75ac70bed2742
MD5 b9113a6736072acbdf70d0832f6342b2
BLAKE2b-256 45b62c37b0717cd398cf0f1614452436b336f1c118b4ed9188fb0cca881e0810

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