Skip to content

Instantly share code, notes, and snippets.

View tom-butler's full-sized avatar
🚵

tom-butler tom-butler

🚵
View GitHub Profile
@tom-butler
tom-butler / deploy.sh
Last active October 26, 2018 04:56
Terraform-Kops-pipeline
#!/bin/bash
set -e
echo "deploying $1"
rm -rf .terraform
# Deploy Network Infrastructure
export WORKSPACE=$1
terraform init -backend-config workspaces/$WORKSPACE/backend.cfg

05-06-19 - MDBA WMS Complete Outage Postmortem

Meeting

Waiving meetings

In some cases the IC might determine that a PM meeting for the incident isn't needed. If the IC decides to waive the meeting please replace the Meeting section with a note indicating the meeting has been waived (example: Meeting waived: Paul Mooring)

@tom-butler
tom-butler / .bashrc
Last active March 27, 2018 05:35
aws-vault
## aws vault
# use login keychain for longer sessions
AWS_VAULT_KEYCHAIN_NAME=login
# call ap to change profile
function ap { export AWS_PROFILE="$@"; }
export AWS_PROFILE="default"
# make aws-vault easier to use
@tom-butler
tom-butler / build.json
Created February 1, 2018 04:02
Get latest AMI from ubuntu
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*",
"root-device-type": "ebs"
},
"owners": ["099720109477"],
"most_recent": true
},
@tom-butler
tom-butler / switch.sh
Created December 20, 2017 01:30
blue / green switch.sh
export zone_name="app.com."
export address="staging.app.com."
zoneid=$(aws route53 list-hosted-zones | jq -r '.HostedZones[] | select(.Name == env.zone_name) | .Id')
staging=$(aws route53 list-resource-record-sets --hosted-zone-id "$zoneid" | jq -r '.ResourceRecordSets[] | select(.Name == env.address) | select(.AliasTarget.DNSName != null) | .AliasTarget.DNSName | split(".") | first')
if [ -z "$staging" ];then
echo "Error: Could not accurately determine staging"
exit 1
fi
@tom-butler
tom-butler / update.sh
Created December 20, 2017 01:26
blue / green update.sh
export zone_name="app.com."
export address="staging.app.com."
zoneid=$(aws route53 list-hosted-zones | jq -r '.HostedZones[] | select(.Name == env.zone_name) | .Id')
staging=$(aws route53 list-resource-record-sets --hosted-zone-id "$zoneid" | jq -r '.ResourceRecordSets[] | select(.Name == env.address) | select(.AliasTarget.DNSName != null) | .AliasTarget.DNSName | split(".") | first')
if [ -z "$staging" ];then
echo "Error: Could not accurately determine staging"
exit 1
fi
echo "$staging is staging"
@tom-butler
tom-butler / init.sh
Last active December 20, 2017 01:21
blue/green init.sh
export REGION=ap-southeast-2
export TF_VAR_application=app
export TF_VAR_environment=dev
export STATE_BUCKET=app-name-$TF_VAR_environment
export STATE_TABLE=terraform-state-lock
pushd stack
export TF_VAR_stack=blue
terraform init \
-backend-config "bucket=$STATE_BUCKET" \
@tom-butler
tom-butler / stack-record.tf
Created December 20, 2017 01:02
blue/green stack-record.tf
# Find your route53 zone
data "aws_route53_zone" "selected" {
name = "app.com."
}
# Create a record in that zone and point it at our ELB
resource "aws_route53_record" "elb" {
zone_id = "${data.aws_route53_zone.selected.zone_id}"
name = "${var.stack}"
type = "A"
@tom-butler
tom-butler / tags.tf
Created December 20, 2017 00:59
blue/green tags.tf
tags {
Name = "${local.name_tag_prefix}-elb"
}
@tom-butler
tom-butler / locals.tf
Created December 20, 2017 00:57
blue/green locals.tf
#--------------------------------------------------------------
# Locals
#--------------------------------------------------------------
# Locals can be used to combine variables and make them easier
# to reference
locals {
name_tag_prefix = "${var.environment}-${var.stack}-${var.application}"
}