Skip to main content

Automation framework

Project description

Bossman

Automation framework, motivated by Akamai configuration management, but theoretically extensible.

Concept

The purpose of bossman is to allow resources to be declared as code. It has a plugin architecture, allowing more resource types to be added.

Resources are materialized locally by a set of configuration artifacts stored in a filesystem, and remotely by ways that depend on the resource type.

Bossman tracks both the local revisions in git and the remote revisions of the resources and keeps them in sync.

It is inspired by Terraform, but does not aim to replace it.

Motivation

We have Terraform - why Bossman?

Simply because it is quicker to write a bossman resource type, allowing quick support for features, at the expense of all the good things in Terraform.

Am I stuck with Bossman?

No. Bossman is only concerned with (simple) orchestration. It is very unopinionated about configuration representation. If you have a piece of valid configuration for a resource type, it is valid for Bossman. Bossman also does not store local state.

Status

This is alpha software. It is useful, but at your own risk.

Install

pip install bossman

Docker

docker run -it --rm -v $PWD:/work -v ~/.edgerc:/home/bossman/.edgerc ynohat/bossman

Compatibility

Should work on all platforms, but not extensively tested.

Usage

Prerequisites

A git repository containing configuration artifacts.

Configuration file

Within your infrastructure project, create a .bossman file.

This is a YAML file that defines the resource types and how they resolve to the configuration files in the repository. A simple example:

resources:
  - module: bossman.plugins.akamai.property
    pattern: akamai/property/{name}/

With the above, bossman will start managing Akamai property configurations stored in folders matching akamai/property/{name}.

Execution

bossman status # list resources and their status
bossman log # like git log, but resource rather than file centric
bossman apply # apply local changes to the infrastructure

Resource Types

bossman.plugins.akamai.property

Manages Akamai delivery configurations.

resources:
    # Required: python module name
  - module: bossman.plugins.akamai.property
    # Required: pattern matching config paths to this resource type
    pattern: akamai/property/{name}/
    # Optional: plugin specific parameters
    options:
      edgerc: /path/to/edgerc
      section: papi
      #switch_key: xyz

Extending

The extension mechanism should be fairly straightforward.

  • Write a python module exposing a ResourceType class
  • ResourceType should extend bossman.abc.ResourceTypeABC
  • Make the module available on the python search path

Assuming you have a module called acme.bossman.resource.foo, exposing a ResourceType class, you should then be able to declare it in .bossman like this:

resources:
  - module: acme.bossman.resource.foo
    pattern: acme/foo/{frobble}/{widget}.json

The pattern path parameters are specific to resource types, Bossman doesn't care about them and should be used to enhance extension functionaliy.

The project is not stable, so the extension mechanism is likely to change without warning.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

bossman-0.24.0.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

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

bossman-0.24.0-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file bossman-0.24.0.tar.gz.

File metadata

  • Download URL: bossman-0.24.0.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.9.0

File hashes

Hashes for bossman-0.24.0.tar.gz
Algorithm Hash digest
SHA256 df598297b5484d2968187f83ee7fbd917d26e368dbd6ea80a3e91fe39aa11b9c
MD5 e59fa583873936d9a3fb7f154d6c39c3
BLAKE2b-256 bd764ae685b371291b83c73a705daf7ed2dbf2c3766c86b3bf2f89123c3b7047

See more details on using hashes here.

File details

Details for the file bossman-0.24.0-py3-none-any.whl.

File metadata

  • Download URL: bossman-0.24.0-py3-none-any.whl
  • Upload date:
  • Size: 29.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.9.0

File hashes

Hashes for bossman-0.24.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0fd24eb988b14c447281d0ec4ffa6858b012808018cc7204feab11a985f6507b
MD5 32dbb0c32c19c8737ba7b5da625e1afc
BLAKE2b-256 e23aac68ed799ce430eeeaf4edc359c5963664195e15a2ade9d14f1b67eab460

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