Skip to main content

A system deployment tool

Project description

Paracrine

PyPI version

Paracrine is a system deployment tool. It's based around Mitogen and standard Python packages for features (although, currently there's only the one core package). Current status is essentially, "works for me, probably won't eat your computer", but thoughts and patches are welcomed.

It's designed towards rapid idempotent deploys i.e. a zero-changes deploy should take in the order of a small number of seconds ideally, and so can be used as your application deployment option as well as for system changes, which has the design benefit of you could use it for GitOps-style deploys. Obviously, if you do more changes, it'll take longer, but that's generally less of an issue, but it should still be faster than most other tooling options. It assumes it's got a host system to run from, which probably can be anything that runs Python, but the testing for that so far has been on a Debian laptop.

It's named after Paracrine signaling "a type of cellular communication in which a cell produces a signal to induce changes in nearby cells" which feels pretty accurate for a deployment tool.

Main documentation is at https://palfrey.github.io/paracrine/

Usage

  1. Setup Python. Tested against 3.9+
  2. pip install paracrine
  3. Write a main file describing what you want to setup. integration_test/main.py is a reasonable example. It must call the run function, which takes general arguments, and list of modules to run.
  4. Write an inventory file for the machines this is managing. Current setup assumes they're all the same. integration_test/docker/inventory.yaml is a reasonable example file, but I suggest generating it from whatever you're using to create the servers (e.g. Terraform).
  5. Write a config.yaml. This has a main top-level key of environments with keys below that for each inventory file you've got (integration_test/config.yaml just has one, but in most scenarios you'll have at least a dev and prod setup). What you do below that is up to you, but typically it'll be environment variables and secrets to feed into the main file.
  6. Run python -m paracrine.commands.setup <inventory file> - this will install the minimum python bits so that everything else works.
  7. Dry-run the main file (e.g. python main.py -i ./docker/inventory.yaml), and then add --apply once you're happy with the run.

Limitations

  • All the servers are assumed to be Debian Linux boxes (although Debian-derivatives like Ubuntu should work)
  • Direct SSH access is assumed possible (Mitogen supports jump boxes, but there's no setup for that yet here) with keys, not passwords

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

paracrine-0.2.0.tar.gz (46.0 kB view details)

Uploaded Source

Built Distribution

paracrine-0.2.0-py3-none-any.whl (58.7 kB view details)

Uploaded Python 3

File details

Details for the file paracrine-0.2.0.tar.gz.

File metadata

  • Download URL: paracrine-0.2.0.tar.gz
  • Upload date:
  • Size: 46.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for paracrine-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e943548cebc52963610b76aca71af00c3ca8c9eb297da083583a9e5f632ae801
MD5 52e38243a942643c47d6471c4d67b995
BLAKE2b-256 dd4a2f649b53a8757c263beeacb13d29c7b3da2a6fa7fdce6c184f169fe40bb4

See more details on using hashes here.

File details

Details for the file paracrine-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: paracrine-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 58.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for paracrine-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e52070e3d41a3b4eca37d686a146354977c91c277780d05c80c0e00ee29579f
MD5 b943a6704b3902d856349b9f6a7c0a3d
BLAKE2b-256 d055e8dfd95c4331f59355a356abc6c02292cc8ebdff84992c61e7f18ac9fadb

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