Posted on 6.11.2024

From side project to professional tool: The story behind UpCloud’s Terraform Provider

Dive into the story behind UpCloud’s Terraform Provider with Ville Vesilehto, Lead Product Manager at UpCloud. Grab a coffee and get reading!

As someone who’s been involved with the UpCloud Terraform Provider from its inception to its current state, I want to share the journey of how a weekend project evolved into an essential tool for infrastructure automation. It’s a story that demonstrates the power of open source collaboration and the impact of well-designed SDKs.

The grassroots beginning

In 2017, I was heavily using HashiCorp’s Terraform with other cloud providers in my daily work, enjoying the benefits of infrastructure as code. However, when it came to UpCloud, I couldn’t leverage the same automated workflows I had grown accustomed to. Rather than maintain different processes for different providers, I decided to bridge this gap myself.

With the SDK handling the heavy lifting of API interactions, I could focus on mapping UpCloud’s cloud resources to Terraform resource schemas. I published the provider on my personal GitHub account, hoping it would help others automate their infrastructure deployment on UpCloud.

From community project to official solution

By mid-2018, the project had attracted attention from other developers who started contributing their own improvements. These contributions ranged from bug fixes to new features, showing that the provider was filling a real need in the community.

Seeing this growing adoption, UpCloud reached out about making the provider an official part of their developer tooling ecosystem. The company could provide resources and support while maintaining the open source nature of the project. They kept me involved with maintainer permissions, recognising the importance of continuity and community involvement.

The team then invested in expanding the ecosystem around the provider. While the original Go SDK had served us well, they developed a new, more comprehensive version that would serve as a foundation not just for the Terraform provider, but for a whole suite of developer tools. This reinforced my initial experience – a powerful SDK is a multiplier for developer productivity and innovation.

Coming full circle

In early 2021, my relationship with the project evolved in an unexpected way when I joined UpCloud as the Product Owner for the Developer Experience team. Now I found myself leading the development of the same tool I had started as a side project, along with other developer-facing tools and SDKs.

This transition gave me a unique perspective on both sides of the developer experience equation. As someone who had built tools using UpCloud’s SDK as an external developer, I understood firsthand the importance of well-designed APIs and comprehensive documentation. This experience continues to inform our approach to developer tooling.

Lessons learned

Looking back, several key insights stand out:

  1. 1. Good SDKs enable innovation: The availability of UpCloud’s initial Go SDK made it possible for me to create the Terraform provider. This has shaped our strategy of investing in robust SDKs to empower developers.
  2. 2. Community collaboration drives growth: The contributions from other developers significantly improved the provider, adding features I hadn’t originally envisioned.
  3. 3. Developer experience matters: Making it easy for developers to build on your platform creates a virtuous cycle of innovation and improvement.

Looking forward

Today, I have the privilege of working with a talented team to continue evolving the UpCloud Terraform Provider and our entire developer tooling ecosystem. We’re building on the foundation of those early days, maintaining the open source approach while ensuring professional support and reliability.

The SDK that made the initial provider possible has evolved into an even more powerful tool, enabling new generations of developers to build innovative solutions on top of UpCloud. We’re seeing history repeat itself as developers use our SDKs to create their own tools and integrations, just as I did back in 2017.

For those interested in contributing to or using the provider, you can find it in the official HashiCorp Terraform Registry and on project repository in GitHub. We continue to welcome community contributions, not only for our Terraform provider, but also Go SDK, UpCloud CLI, Crossplane Provider and many others, staying true to the open source principles that started this journey.

Ville Vesilehto

Lead Product Manager

Terraform best practices for beginners

Getting started with Terraform takes some effort to read the documentation. To give you a head start, we've compiled a quick list of Terraform best practices.

Long reads

UpCloud becomes verified Terraform provider along with major update

Terraform is a popular open-source software tool created by HashiCorp. Terraform allows users to define infrastructure-as-code using a simple, human-readable language. It enables you to take full control of your cloud infrastructure using declarative configuration files to manage services and resources. The UpCloud Terraform provider module integrates our infrastructure with Terraform and has been available […]

Announcements

Open Source

Product Updates

UpCloud’s development roadmap: What to look forward to in 2021

The year has turned, and UpCloud welcomes you to 2021, ready again to show you what the best cloud infrastructure can offer for your business. The last year has proven the capabilities of our brand, products and most importantly, the strength of our teams. We’ve been happy to see many new users coming and staying […]

Announcements

Vision and culture

Back to top