The Control Plane Pulumi provider lets you manage Control Plane resources as code across JavaScript/TypeScript, Python, Go, and .NET (C#).
Pulumi Registry View the official Control Plane provider on the Pulumi Registry for full documentation, resources, and data sources.
Install Pulumi CLI
curl -fsSL https://get.pulumi.com | sh
Need a different installer or hit an error? Check Pulumi’s download & install guide for platform-specific binaries, installer options, and troubleshooting tips: Pulumi Download & Install
Login to Manage Pulumi State
By default, Pulumi stores state in the Pulumi Service. To authenticate:
This opens a browser to sign in.
Create a New Pulumi Project
Create Directory
Create an empty directory, e.g: mkdir pulumi-cpln-infra && cd pulumi-cpln-infra
Initialize Project
Run the Pulumi project initializer: JavaScript
TypeScript
Python
Go
.NET (C#)
Select Language
From the list of templates, choose your language (TypeScript, Python, Go, .NET (C#)).
Project Name
Enter a project name (e.g. pulumi-cpln-infra).
Stack Name
Accept or change the default stack name (dev).
The initializer will scaffold a basic project for your chosen language; you’ll add the Control Plane provider next.
Install the Control Plane Provider
JavaScript/TypeScript
Python
Go
.NET (C#)
# npm
npm install @pulumiverse/cpln
# yarn
yarn add @pulumiverse/cpln
# pnpm
pnpm add @pulumiverse/cpln
pip install pulumiverse-cpln
go get github.com/pulumiverse/pulumi-cpln/sdk/go/cpln
dotnet add package Pulumiverse.cpln
Upgrading the Provider
Keep your Pulumi Control Plane provider up to date by upgrading the package in your project:
JavaScript/TypeScript
Python
Go
.NET (C#)
# npm
npm install @pulumiverse/cpln@latest
# yarn
yarn upgrade @pulumiverse/cpln@latest
# pnpm
pnpm add @pulumiverse/cpln@latest
pip install --upgrade pulumiverse-cpln
go get -u github.com/pulumiverse/pulumi-cpln/sdk/go/cpln
dotnet add package Pulumiverse.Cpln
🔄 After upgrading, run pulumi up to apply any necessary changes.
For more configuration information refer to the Control Plane Installation & Configuration page.
Set your Control Plane provider configuration:
# Required
pulumi config set cpln:org < your-or g >
# Optional
pulumi config set cpln:endpoint < api-endpoint-ur l >
pulumi config set cpln:profile < profile-nam e >
pulumi config set --secret cpln:token < your-toke n >
pulumi config set --secret cpln:refreshToken < your-refresh-toke n >
Using Environment Variables
You can also supply your Control Plane credentials via environment variables.
Option Env Var Default orgCPLN_ORGNone (Required) endpointCPLN_ENDPOINThttps://api.cpln.io (Optional)profileCPLN_PROFILEThe default CLI profile (Optional) tokenCPLN_TOKENNone (Optional) refreshTokenCPLN_REFRESH_TOKENNone (Optional)
Create & Deploy a Resource
Defining Resource
Edit the generated code (e.g. index.ts, __main__.py, main.go, Program.cs) to define a resource.
JavaScript/TypeScript
Python
Go
.NET (C#)
import * as pulumi from '@pulumi/pulumi' ;
import * as cpln from '@pulumiverse/cpln' ;
const gvc = new cpln . Gvc ( 'example' , {
name: 'example' ,
// …other args
});
import pulumi
import pulumiverse_cpln as cpln
gvc = cpln.Gvc( "example" ,
name = "example" ,
# …other args
)
package main
import (
" github.com/pulumiverse/pulumi-cpln/sdk/go/cpln "
" github.com/pulumi/pulumi/sdk/v3/go/pulumi "
)
func main () {
pulumi . Run ( func ( ctx * pulumi . Context ) error {
_ , err := cpln . NewGvc ( ctx , "example" , & cpln . GvcArgs {
Name : pulumi . String ( "example" ),
// …other args
})
return err
})
}
using System . Collections . Generic ;
using Pulumi ;
using Pulumiverse . Cpln ;
return await Deployment . RunAsync (() =>
{
// Add your resources here
var gvc = new Gvc ( "example" , new GvcArgs {
Name = "example" ,
// …other args
});
// Export outputs here
return new Dictionary < string , object ?> { };
});
Deploying Resource
Run the following command to deploy your resources to the Control Plane platform:
Destroying Resource
When you need to tear down your Control Plane infrastructure, run the following command:
Removing the Stack
After destroying resources, you can delete the stack itself:
If you’re moving existing Terraform projects to Pulumi, you can:
Convert HCL to Pulumi Code
Ensure your Terraform configuration files are in the current working directory, then run the converter: JavaScript
TypeScript
Python
Go
.NET (C#)
pulumi convert --from terraform --language javascript --out pulumi-cpln-infra-javascript
pulumi convert --from terraform --language typescript --out pulumi-cpln-infra-typescript
pulumi convert --from terraform --language python --out pulumi-cpln-infra-python
pulumi convert --from terraform --language go --out pulumi-cpln-infra-go
pulumi convert --from terraform --language csharp --out pulumi-cpln-infra-csharp
Create a New Pulumi Stack
Before importing your Terraform state, initialize (or select) a Pulumi stack to hold it. Replace <stackName> with your desired name (e.g. migrate): pulumi stack init migrate
Import Terraform State
Specify the correct path to your Terraform state file, then run the import command: pulumi import --from terraform /path/to/terraform.tfstate
Replace /path/to/terraform.tfstate with the location of your state file. This reads the specified state and merges its resources into your Pulumi stack’s state.
Review Code
Review and refine the generated Pulumi code.
For full details, examples, and advanced workflows, see the Pulumi guide on Migrating from Terraform to Pulumi .
Next Steps
Dive into all Control Plane resources & data sources at the Control Plane Pulumi Registry . Check the registry docs regularly for new releases, resources, and data sources.