Imagine we want to guarantee a consistent deployment of a single Python package. PyHolodeck is designed to make this simple, but no simpler.

API Docs

Create .deb files from python venvs as artifacts for deployment

app_path is where we create the virtual env and it is also the destination for the final target venv. We cannot avoid this - .deb creates it from dirs

todo: convert to run autmaotically within python (not pront cmds) todo: discvover postinst files and add as cmd switches to fpm todo: have some core service that postinst can call (fabric?) todo: chain to build servers

We need to hace fpm natively installed

class pyholodeck.maker.DeployConfig(filepath)[source]

Accept json file, simple convervsion to hold it all lots of very big assumptions here !

class pyholodeck.maker.Deployment(app_name, giturl)[source]
A big wrapper around different stages in making the
python package into a .deb

We are building a simple solution 1. We build on local disk, in the expected locations, a venv

representing the state of the venv we want eventually to deploy
  1. We wrap that venv, with the python interpreter etc, into a .deb file (tarball basically).
  2. We define a saltstack file that will deploy the .deb file artifact to our infrastructure. This file will define how to create the .ini / .conf files that will be put into well-known locations for the configuration of the package.
  3. We define in the package the conf template for reference

Alternatively the artifact can be a Docker image that contains our .deb file

BASE_PATH = '/mikado'

the root where the final .deb installed code will get put it is also, for ease of building .debs, where we put the code so the .deb making stage can find it

python_exe = None

the interpreter in this venv

src_path = None

where we will extract the git source to before runing setup

class pyholodeck.maker.Docker_Salt[source]
class pyholodeck.maker.SubCmd(cmdlist, pythonstmt=None, args=None)[source]

Smoothly act as store of a subprocess cmd

we want to have same command as a list for non-shell and in friendly form.

nb Its a lot easier to .join a list than parse a string

pyholodeck.maker.gitfetch(url, parentfolder)[source]

Given a git url, retrieve to parentfolder