Need help with terraform-rolling-deploys?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

robmorgan
127 Stars 44 Forks 23 Commits 0 Opened issues

Description

Rolling ASG deployments with Terraform on AWS

Services available

!
?

Need anything else?

Contributors list

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.