All Projects → chanzuckerberg → Fogg

chanzuckerberg / Fogg

Licence: mit
Manage Infrastructure as Code with less pain.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Fogg

Toc
A Table of Contents of all Gruntwork Code
Stars: ✭ 111 (-38.67%)
Mutual labels:  terraform, infrastructure-as-code, infrastructure
Terraform Aws Landing Zone
Terraform Module for AWS Landing Zone
Stars: ✭ 142 (-21.55%)
Mutual labels:  terraform, infrastructure-as-code, infrastructure
Terrible
An Ansible playbook that apply the principle of the Infrastructure as Code on a QEMU/KVM environment.
Stars: ✭ 161 (-11.05%)
Mutual labels:  terraform, infrastructure-as-code, infrastructure
Terraform With Circleci Example
This is an example of automatic deployments of your infrastructure using terraform and CircleCI 2.0 workflows
Stars: ✭ 142 (-21.55%)
Mutual labels:  terraform, infrastructure-as-code, infrastructure
Terrascan
Detect compliance and security violations across Infrastructure as Code to mitigate risk before provisioning cloud native infrastructure.
Stars: ✭ 2,687 (+1384.53%)
Mutual labels:  terraform, infrastructure-as-code, infrastructure
Mikado
🤖💨Mikado helps managing your AWS infrastructure for WordPress sites by defining an out-of-box, highly available, easy-to-deploy setup
Stars: ✭ 80 (-55.8%)
Mutual labels:  terraform, infrastructure
Terraformize
Apply\Destory Terraform modules via a simple REST API endpoint.
Stars: ✭ 84 (-53.59%)
Mutual labels:  terraform, infrastructure-as-code
Terraform Multienv
A template for maintaining a multiple environments infrastructure with Terraform. This template includes a CI/CD process, that applies the infrastructure in an AWS account.
Stars: ✭ 107 (-40.88%)
Mutual labels:  terraform, infrastructure
Terraform Aws Asg
Terraform AWS Auto Scaling Stack
Stars: ✭ 58 (-67.96%)
Mutual labels:  terraform, infrastructure-as-code
Terraform
Terraform automation for Cloud
Stars: ✭ 121 (-33.15%)
Mutual labels:  terraform, infrastructure-as-code
Awesome Terraform
Curated list of resources on HashiCorp's Terraform
Stars: ✭ 2,618 (+1346.41%)
Mutual labels:  terraform, infrastructure-as-code
Terrahub
Terraform Automation and Orchestration Tool (Open Source)
Stars: ✭ 148 (-18.23%)
Mutual labels:  terraform, infrastructure
Pulumi Aws
An Amazon Web Services (AWS) Pulumi resource package, providing multi-language access to AWS
Stars: ✭ 169 (-6.63%)
Mutual labels:  infrastructure-as-code, infrastructure
Terraboard
🌍 📋 A web dashboard to inspect Terraform States
Stars: ✭ 1,192 (+558.56%)
Mutual labels:  terraform, infrastructure-as-code
Buildpipeline
AWS-powered serverless build, test and deploy pipeline ft. multiple environments
Stars: ✭ 105 (-41.99%)
Mutual labels:  terraform, infrastructure
Cintodeutilidadesdocker
My Docker templates repository 🐳 ☁️ 🐳
Stars: ✭ 74 (-59.12%)
Mutual labels:  infrastructure-as-code, infrastructure
Lambda The Terraform Way
AWS Lambda using Terraform., an Introductory Cookbook
Stars: ✭ 1,056 (+483.43%)
Mutual labels:  terraform, infrastructure-as-code
Tau
Tau is a thin wrapper on top of terraform to manage multiple deployments, dependencies and secrets.
Stars: ✭ 53 (-70.72%)
Mutual labels:  terraform, infrastructure-as-code
Cluster.dev
Kubernetes-based Dev Environments with GitOps
Stars: ✭ 122 (-32.6%)
Mutual labels:  terraform, infrastructure-as-code
Infrastructure As Code Tutorial
Infrastructure As Code Tutorial. Covers Packer, Terraform, Ansible, Vagrant, Docker, Docker Compose, Kubernetes
Stars: ✭ 1,954 (+979.56%)
Mutual labels:  terraform, infrastructure-as-code

fogg

.github/workflows/build.yml

Please note: If you believe you have found a security issue, please responsibly disclose by contacting us at [email protected].


Visit the fogg documentation for more details: https://chanzuckerberg.github.io/fogg/

Fogg is an opinionated tool for managing infrastructure-as-code repositories using Terraform.

Terraform is a powerful tool for managing infrastructure– great when things go right, but dangerous when they don't. Best practices are emerging for reducing this risk, but they require significant work and knowledge to apply consistently.

We built fogg to automate these practices and scale to a larger pool of engineers who don't have to be terraform experts to use it safely.

A few of the things fogg standardizes–

  • repository layout
  • remote state
  • resource naming
  • resource isolation

It makes life easy for folks working with cloud infrastructure. We've been using fogg and its predecessor internally at CZI for ~10 months. It has made it possible for many developers without terraform experience to safely roll new infrastructure with less stress and higher quality.

"I hope one day you might consider open sourcing fogg, i really love it. This would have saved me so much time in the past." - @lenn0x

Getting Help

If you need help getting started with fogg, either open a github issue or join our gitter chat room.

Install

Mac

You can use homebrew to install fogg –

brew tap chanzuckerberg/tap
brew install fogg

Note– if you installed fogg from homebrew before version 0.15.0, the tap location has changed. Run this, then install as above–

brew uninstall fogg
brew untap chanzuckerberg/fogg

Linux

Binaries are available on the releases page. Download one for your architecture, put it in your path and make it executable.

Instructions on downloading the binary:

  1. Go here: https://github.com/chanzuckerberg/fogg/releases to find which version of fogg you want.
  2. Run curl -s https://raw.githubusercontent.com/chanzuckerberg/fogg/master/download.sh | bash -s -- -b FOGG_PATH VERSION
    1. FOGG_PATH is the directory where you want to install fogg
    2. VERSION is the release you want
  3. To verify you installed the desired version, you can run fogg version.

Usage

Fogg works entirely by generating code (terraform and make). It will generate directories and files to organize and standardize your repo and then it gets out of your way for you to use terraform and make to manage your infrastructure.

The basic workflow is –

  1. update fogg.yml
  2. run fogg apply to code generate
  3. use the generated Makefiles to run your Terraform commands

Enabling shell autocompletion

bash

Linux shell autocompletion
# Might need to install bash-completion on CentOS
yum install bash-completion
# install completion
echo "source <(fogg completion bash)" >> ~/.bashrc
Mac shell autocompletion
## If running Bash 3.2 included with macOS
brew install bash-completion
## or, if running Bash 4.1+
brew install [email protected]

# install completion
fogg completion bash > $(brew --prefix)/etc/bash_completion.d/fogg

zsh

You can add the file generated by fogg completion zsh to a directory in your $fpath.

Design Principles

Convention over Configuration

Much like Ruby on Rails, we prefer to use conventions to organize our repos rather than a plethora of configuration. Our opinions might not be exactly the way you would do things, but our hope is that be having a set of clear opinions that are thoroughly applied will be productive.

Transparency

Fogg tries to stay out of your way– it will do its work by generating Terraform and Make files, and then it step aside for you to manage your infrastructure. Everything that could effect your infrastructure is right there in your repository for you to read and understand.

There is no magic.

And if you ever decide to stop using it, you have a working repo you can take in a different direction, just stop running fogg apply and go your own way.

Releasing

The release process is mostly automated but has some rough edges. To run a release follow these steps

  1. you are running docker
  2. you have access to write to chanzuckerberg/homebrew-tap
  3. ensure that you have a GITHUB_TOKEN environment variable set that has permissions to do releases on this project
  4. run git clean -fdx
  5. you have run make setup
  6. run make release

Contributing

We use standard go tools + makefiles to build fogg. Getting started should be as simple as-

  1. install go
  2. $ go get github.com/chanzuckerberg/fogg
  3. cd $GOPATH/src/github.com/chanzuckerberg/fogg
  4. make setup && make

If you would like to contribute some code: Read through the documents located in the /docs folder, fork this repo, and send a pull request.

Copyright

Copyright 2017-2021, Chan Zuckerberg Initiative, LLC

For license, see LICENSE.

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].