All Projects → foremast → Foremast

foremast / Foremast

Licence: apache-2.0
Spinnaker Pipeline/Infrastructure Configuration and Templating Tool - Pipelines as Code.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Foremast

Checkov
Prevent cloud misconfigurations during build-time for Terraform, Cloudformation, Kubernetes, Serverless framework and other infrastructure-as-code-languages with Checkov by Bridgecrew.
Stars: ✭ 3,572 (+1258.17%)
Mutual labels:  aws, gcp, hacktoberfest, devops
My Links
Knowledge seeks no man
Stars: ✭ 311 (+18.25%)
Mutual labels:  aws, gcp, devops
Devops Python Tools
80+ DevOps & Data CLI Tools - AWS, GCP, GCF Python Cloud Function, Log Anonymizer, Spark, Hadoop, HBase, Hive, Impala, Linux, Docker, Spark Data Converters & Validators (Avro/Parquet/JSON/CSV/INI/XML/YAML), Travis CI, AWS CloudFormation, Elasticsearch, Solr etc.
Stars: ✭ 406 (+54.37%)
Mutual labels:  aws, gcp, devops
Terratag
Terratag is a CLI tool that enables users of Terraform to automatically create and maintain tags across their entire set of AWS, Azure, and GCP resources
Stars: ✭ 385 (+46.39%)
Mutual labels:  aws, gcp, devops
Inertia
✈️ Effortless, self-hosted continuous deployment for small teams and projects
Stars: ✭ 133 (-49.43%)
Mutual labels:  aws, hacktoberfest, devops
Opshell
DevOps Toolkit for Every Cloud on Every Cloud
Stars: ✭ 19 (-92.78%)
Mutual labels:  aws, gcp, devops
Devops Bash Tools
550+ DevOps Bash Scripts - AWS, GCP, Kubernetes, Kafka, Docker, APIs, Hadoop, SQL, PostgreSQL, MySQL, Hive, Impala, Travis CI, Jenkins, Concourse, GitHub, GitLab, BitBucket, Azure DevOps, TeamCity, Spotify, MP3, LDAP, Code/Build Linting, pkg mgmt for Linux, Mac, Python, Perl, Ruby, NodeJS, Golang, Advanced dotfiles: .bashrc, .vimrc, .gitconfig, .screenrc, .tmux.conf, .psqlrc ...
Stars: ✭ 226 (-14.07%)
Mutual labels:  aws, gcp, devops
Terracognita
Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration
Stars: ✭ 452 (+71.86%)
Mutual labels:  aws, gcp, devops
Porter
Kubernetes powered PaaS that runs in your own cloud.
Stars: ✭ 498 (+89.35%)
Mutual labels:  aws, gcp, devops
Sceptre
Build better AWS infrastructure
Stars: ✭ 1,160 (+341.06%)
Mutual labels:  aws, hacktoberfest, devops
Externalsecret Operator
An operator to fetch secrets from cloud services and inject them in Kubernetes
Stars: ✭ 177 (-32.7%)
Mutual labels:  aws, gcp, hacktoberfest
Iamy
A cli tool for importing and exporting AWS IAM configuration to YAML files
Stars: ✭ 200 (-23.95%)
Mutual labels:  aws, devops
Lyra
Open Source Workflow Engine for Cloud Native Infrastructure
Stars: ✭ 203 (-22.81%)
Mutual labels:  aws, gcp
Drone Cache
A Drone plugin for caching current workspace files between builds to reduce your build times
Stars: ✭ 194 (-26.24%)
Mutual labels:  aws, hacktoberfest
Kcli
Management tool for libvirt/aws/gcp/kubevirt/openstack/ovirt/vsphere/packet
Stars: ✭ 219 (-16.73%)
Mutual labels:  aws, gcp
Tfsec
Security scanner for your Terraform code
Stars: ✭ 3,622 (+1277.19%)
Mutual labels:  aws, hacktoberfest
Aws To Slack
Forward AWS CloudWatch Alarms and other notifications from Amazon SNS to Slack.
Stars: ✭ 261 (-0.76%)
Mutual labels:  aws, devops
Kubestriker
A Blazing fast Security Auditing tool for Kubernetes
Stars: ✭ 213 (-19.01%)
Mutual labels:  aws, devops
Opencspm
Open Cloud Security Posture Management Engine
Stars: ✭ 191 (-27.38%)
Mutual labels:  aws, gcp
Azure arc
Automated Azure Arc environments
Stars: ✭ 224 (-14.83%)
Mutual labels:  aws, gcp

Spinnaker Foremast

.. image:: https://travis-ci.org/foremast/foremast.svg?branch=master :target: https://travis-ci.org/foremast/foremast

.. image:: https://badges.gitter.im/gogoair/foremast.svg :alt: Join the chat at https://gitter.im/gogoair/foremast :target: https://gitter.im/gogoair/foremast?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

.. image:: https://badge.fury.io/py/foremast.svg :target: https://badge.fury.io/py/foremast

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.

.. image:: https://s3.amazonaws.com/gogo-oss-logos/Foremast/Foremast+Logo-text-300.png :align: center

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.

.. code-block:: bash

   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

.. code-block:: bash

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.

.. code-block:: bash

    [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

.. code-block:: json

{
    "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.

.. code-block:: json

{
    "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

.. code-block:: json

{
  "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
    }
}

.. _Foremast templates: https://github.com/foremast/foremast-template-examples/ .. _quick start guide: http://foremast.readthedocs.io/en/latest/getting_started.html#quick-start-guide .. _automate spinnaker pipeline creation: https://tech.gogoair.com/foremast-automate-spinnaker-pipeline-creation-2b2aa7b2c5e4#.qplfw19cg .. _Read the Docs: http://foremast.readthedocs.io/en/latest/ .. _contribution guide: http://foremast.readthedocs.io/en/latest/CONTRIBUTING.html .. _Gitter: https://gitter.im/gogoair/foremast .. _pipeline.json: http://foremast.readthedocs.io/en/latest/configuration_files/pipeline_json/index.html .. _application.json: http://foremast.readthedocs.io/en/latest/configuration_files/application_json.html

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].