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

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: bossman-0.14.0.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for bossman-0.14.0.tar.gz
Algorithm Hash digest
SHA256 3e38bf8104f469aaa4534c5413eda030a9de02dac6745c68260f4a10eec76f10
MD5 3af551435d1835bac79093102930d443
BLAKE2b-256 3f169388b2c0300485564e9e73b114e22085d0953d5ed30d455d9b769c3e2e4c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bossman-0.14.0-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for bossman-0.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42790ee1ce51b47dcce89823dbf74d8c8a8645c39046b98d591390d661062b1d
MD5 c813af7afedab77858f78fc2719b5939
BLAKE2b-256 59fbe387e4d8c2c8829ee10bf66b95cfb8dead91c07d979493b3660278bd0d32

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