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. 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. Community collaboration drives growth: The contributions from other developers significantly improved the provider, adding features I hadn’t originally envisioned.
- 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.