Adding my Provider to the Terraform Provider Registry

I’ve blogged previously about my tinkering with my own Terraform provider for fetching external IPs One of the more fiddly parts I found when using a custom provider is how to use it with the rest of your Terraform code. You could either bundle it with terraform-bundle, or add it as git submodules to the repo you run your code in. Neither are particularly ideal, as you’re either having to create a new bundle every time a new release occurs or have to wrangle with git submodules and increase the site of your code repository by containing binaries. ...

September 17, 2020 · 11 min · Peter Souter

S3 Download Progress Bar in Golang

S3 Download Progress Bar in Golang Through a series of yak-shaves, I ended up needing to be able to do an S3 download on a machine without python on it, so I couldn’t install the AWS CLI. However, it could run a pre-compiled binary of something, which is easy to generate in Golang. I was still tinkering around with Cobra and CLI apps, so I thought… how hard can it be? ...

March 7, 2019 · 6 min · Peter Souter

Testing and mocking stdin in Golang

Testing and mocking stdin in Golang I’ve been playing around with cobra recently, as it’s an awesome library for CLI applications. I always like CLI apps for learning a language, so I’ve been tinkering with a CLI app to interact with Terraform Enterprise’s API, which will force me to talking to external APIs, interpret the result and displaying it to the user. Testing, testing, 123 I want can show my application is tested and reliable. That’s meant I’ve been learning how to test golang. I’m used to Ruby, which has some awesome tools (Mocha, Rspec, Stubbing, Webmock etc). It’s possible to recreate that sort of experience in Golang, with tools like ginko, goconvey or golblin, but since we want to do things “The Golang way” I decided to try and stick to the most vanilla testing possible. ...

January 13, 2019 · 11 min · Peter Souter

Writing and playing with custom Terraform Providers

Writing and playing with custom Terraform Providers I’ve been digging deeper on Terraform. It’s something I’ve tinkered with in the past, but I’ve not really sat down to really use it in anger and try and tie a large project together. So, I picked something that I recently was doing manually: the configuration of a demo of Vault with the GCP backend. Right now I was doing most of the steps for that manually, and I wanted to automate the entire process, and have a fully reproducible demo environment created in GCP. That’s a larger project I’m going to blog about later, but for now I’m going to concentrate on one thing that came up that led me down a rabbit whole of creating a provider. ...

July 1, 2018 · 8 min · Peter Souter