Provisioner and Provider in C#/.NET

Hey there, I wanted to check how viable it would be to extend terraform by writing the plugin in a different language (which should be possible accoding to the docs).
And in fact I managed to get a working POC running here:
What I noticed is that I found no documentation how trust (TLS) is established between the host and the plugin, and in particular, which certificates should be used.
When I use a trusted certificate everything works, but this is not so easy on other machines.

Now my questions:

  • Is there public documentation regarding this?
  • Is there a place in the source code I overlooked?
  • If both questions are a “no”: Is this basically a showstopper for plugin development in other languages?

Thanks for the help :slight_smile:

Hey @matthid! Welcome :slight_smile:

I’ve talked about this a bit already, but it is technically possible but unsupported and discouraged to write a provider in another language at this time. As you’ve noted, our documentation around how to build an SDK doesn’t make the process easy at this point. I can think of at least 3 Go-specific libraries that would need to be reimplemented beyond the SDK itself.

At this time we’re focused on improving our developer experience for developing providers in Go, so while we’re not closing the door on developing providers in other languages and it’s something at the back of our minds, we aren’t actively working on that experience right now. It’s possible to do, but it means venturing off the beaten path and that you won’t find many resources or much support for it.

Hi @paddy, completely understandable.
If none of the members, I hoped at least someone from the community could point me into the correct direction for this very specific narrow question. To clarify: I just want to understand if this is a showstopper to continue with the POC.

I agree that everything else (building the APIs, and providing a good developer experience, …) seems to be “just” a lot of work. I’m not asking for support there. I have a very specific use-case in mind anyway, and I’m happy to read any link or source code somebody throws at me :).

@matthid Did anything come of this?

@brettjacobson From the reply I assumed it is not really welcome to go down this path. In the end I found a different solution for my particular problem.