Skip to main content

Spinnaker Foremast

https://github.com/foremast/foremast/actions/workflows/githubactions-tox.yml/badge.svg https://github.com/foremast/foremast/actions/workflows/codeql-analysis.yml/badge.svg Join the chat at https://gitter.im/foremast/foremast https://badge.fury.io/py/foremast.svg

Foremast is a Spinnaker pipeline and infrastructure configuration and templating tool. Just create a couple JSON configuration files and then manually creating Spinnaker pipelines becomes a thing of the past.

_docs/_static/Foremast+Logo-text-300.png

Why Foremast?

  • No manual creation of pipelines in the Spinnaker UI

  • Reproducible and versioned Spinnaker pipelines

  • Standardized pipelines with flexibilty for application specific needs

With Foremast, Developers create a couple simple JSON configs per application. These configs provide details on the pipeline and infrastructure specific to the application’s needs. Foremast takes those configs, renders some Jinja2 templates, and then acts as a client for the Spinnaker Gate API. Foremast comes with generic templates for creating a simple pipeline but it can also point to external templates for custom pipelines that fit any workflow.

Foremast Features

  • Dynamically generate Spinnaker pipelines based on JSON configs

  • Customizable pipelines through external Jinja2 Templates, see Foremast templates for examples

  • Dynamically generate AWS infrastructure based on pipeline configs

  • Set up resources not defined in Spinnaker, such as S3 buckets and IAM roles

  • Support for AWS Lambda pipelines

Getting Started

Take a look at quick start guide for a quick introduction on how to use Foremast.

We also have a blog post to help you get started: Automate Spinnaker Pipeline Creation

Documentation

All the documentation can be viewed on Read the Docs. You can find all configuration options, code information, and better examples there.

Development

See the contribution guide for information on code style, contributing, and testing.

Getting Help

For questions, support, or friendly conversation you can find us on Gitter.

More Details

Installing

Installing the package will provide CLI commands for convenience.

virtualenv -p python3 venv
source venv/bin/activate
pip install foremast

Entry Points

Foremast has a few easy to use CLI endpoints.

  • foremast-pipeline - Creates an application and pipeline Spinnaker

  • foremast-infrastructure - Sets up AWS infrastructure like s3, iam, elb, and security groups

  • foremast-pipeline-onetime - Generates a pipeline for deploying to one specific account

  • foremast-scaling-policy - Creates and attaches a scaling policy to an application server group.

  • foremast-pipeline-rebuild - rebuild pipelines after changes have been made

You can run any of these entries points from the command line. They rely on environment variables and are ideal for running in a Jenkins job

PROJECT=forrest GIT_REPO=core RUNWAY_DIR=path/to/pipeline_configs foremast-pipeline

Foremast Configuration

A file at {pwd}/.foremast/foremast.cfg, ~/.foremast/foremast.cfg, or /etc/foremast/foremast.cfg needs to exist in order to run foremast.

[base]
domain = example.com
envs = dev,stage,prod
regions = us-east-1
gate_api_url = http://gate.example.com:8084

Runway Configuration Files

To begin using Foremast, you must have a few JSON configuration files defined for each application

pipeline.json

This file will be needed for each application. Foremast has a lot of defaults in place for pipeline.json, take a look at the pipeline.json docs for all options.

Minimum

{
    "deployment": "spinnaker"
}

Example Deployment Environments Override

Custom deployment environment order and selection can be provided in the env key. When missing, the default provided is {"env": ["stage", "prod"]}. Here, the order matters and Pipeline will be generated in the given order.

{
    "deployment": "spinnaker",
    "env": [
        "prod"
    ]
}

application-master-{env}.json

Each deployment environment specified in the pipeline.json file will need an accompanying application-master-{env}.json file in the same directory.

The `application-master-{env} files have a lot of exposed values with sane defaults. Please take a look at the application.json docs for all options.

application-master-{env}.json example

{
  "security_group": {
    "description": "something useful",
    "elb_extras": ["sg_offices"],
    "ingress": {
    },
    "egress": "0.0.0.0/0"
  },
  "app": {
    "instance_type": "t2.small",
    "app_description": "Edge Forrest Demo application",
    "instance_profile": "forrest_edge_profile"
  },
  "elb": {
    "subnet_purpose": "internal",
    "target": "TCP:8080",
    "ports": [
      {"loadbalancer": "HTTP:80", "instance": "HTTP:8080"}
    ]
  },
  "asg": {
    "subnet_purpose": "internal",
    "min_inst": 1,
    "max_inst": 1,
    "scaling_policy": {
        "metric": "CPUUtilization",
        "threshold": 90,
        "period_minutes": 10,
        "statistic": "Average"
        }
  },
  "regions": ["us-east-1"],
  "dns" : {
    "ttl": 120
    }
}

Metadata

Release files for foremast 5.15.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for foremast 5.15.4
File Size Uploaded
foremast-5.15.4.tar.gz 1.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for foremast 5.15.4
File Interpreter ABI Platform
foremast-5.15.4-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 1.6 MB

Release files / foremast-5.15.4.tar.gz

Download URL foremast-5.15.4.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
af3dfd7b84832a6e24b8cd612532220dfa030a5233c4c89478955cc7b739df5c
BLAKE2b-256 checksum
How to use checksums
082aa2d7e855fbb11e0d0bfb549abee12d70d3f25c3b5b1d4dad038004c00bc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.15

Release files / foremast-5.15.4-py2.py3-none-any.whl

Download URL foremast-5.15.4-py2.py3-none-any.whl
Size 258.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e1674dc02e719533774f91bf4fabcbd52f591057381783c09602e7a24ce76501
BLAKE2b-256 checksum
How to use checksums
b20bee05901a7688cd735fad74c5bae8131d9cfd3053604d9d3446fd378ff256
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.15

Release history Release notifications | RSS feed

This release

5.15.4 This release

2 release files

5.15.2

2 release files

5.15.1

2 release files

5.15.0

2 release files

5.14.2

2 release files

5.14.1

2 release files

5.14.0

2 release files

5.12.0

2 release files

5.11.0

1 release file

5.9.0

1 release file

5.8.2

1 release file

5.8.1

1 release file

5.8.0

1 release file

5.7.0

1 release file

5.6.1

1 release file

5.6.0

1 release file

5.5.2

1 release file

5.5.1

1 release file

5.5.0

1 release file

5.4.0

1 release file

5.3.0

1 release file

5.2.9

1 release file

5.2.8

1 release file

5.2.7

1 release file

5.2.6

1 release file

5.2.5

1 release file

5.2.4

1 release file

5.2.3

1 release file

5.2.2

1 release file

5.2.1

1 release file

5.2.0

1 release file

5.1.0

1 release file

5.0.0

1 release file

4.20.0

1 release file

4.19.0

1 release file

4.18.0

1 release file

4.17.1

1 release file

4.17.0

1 release file

4.16.0

1 release file

4.15.1

1 release file

4.15.0

1 release file

4.14.0

1 release file

4.13.1

1 release file

4.13.0

1 release file

4.12.0

1 release file

4.11.2

1 release file

4.11.1

1 release file

4.11.0

1 release file

4.10.2

1 release file

4.10.1

1 release file

4.10.0

1 release file

4.9.5

1 release file

4.9.4

1 release file

4.9.3

1 release file

4.9.2

1 release file

4.9.1

1 release file

4.9.0

1 release file

4.8.3

1 release file

4.8.2

1 release file

4.8.0

1 release file

4.7.0

1 release file

4.6.0

1 release file

4.5.0

1 release file

4.4.1

1 release file

4.4.0

1 release file

4.3.0

1 release file

4.2.2

1 release file

4.2.1

1 release file

4.2.0

1 release file

4.0.0

1 release file

3.58.0

1 release file

3.57.0

1 release file

3.56.1

1 release file

3.56.0

1 release file

3.55.0

1 release file

3.54.0

1 release file

3.53.0

1 release file

3.52.0

1 release file

3.51.7

1 release file

3.51.6

1 release file

3.51.5

1 release file

3.51.4

1 release file

3.51.3

1 release file

3.51.2

1 release file

3.51.1

1 release file

3.51.0

1 release file

3.50.4

1 release file

3.50.3

1 release file

3.50.2

1 release file

3.50.1

1 release file

3.49.0

1 release file

3.46.1

1 release file

3.46.0

1 release file

3.45.1

1 release file

3.45.0

1 release file

3.44.0

1 release file

3.43.0

1 release file

3.42.0

1 release file

3.41.0

1 release file

3.40.2

1 release file

3.40.1

1 release file

3.40.0

1 release file

3.39.0

1 release file

3.38.1

1 release file

3.38.0

1 release file

3.37.1

1 release file

3.37.0

1 release file

3.36.0

1 release file

3.35.0

1 release file

3.34.6

1 release file

3.34.5

1 release file

3.34.4

1 release file

3.34.3

1 release file

3.34.2

1 release file

3.34.1

1 release file

3.34.0

1 release file

3.33.0

1 release file

3.32.0

1 release file

3.31.0

1 release file

3.30.0

1 release file

3.29.0

1 release file

3.28.1

1 release file

3.28.0

1 release file

3.27.0

1 release file

3.26.0

1 release file

3.25.2

1 release file

3.25.1

1 release file

3.25.0

1 release file

3.24.0

1 release file

3.23.1

1 release file

3.23.0

1 release file

3.22.5

1 release file

3.22.4

1 release file

3.22.3

1 release file

3.22.2

1 release file

3.22.1

1 release file

3.21.2

1 release file

3.21.1

1 release file

3.21.0

1 release file

3.20.2

1 release file

3.20.1

1 release file

3.19.3

1 release file

3.19.2

1 release file

3.19.1

1 release file

3.19.0

1 release file

3.18.0

1 release file

3.17.4

1 release file

3.17.3

1 release file

3.17.2

1 release file

3.17.1

1 release file

3.17.0

1 release file

3.16.2

1 release file

3.16.1

1 release file

3.16

1 release file

3.15.1

1 release file

3.15.0

1 release file

3.14.1

1 release file

3.13.1

1 release file

3.13.0

1 release file

3.12.2

1 release file

3.12.1

1 release file

3.12.0

1 release file

3.11.1

1 release file

3.11.0

1 release file

3.10.3

1 release file

3.10.2

1 release file

3.10.1

1 release file

3.10.0

1 release file

3.9.3

1 release file

3.9.2

2 release files

3.9.1

1 release file

3.9.0

1 release file

3.8.1

2 release files

3.8.0

1 release file

3.7.2

1 release file

3.7.1

1 release file

3.7.0

1 release file

3.6.1

1 release file

3.6.0

1 release file

3.5.1

2 release files

3.5.0

1 release file

3.4.1

2 release files

3.4.0

2 release files

3.3.1

2 release files

3.3

1 release file

3.2.0

1 release file

3.1.7

1 release file

3.1.6

1 release file

3.1.5

1 release file

3.1.4

1 release file

3.1.3

1 release file

3.1.2

1 release file

3.1.1

1 release file

3.1.0

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0

1 release file

2.20.1

1 release file

2.20

1 release file

2.19.4

1 release file

2.19.3

1 release file

2.19.2

1 release file

2.19

1 release file

2.18.1

1 release file

2.18

1 release file

2.17a47

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page