https://pulumi.com logo
#general
Title
# general
m

microscopic-afternoon-22702

05/31/2023, 4:52 PM
Hello, What would be the general process for creating a public provider that would be converted to all supported languages. For example, https://www.pulumi.com/registry/packages/cloudflare/ If I also wanted a public registry, how would one do this? Should I make terraform a provider first? Can I do this purely in TS and generate the provider for other languages?
l

limited-rainbow-51650

05/31/2023, 6:38 PM
@microscopic-afternoon-22702 No, dynamic providers are too limited for what you are after. You want to build a native package, implement each resource of your provider once, have a corresponding Pulumi schema file and generate the different language SDKs from it. Technically, providers (with individual resources) are not much different from multi-language components. Therefor, I'll point you to the blog article on that as a first read. An example of a package written in Typescript is our Pulumi's own AWSX package. We build this into a native binary using vercel/pkg, a tool which can bundle a Node application into a single binary. See the Makefile for the build instruction. Now, if there is already an existing Terraform provider for the technology that you want to enable in Pulumi, you can bridge that provider so it becomes a Pulumi provider. Hope this gives you some starting info. I invite you to join the #package-authoring channel if you have more questions.
m

microscopic-afternoon-22702

05/31/2023, 8:09 PM
Now, if there is already an existing Terraform provider for the technology that you want to enable in Pulumi, you can bridge that provider so it becomes a Pulumi provider.
Is this covered the doc? It is!! 🙂