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
Before we run through the quickstart, there's a few requirements:
- Download and install terraform
- An AWS account
- Locally configured AWS credentials
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
Released under the MIT License. See LICENSE for more information.