Running your own local GoDoc server using systemd

The Go Programming Language has a lovely documentation system. All "exported" functions and types have Docstring type comments: // Rectangle type represents the geometric shape known as a rectangle type Rectangle struct { Length float64 Width float64 } The godoc tools understand these and can be used to navigate package documentation. Official Go…

Using aws-vault with Linux

There are lots of purported "best practices" out there on the internet regarding AWS API keypairs. In this author's opinion, the term best practices is in many cases either a dubious claim or a concept that isn't actually real, since "best" is often subjective or situation dependent. However, with regard…

Autoscaling etcd using SRV discovery on AWS

Acknowledgements Thanks to John 'retr0h' Dewey for releasing the ansible role I borrowed from extensively to make this happen. Also thanks to Kelsey 'kelseyhightower' Hightower for the SetupNetworkEnvironment tool and for generally being a heroic individual in the kubernetes community. Motivation Just over a year ago, I took my first…

A Practical Guide to deploying Netflix's BLESS Certificate Authority

Note on KMS Keys: A helpful reader, JeremyStott, rightly pointed out that I used the same KMS key to encrypt and read my CA as I directed users to use for encrypting their KMSauth token. This is a really bad idea, learn from my mistake! Foreword: Special thanks are due…

YAML in Go: Parsing nested yaml using the ghodss/yaml library

The intent of this article is to shed light on something that, as a newcomer to Golang and a programmer falling somewhere between beginner and intermediate in general, I found very confusing. I refer of course to the titular subject, parsing Yaml for use in a Go application. My need…

AWS CodePipeline - CI, the Amazon Way

I recently began work on an application, written in Golang, that is ultimately intended to replace our MongoDB cluster backup solution. I, being the curious type, decided to try out a few AWS services that I'd never used before. My objective was to setup a simple three stage pipeline -…

Rancher - Creating a highly available container orchestration cluster on AWS

Note: In these examples I'm naming the project/org tastycidr, but this was a project done at work...aka not tastycidr.net Approximately a year ago, my organisation began development of a new platform based on a containerised microservices architecture. For us, it was uncharted territory - while some of…

Ansible Tower, Autoscaling and recycled IPs: a short treatise on cleaning up after yourself.

My organization's EC2 inventory is highly dynamic in nature. Our requirements vary considerably depending on the time of day, as well as, to a lesser degree, day of the week. As a result, we have a mixture of scaling policies based on schedules and based on performance or load metrics.…

MongoDB backups at scale - how one Ops guy got his "daily" backup job to run in under 24 hours.

There's more than one way to deal with dumping a lot of databases with slow tools. Awhile back, I wrote another article outlining how my organization handles cluster-wide backup and restore of our MongoDB clusters. The tool/methodology we use is great for quickly backing up, and more importantly, quickly…

Configuring a minimal LXD image for use with Ansible

I recently decided to spend some time tinkering with LXD. My organisation already uses Docker containers for certain services in production, but they do not address every use case. I wanted something lightweight that would behave more like a traditional instance for use in testing. Our automation tool of choice…