Terraform Bridge
Use the DevZero Terraform provider through Pulumi for Go and other unsupported languages.
Terraform Bridge
This is a fallback for languages without native provider support. For TypeScript and Python, use the native Pulumi provider instead.
Pulumi can wrap any Terraform provider via pulumi package add, generating SDK bindings from the Terraform provider schema. This lets you use the DevZero Terraform provider from Go, Java, C#, or any other Pulumi-supported language.
Setup
Add the DevZero Terraform provider and the cluster module to your Pulumi project:
pulumi package add terraform-provider devzero-inc/devzero
pulumi package add terraform-module devzero-inc/cluster/devzero devzero-clusterThis generates language-specific SDK packages in your project directory.
Example
package main
import (
devzerocluster "github.com/pulumi/pulumi-terraform-module/sdks/go/devzero-cluster/devzero-cluster"
"github.com/pulumi/pulumi-terraform-provider/sdks/go/devzero/devzero"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
devzeroProvider, err := devzero.NewProvider(ctx, "devzero", &devzero.ProviderArgs{})
if err != nil {
return err
}
clusterProvider, err := devzerocluster.NewProvider(ctx, "devzero-cluster", &devzerocluster.ProviderArgs{
Helm: pulumi.Map{
"kubernetes": pulumi.Map{
"config_path": pulumi.String("~/.kube/config"),
},
},
})
if err != nil {
return err
}
cluster, err := devzerocluster.NewModule(ctx, "cluster", &devzerocluster.ModuleArgs{
Cluster_name: pulumi.String("pulumi-cluster"),
}, pulumi.Provider(clusterProvider))
if err != nil {
return err
}
workloadPolicy, err := devzero.NewWorkloadPolicy(ctx, "workload-policy", &devzero.WorkloadPolicyArgs{
Name: pulumi.String("pulumi-workload-policy"),
}, pulumi.Provider(devzeroProvider))
if err != nil {
return err
}
_, err = devzero.NewWorkloadPolicyTarget(ctx, "workload-policy-target", &devzero.WorkloadPolicyTargetArgs{
Name: pulumi.String("pulumi-workload-policy-target"),
PolicyId: workloadPolicy.ID(),
ClusterIds: pulumi.StringArray{cluster.Cluster_id.AsStringOutput()},
}, pulumi.Provider(devzeroProvider))
if err != nil {
return err
}
return nil
})
}Authentication
Pass your credentials as environment variables when running pulumi up:
DEVZERO_TEAM_ID=<team-id> DEVZERO_TOKEN=<token> pulumi upGet your token from User Settings and your team ID from Organization Settings.