Skip to main content

Fabric-based software provisioning tool

Project description

Carnival

Tests PyPI version PyPI Documentation Status

MIT

Software provisioning tool, built on top of Fabric

Also carnival contrib package available.

  • Runs on MacOs and Linux
  • Tested on Ubuntu and CentOS

Install

$ pip3 install carnival
$ pip3 install carnival_contrib  # Optional community receipts

Docs

Documentation available at readthedocs.org

Cli

Usage

$ carnival --help
Usage: carnival [OPTIONS] [deploy_frontend|deploy_backend]...

    Options:
    -d, --dry_run  Simulate run
    --debug        Turn on debug mode
    --help         Show this message and exit.

Competion

  • for Bash: place eval "$(_CARNIVAL_COMPLETE=source carnival)" in .bashrc
  • for ZSH: place eval "$(_CARNIVAL_COMPLETE=source_zsh carnival)" in .zshrc

Quick example

carnival_file.py - entry point for carnival cli

Lets create one.

from carnival import Step, Host, Task, cmd

class Deploy(Task):
    def run(self):
        self.step(
            DeployFrontend(),
            Host("1.2.3.5", ssh_user="root", can="context", additional="give"),
        )

        self.step(
            DeployFrontend(),
            [
                Host("root@1.2.3.6", can="give", additional="context"),
                Host("root@1.2.3.7", can="context", additional="give"),
            ]
        )


class DeployFrontend(Step):
    def run(self, can, additional, **kwargs):
        cmd.apt.install_multiple("htop", "nginx")
        cmd.systemd.enable("nginx", start_now=True)


class DeployBackend(Step):
    def run(self, can, additional, **kwargs):
        cmd.apt.install_multiple("htop")
        cmd.docker.install_ce_ubuntu()
        cmd.docker.install_compose()

Run

$  python3 -m carnival deploy
💃💃💃 Runing ⛏frontend at 🖥 1.2.3.4
...
💃💃💃 Runing ⛏frontend at 🖥 1.2.3.5
...

Develop

Run tests

$ make dev  # Run docker containers for testing
$ make test_deps  # Install test dependencies
$ make test  # run static analyzers and tests
$ make qs  # Run static analyzers only
$ make nodev  # Stop docker containers

Run carnival from dev env

$ python3 -m carnival --help

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for carnival, version 1.3
Filename, size File type Python version Upload date Hashes
Filename, size carnival-1.3.tar.gz (19.1 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page