Tools for creating infrastructure and Spinnaker Pipelines.
Project description
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.
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
}
}
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
Built Distribution
File details
Details for the file foremast-5.15.4.tar.gz
.
File metadata
- Download URL: foremast-5.15.4.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | af3dfd7b84832a6e24b8cd612532220dfa030a5233c4c89478955cc7b739df5c |
|
MD5 | b4e580aae91732c1432e6350beed87a2 |
|
BLAKE2b-256 | 082aa2d7e855fbb11e0d0bfb549abee12d70d3f25c3b5b1d4dad038004c00bc8 |
File details
Details for the file foremast-5.15.4-py2.py3-none-any.whl
.
File metadata
- Download URL: foremast-5.15.4-py2.py3-none-any.whl
- Upload date:
- Size: 258.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1674dc02e719533774f91bf4fabcbd52f591057381783c09602e7a24ce76501 |
|
MD5 | 516ad388d05d7c4ffc2b423ce77e5c12 |
|
BLAKE2b-256 | b20bee05901a7688cd735fad74c5bae8131d9cfd3053604d9d3446fd378ff256 |