DevOps Tools

Software and libraries for DevOps.

Server setup goes in YAML playbooks that Ansible runs, unless you'd rather write Python with pyinfra. Neither Python DevOps tool needs an agent: SSH is enough.

How to choose:

Listed in editorial order, grouped by use case. Click a column header to re-sort the whole list.

Press / to search. Tags open their category. Click a row for details.

Search and filter

Results

Row number Tags

Cloud Providers 4 projects

Python interface to Amazon Web Services.
boto/github.com/boto/boto3 /9,924 stars /
Universal Command Line Interface for Amazon Web Services; the PyPI package is v1, in maintenance mode, while v2 ships as AWS's bundled installer.
aws/github.com/aws/aws-cli /17,334 stars /
Microsoft Azure SDK for Python, published as per-service packages.
Azure/github.com/Azure/azure-sdk-for-python /5,624 stars /
Google Cloud client libraries for Python, published as per-service packages.

Configuration Management 4 projects

A radically simple IT automation platform.
ansible/github.com/ansible/ansible /71,158 stars /
A multi-distribution package that handles early initialization of a cloud instance.
canonical/github.com/canonical/cloud-init /3,847 stars /
Turns Python code into shell commands and runs them on your servers.
pyinfra-dev/github.com/pyinfra-dev/pyinfra /6,059 stars /
Infrastructure automation and management system.
saltstack/github.com/saltstack/salt /15,727 stars /

Deployment 2 projects

A simple, Pythonic tool for remote execution and deployment.
fabric/github.com/fabric/fabric /15,520 stars /
A Python serverless microframework for AWS.
aws/github.com/aws/chalice /11,059 stars /

Monitoring and Processes 5 projects

A cross-platform process and system utilities module.
giampaolo/github.com/giampaolo/psutil /11,311 stars /
Sentry SDK for Python.
Supervisor process control system for UNIX.
Supervisor/github.com/Supervisor/supervisor /9,154 stars /
A real-time monitor and web admin for Celery task queues.
mher/github.com/mher/flower /7,239 stars /
A full-fledged subprocess replacement for Python.
amoffat/github.com/amoffat/sh /7,247 stars /

Other 1 project

A deduplicating archiver with compression and encryption.
borgbackup/github.com/borgbackup/borg /13,892 stars /

DevOps Tools guide

Ansible is agentless: it uses the SSH daemon your servers already run. You install it on one control node and declare the desired state of each machine in a playbook. When a machine already matches, Ansible changes nothing, however many times the playbook runs.

pyinfra calls itself "ansible but Python instead of YAML". Its getting-started guide puts your hosts in an inventory.py and your operations in a deploy.py, then runs pyinfra inventory.py deploy.py. The target hosts need nothing but an SSH daemon. Most operations describe an end state: pyinfra checks the host first and runs commands only if reality doesn't match.

Boto3 is the AWS SDK for Python. Its clients map close to 1:1 onto AWS service APIs and support every service operation. Resources are a higher-level, object-oriented layer on top.

The AWS CLI gives you direct access to AWS's public APIs from your terminal, to explore a service or write shell scripts.

The Azure SDK for Python is a set of per-service packages, so you install only what you use. Management libraries, named azure-mgmt-*, create and configure Azure resources, while client libraries work with services already provisioned.

The Google Cloud client libraries are the recommended way to call Google Cloud APIs from code.

cloud-init handles a new instance's first boot. It takes an initial configuration you supply and applies it when the instance is created, from the hostname and network to user accounts and scripts. Most clouds and Linux distributions ship it, so there's nothing to install. Write that configuration as cloud-config, YAML that describes the state you want.

Salt has a master managing minions: an agent runs on each host and listens on an event bus. One command can reach thousands of systems in seconds.

Fabric runs shell commands on remote servers over SSH and hands you back Python objects. A Connection is the core of its API: run() a command on it, and put() or get() files. For deploys and sysadmin jobs, write @task functions in a fabfile.py and run them with fab -H web1,web2.

Chalice deploys Python apps to AWS Lambda. You write handlers with a decorator-based API for API Gateway, S3, SQS, and other AWS services. Then chalice deploy provisions what your app needs, including its IAM policy.

psutil reads process and system information, like CPU, memory, disks, and network, across platforms. It covers what tools like ps, top, and netstat show.

The Sentry SDK reports your app's errors to Sentry. Call sentry_sdk.init() with your DSN as early as possible, in your app's entry point. Its integrations for Django, Flask, Celery, and many other libraries turn on by themselves.

Supervisor runs your programs as its subprocesses on UNIX-like systems and can restart them after a crash. Add a [program:x] section per program to its INI-style config, start supervisord, and control processes with supervisorctl.

Flower is Celery's recommended monitor: a web app that shows workers and tasks in real time, and can restart worker pools or shut workers down. Start it with your app's configuration, celery -A tasks.app flower.

sh lets you call any program as if it were a function: from sh import git, then git("status", "--short"). It runs the real binary on your $PATH, and a non-zero exit code raises an exception like sh.ErrorReturnCode_2.

BorgBackup is a deduplicating backup program. It stores only changes, so it suits daily backups, and its authenticated encryption suits backup targets you don't fully trust. Initialize an encrypted repository, create an archive per backup, and prune old ones on a schedule. The repository is useless without its key, so the quick start says to back up the key and test your backups.

Keep secrets out of your code and plain files, whichever tool you pick. Let each cloud's SDK find credentials: Boto3 searches a chain of locations, Azure recommends token-based authentication through Microsoft Entra ID, and Google's client libraries pick up Application Default Credentials. In config management, encrypt secrets with Ansible Vault or keep them in Salt's pillar.

Know a project that belongs here?

Tell us what it does and why it stands out.