/quoins

Building blocks for an immutable infrastructure.

Primary LanguageHCLMIT LicenseMIT

Scipian Quoins

Quoins are a set of Terraform modules used as building blocks for an immutable infrastructure. We carefully curated a set of sane defaults for configuring a provider's environment, but also allows you to fully customize it.

Quoin's are best described as cornerstone's for a building. They provide load bearing support to a wall.

Currently, the quoins only support AWS. The available quoins:

  • A network with an internet gateway
  • External & internal network layout including NAT gateways
  • Some default security groups for SSH and Windows Remoting
  • A key pair
  • A bastion jump host
  • An external elastic load balancer
  • A Kubernetes cluster

Requirements

Before we run through the quickstart, there's a few requirements:

Quickstart

Disclaimer: To run the quoins, you'll need AWS access and terraform installed. See requirements.

Quoins are designed to be modular and the easiest way to get started is to compose a terraform definition that picks the modules you need. Each module is a building block that can be used separately to create your immutable infrastructure.

Let's compose a configuration that uses the network module:

module "network" {
  source   = "github.com/scipian/quoins//network"
  cidr     = "172.16.0.0/16"
  name     = "prod-us-network"
}

provider "aws" {
  region      = "us-west-2"
  max_retries = 3
}

Since we're using a configuration that uses a module, prior to running any commands such as plan or apply, we have to get the modules. This is done using the get command:

$ terraform get -update=true

To stage the changeset, let's run the plan command:

$ terraform plan -out=plan.bin

To apply the changeset, let's run the apply command:

$ terraform apply plan.bin

License

Released under the MIT License. See LICENSE for more information.