terraform-rolling-deploys

by robmorgan

Rolling ASG deployments with Terraform on AWS

128 Stars 44 Forks Last release: Not found 23 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Terraform Rolling Deployment Demo

This is a demo project that accompanies a blog post I wrote. It shows how to use various tools from the Hashicorp stack to achieve rolling deployments on AWS with zero downtime.

The post is here: https://robmorgan.id.au/posts/rolling-deploys-on-aws-using-terraform/

It is based on a concept from Paul Hinze: https://groups.google.com/forum/#!msg/terraform-tool/7Gdhv1OAc80/iNQ93riiLwAJ

Architecture

terraform aws architecture - current architecture

Requirements

You should have the following tools installed:

  • Git
  • Packer (v1.2.3)
  • Terraform (v0.11.7)

Additionally you will need the following environment variables set:

  • AWSACCESSKEY_ID
  • AWSSECRETACCESS_KEY

Usage

  1. Copy your public SSH key to the
    ssh_keys
    directory and update the path in
    key-pairs.tf
    .
  2. Before we create the AWS infrastructure we must first bake a new AMI using Packer. Using the supplied
    Makefile
    , simply run:
$ make bake

When Packer finishes running it will output an AMI ID we need for the next step.

  1. Now we can use Terraform to create the AWS resources:
$ make plan AMI="ami-XXXYYYZZ"
$ make apply AMI="ami-XXXYYYZZ"
  1. Deployment is a case of baking a fresh AMI then re-running Terraform:
$ make bake
$ make plan AMI="ami-XXXYYYZZ"
$ make apply AMI="ami-XXXYYYZZ"

Tests

You can run the included tests using

Terratest
:
$ make test

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.