Skip to main content

use Git to record and deploy changes to your DevOps infrastructure

Project description

WARNING: Under heavy construction!

What is Unfurl?

At its most ambitious, Unfurl aims to be a decentralized package manager for the Internet, enabling you to easily deploy and integrate live services.

More simply, it is a tool that works with Git to record and deploy changes to your DevOps infrastructure. Unfurl transforms a Git repo into a reproducible history of deployed services.

Goals

  • Next-level GitOps: both configuration and operational status stored in git
  • Hermetic: tracks exact version of environment and deployment artifacts
  • Reproducible: hermetic builds + git + locked-down, immutable infrastructure = full reproducibility
  • Incremental: only applies necessary changes
  • Fast: the above three features combined enable lightening-fast updates
  • Configuration tool agnostic and includes 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.

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.

Concepts

  • Topology templates specify how resources should be configured using the TOSCA standard. Templates live in their own git repos.
  • Resource manifests describe the current state of resources and maintain a history of changes applied to those resources. Each manifest lives in its own git repo, which corresponds to the lifespan of the resources represented in the manifest.
  • Configurators apply changes to resources using the spec. Configurators are themselves first-class resources, so client-side installations can be hermetically bootstrapped too.

Usage:

unfurl init [project]

Creates a new Unfurl project including new git repositories for the specification and the instances. It will have the following directory structure:

project/ spec/ # Git repository containing the specification and related artifacts instances/current/ # Git repository containing manifest.yaml unfurl.yaml # local configuration file for the project

unfurl clone [path to project or specific instance repository]

Clones the project or repository into a new project

unfurl newinstance [path to project] [manifest-template.yaml]

Create new instance repo using "manifest-template.yaml" (defaults to the project's spec/manifest-template.yaml)

Installation

Requirements

Python (2.7, 3.5, or 3.6); git; docker 13 or later

From source

Developing

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

To build documentation: Run tox -e docs.

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.)

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

Getting Started

  1. create a repo
  2. configure unfurl
    1. kms setup: add credentials
    2. create manifest with root resource: configure using kms
    3. (optional) run bootstrap to create a secure root resource
  3. start creating your manifest

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.0.1.dev144.tar.gz (211.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unfurl-0.0.1.dev144-py2.py3-none-any.whl (329.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file unfurl-0.0.1.dev144.tar.gz.

File metadata

  • Download URL: unfurl-0.0.1.dev144.tar.gz
  • Upload date:
  • Size: 211.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for unfurl-0.0.1.dev144.tar.gz
Algorithm Hash digest
SHA256 e9e6298d10baea498f6d32da87326da2ad9c4edbd1ce4c1a5ce0d1417cad76f0
MD5 75b939d4b88e573a54a5da8a54c3ca3a
BLAKE2b-256 e452c41099868a01c7a127eff48d74e5faa706be2744352091d437bf2e79929c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: unfurl-0.0.1.dev144-py2.py3-none-any.whl
  • Upload date:
  • Size: 329.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for unfurl-0.0.1.dev144-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 60c992c540e73fa63099c24b213cabed04028a15773e2476adc233cd1fc7e876
MD5 355cbaf43d740c05e9a5727617daec62
BLAKE2b-256 050109d08a86c416cd8d8a9ba64ed41c8435c8d70f2197ccd9c1de7a024b1cd3

See more details on using hashes here.

Supported by

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