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.2.tar.gz (22.1 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.2-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bossman-0.20.2.tar.gz
  • Upload date:
  • Size: 22.1 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.2.tar.gz
Algorithm Hash digest
SHA256 34043892113bdc906b7ee36b8a774503833521831419858999ed4c70e1a049a0
MD5 20f9e31f865beec3f80ddfc24624c168
BLAKE2b-256 25e46affe34424a048007500a3f309ca20560daaadcaac1be6fae83792571dc6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bossman-0.20.2-py3-none-any.whl
  • Upload date:
  • Size: 27.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 49b27eee5b29eebc21c9cd8c776a3f4e725177df3e9172654dbd6675dd6d67a7
MD5 9ea65a57fc1e76ba94e830506ba9d5ef
BLAKE2b-256 a8528bddd5b3216b024863a7acac6fb7b084116e019c6d4c1037bb4b03f996db

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