Skip to main content

use Git to record and deploy changes to your DevOps infrastructure

Project description

Introduction

Unfurl is a tool that works with Git to record and deploy changes to your DevOps infrastructure. It tracks configuration changes, keeping a history of exactly how you did it and what the results are, so you can easily repair or recreate what you did later.

Unfurl integrates with the deployment tools you are already using, like Ansible, Terraform and Helm, organizing their usage into Ensembles, shareable abstractions that ease migrations to new environments as well as share and reuse your work.

Design

  • Next-level GitOps: both configuration and operational status stored in git
  • Configuration tool agnostic with built-in support for Ansible and Terraform
  • Secrets: key manager integration; keeps secrets out of git so repos can be safely made public
  • No server, no agent: simple, stand-alone CLI that can be used both as development tool on client or for automated production deployment on a server
  • Dependency management: Easily track dependencies and changes across infrastructure layers and boundaries.
  • Zero installation: Uses client-side container support to bootstrap and automate installation requirements.

Goals

  • Hermetic: tracks exact version of environment and deployment artifacts
  • Reproducible: hermetic builds + git + locked-down, immutable infrastructure = reproducibility
  • Incremental: only applies necessary changes
  • Fast: the above three combined enable lightening-fast updates

Features

  • Specifications, instance status, and change history authored and recorded in a simple YAML vocabulary.
  • Or use TOSCA's (Topology and Orchestration Specification for Cloud Applications) YAML vocabulary for more carefully typed specifications.
  • Editor friendly config files:
    • Comments, order, and whitespace are preserved.
    • Syntactic macros for YAML provide generic facility for re-use and avoiding verbose, boiler-plate
  • Path-based query DSL to express dynamic relationships between resources and configurations
  • Ansible-compatible Jinja2 templates
  • Records history of changes and commits them to a Git repository.
  • API for dynamic configuration allows scripted specifications to be recorded alongside declarative ones.

Installation

unfurl is available on PyPI. You can install using pip:

pip install unfurl

By default unfurl creates a virtual Python environment to run in so it only installs the minimal requirements needed to run the command line. If you want to run it using your system Python install it with the "full" option:

pip install unfurl[full]

python3 -m venv tutorial-env source tutorial-env/bin/activate

Requirements

Linux or MacOs

Python (2.7, 3.7, 3.8, or 3.9); git

Optional: docker

If needed, Unfurl will download and install local copies of the following: Ansible, Terraform, gCloud, Supervisor, Helm, and asdf.

Developing

Clone https://github.com/onecommons/unfurl

To build documentation: Run tox -e docs.

To build a distribution package run:

python setup.py sdist bdist_wheel

You can now install this package with pip, for example:

pip install ./dist/unfurl-0.0.1.dev183-py2.py3-none-any.whl

Running unit tests

You can use tox to run the unit tests inside the supported python environments with the latest source installed. Install tox pip install tox and then run tox in source root. To install the dependencies you may need header files installed by the following OS packages: python-dev, libcrypt-dev, openssl-dev. (Note: if installation of a dependency fails, reinvoke tox with -r to recreate the test environment.) If you use asdf to manage multiple versions of Python, also install tox-asdf: pip install tox-asdf.

Arguments after -- are passed to the test runner, e.g. to run an individual test: tox -- -p test_runtime.py.

Getting Started

Check out the rest of Unfurl's documentation here

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

unfurl-0.2.0.tar.gz (319.9 kB view details)

Uploaded Source

Built Distribution

unfurl-0.2.0-py2.py3-none-any.whl (401.7 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: unfurl-0.2.0.tar.gz
  • Upload date:
  • Size: 319.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.1

File hashes

Hashes for unfurl-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d35188820c4a2be639ea5ea0188c4d4994903d79bf068636c2ee272a5e452bed
MD5 a7811b5b992caa445433644d9e45cfe4
BLAKE2b-256 5d86f6ecbdd7f99fb154da8fe76b7ce3d0361112b7317640fe456c56d2bb52a8

See more details on using hashes here.

File details

Details for the file unfurl-0.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: unfurl-0.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 401.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.1

File hashes

Hashes for unfurl-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3bbacf94766a8f8a7bbda00732f6c9fdb771fee4f3d0b10411309329623bffd4
MD5 648ff392486d4dc31e203aa812123491
BLAKE2b-256 0d2cf8cda6c666ee46bfba809fc020998c256ce7a931268f93b4b921de91cbd9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page