Pulumi
Manage DevZero resources using Pulumi
A step-by-step guide for managing DevZero resources using Pulumi.
Configuration
There's no Pulumi provider available yet, but pulumi terraform-converter can be leveraged to generate Pulumi code from Terraform sources.
The DevZero provider is devzero-inc/devzero.
The modules are:
Setup
pulumi package add terraform-provider devzero-inc/devzero
pulumi package add terraform-module devzero-inc/cluster/devzero devzero-clusterResources
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
}
// Create the devzero-cluster provider with devzero and helm configurations
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
})
}import pulumi
from pulumi_devzero import Provider as DevzeroProvider, WorkloadPolicy, WorkloadPolicyArgs, WorkloadPolicyTarget, WorkloadPolicyTargetArgs
from pulumi_devzero_cluster import Provider as ClusterProvider, Module, ModuleArgs
# Configure the Devzero provider
dz_provider = DevzeroProvider(
"devzero",
)
# Configure the devzero-cluster module provider
cluster_provider = ClusterProvider(
"devzero-cluster",
helm={
"kubernetes": {
"config_path": "~/.kube/config",
}
},
)
# Create the cluster module
cluster = Module(
"cluster",
ModuleArgs(
cluster_name="pulumi-cluster",
),
pulumi.ResourceOptions(provider=cluster_provider),
)
# Create a workload policy using the devzero provider
workload_policy = WorkloadPolicy(
"workload-policy",
WorkloadPolicyArgs(
name="pulumi-workload-policy",
),
pulumi.ResourceOptions(provider=dz_provider),
)
# Attach the policy to the cluster
WorkloadPolicyTarget(
"workload-policy-target",
WorkloadPolicyTargetArgs(
name="pulumi-workload-policy-target",
policy_id=workload_policy.id,
cluster_ids=cluster.cluster_id.apply(lambda v: [str(v)]),
),
pulumi.ResourceOptions(provider=dz_provider),
)"use strict";
const pulumi = require("@pulumi/pulumi");
const devzero = require("@pulumi/devzero");
const devzeroCluster = require("@pulumi/devzero-cluster");
// Configure the Devzero provider
const dzProvider = new devzero.Provider("devzero", {});
// Configure the devzero-cluster module provider
const clusterProvider = new devzeroCluster.Provider("devzero-cluster", {
helm: {
kubernetes: {
config_path: "~/.kube/config",
},
},
});
// Create the cluster module
const cluster = new devzeroCluster.Module("cluster", {
cluster_name: "pulumi-cluster",
}, { provider: clusterProvider });
// Create a workload policy using the devzero provider
const workloadPolicy = new devzero.WorkloadPolicy("workload-policy", {
name: "pulumi-workload-policy",
}, { provider: dzProvider });
// Attach the policy to the cluster
new devzero.WorkloadPolicyTarget("workload-policy-target", {
name: "pulumi-workload-policy-target",
policyId: workloadPolicy.id,
clusterIds: [cluster.cluster_id.apply(v => String(v))],
}, { provider: dzProvider });Execute
DEVZERO_TEAM_ID=<team-xyz> DEVZERO_TOKEN=<token> pulumi up