, 40 tweets, 7 min read
My Authors
Read all threads
So I actually want to talk about this. Let's talk about what we (@HashiCorp and @GCPcloud) accomplished in 2019 with the Terraform provider for Google Cloud Platform.
As a reminder, all of these accomplishments are thanks to the hard work of a number of people, working across HashiCorp and Google Cloud Platform, to bring our users the best experience we can. They deserve all the credit here. I'm just the guy running his mouth.
I'm also not going to be covering the personal life stuff that happened in 2019, not because it didn't impact our work--it did, significantly--but because it is personal.
Also, I will not be covering *everything*. Not all of our accomplishments can make it into this thread. I will assuredly miss something.
So anyways, we started in a rough spot in 2019. We were trying to get the 2.0.0 release of the provider out *and* trying to ship support for 0.12, which wasn't out yet. It was a rough time, and a tricky spot to be in.
The people working on the provider have my undying respect and admiration for the grace, humility, empathy, and pragmatism displayed during that time. It made all the difference. But needless to say, it was a stressful time for everyone involved. We were juggling two branches.
We needed to keep 1.X releases running and keep delivering features, but we also had to keep some foundational and breaking changes up to date alongside it. It was a tricky balancing act. With unclear timelines, things were just... hard.
We had shipped 1.20.0 in December, and after everyone got back from the break, we decided: we were shipping 2.0 without 0.12 support. There were no releases in January as we got everything ready, and in mid-February, we dropped 2.0.0.
2.0.0 had been in prep stages arguably since like June, in high gear since September, and was cleaned up and finalised in January and February. It was a beast. It came with *36* breaking changes, 7 new resources, 2 new dat sources, 29 enhancements, and 20 bug fixes.
The theme for this 2.0.0 was "everything is authoritative now". We shook off the last remnants of the provider's past, and made all the resources set your infrastructure to exactly what was in your config. This was a huge step forward.
We also, super importantly, split the provider in two. Where previously there was only the google provider, with some resources automagically using beta features sometimes, we now had google and google-beta providers, with beta features explicitly opt-in by using google-beta.
This was huge, and unprecedented, and went off basically without a hitch. It's only possible because of Magic Modules (github.com/GoogleCloudPla…), but it's hard to overstate how smoothly this project went given how unprecedented this was for Terraform.
With 2.0.0 out and our branch situation slightly better, we resumed our fortnightly releases. We got one more out in February, then two in March, bringing support for TPU nodes.
April brought us 4 releases, including 2 bug fixes, but most notably: we had 0.12 support, at long last, as of 2.5.0.
May had 2 releases, and brought firestore into GA, sole tenancy nodes, and IAM for subnetworks, compute instances, and dataproc. We also added Megan to our team on HashiCorp's side, making her the first non-me person dedicated to the provider (on our side) full-time.
(It is worth being explicit on that: I, and now Megan, have the provider as our primary responsibility. That does not mean nobody else at HashiCorp contributes to it, it's just exciting that we're big enough now to have two people giving it their full attention.)
(Also, Megan is fantastic.)
June came with three releases, one a bugfix, and brought us support for custom endpoints, allowing the use of the provider on emulators and any server that matched the APIs. We also got support for network endpoint groups.
I can't believe we're already halfway through the decade that was 2019.
(It's also worth pointing out that Google has a group of engineers working on the provider full-time. I don't know all their responsibilities and don't have notes on when people joined, so I won't call them out individually)
(Really, the salient point here is that our team has grown up quite a bit over the course of the last year. I want to say we almost doubled, and our processes matured to reflect that, but don't quote me on that.)
Anyways, back to the releases. July brought 2 releases, including a change to make GKE clusters wait until they could accept work to return, which made it easier to stand up and then provision things onto your GKE cluster with Terraform.
August came with 3 releases, bringing support for Cloud Run, ML Engine, dataproc autoscaling, VPC access connectors, and the Cloud Security Command Center. Whew.
September came with 2 releases, bringing more robust retries on HTTP errors, support for IAM for IAP resources, domain mapping for App Engine, reserving GCE instance capacity, regional health checks, runtime config, and HTTP/2 support in health checks.
October got 3 releases, including a bugfix. We started the 3.0.0 upgrade guide and implemented a bunch of smaller resources. We were at HashiConf, meeting people, and we sat down and planned out what would be in 3.0.0.
LOL I maxed out the tweet thread length lolol
2 more releases in November. We're almost there, fam, the millennia of 2019 is almost behind us. Also: make it rain deprecations, we are full-on in 3.0.0 mode, getting ready to make some breaking changes.
Well, 2 more normal releases in November. Unsatisfied with doing one unprecedented thing in 2019, we insisted on doing two more.
First, we dropped support for Terraform 0.11 and its protocol. New releases would no longer be downloaded by terraform init when run by Terraform 0.11. I know this was unprecedented because I made the changes to our release process to support it.
Second, we shipped a beta. This is the first time a provider has ever shipped a beta that could be downloaded with terraform init. It didn't go exactly to plan, and there are things we fixed and things we're still fixing, but all things considered? Huge progress.
That beta came with over 100 breaking changes. The big theme being reporting errors earlier and disallowing configs that don't make any sense.

And dropping 0.11 support, which really opens us up to do some cool stuff in 2020.
With the beta out of the way, we get to December, which sees the arrival of 3.0.0 proper, a bugfix release backported to 2.20, and 3 more releases. Yes, I said three more. For those of you counting along at home, that's *five* releases in December.
You see, once 3.0.0 was out, we moved to a weekly release cadence, bringing you more GCP/Terraform goodness more regularly. And oh boy is there goodness to bring!
In December, which remember is less than three weeks old at this point, we've brought support for billing budgets, tasks queues, audit config IAM policies for organizations, IAM for cloud run services, and deployment manager. Along with a slew of enhancements and bug fixes.
And that's just the user-visible changes. We had a great year of process changes, including generating our changelog (a Terraform first, I believe), reorganizing ourselves around sprints, and having more team structure.
We also added a semi-dedicated product manager on HashiCorp's side who managed us and a couple other providers, meaning we got some more input and product management direction this year from HashiCorp, a trend I'm excited to see increase next year.
It's hard to overstate how much the team behind this provider, spanning two companies, has scaled and evolved in the last year. I'm super proud of everyone involved, and they have my deepest gratitude. They're really great folks to work with.
I've avoided tagging anyone in this thread because I don't think everyone's on Twitter and don't want to leave anyone out, and because the threading UX is horrible and I didn't want to send them all dozens of notifications.
But the GCP Provider team I work on at HashiCorp, our broader Providers team, & the #Terraform org as a whole are all superb, and I'm grateful for their support this year. & the @GCPCloud graphite team are amazing engineers and great friends, and I'm lucky to call them partners.
Here's to everything we accomplished in 2019, and I can't wait to see what we can do in 2020.

Happy Terraforming.
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Paddy

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!