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.20.1.tar.gz (22.0 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.20.1-py3-none-any.whl (27.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for bossman-0.20.1.tar.gz
Algorithm Hash digest
SHA256 e6c74c32c1e1b5769229b547c0f9bdc59ce6c6394f29f0114e61189150631a7f
MD5 fc3cf37d9db8f55d17ead44402d41d60
BLAKE2b-256 8cee57f35332766864e352841bbbd6aa4d039f9e533e774ab7f524465296bcfc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bossman-0.20.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7e794f9e6068ba27d3a3c9e26bb0197f9886435788d7981c172238de99809c77
MD5 7e10e6cc307ae2e229c8ca2cb3423b11
BLAKE2b-256 c6c33fa30665215d3aa754674400b2434b409dba986d030cdc0aace994fca72b

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