published on Tuesday, Oct 27, 2026 by Pulumi
Venafi Provider
published on Tuesday, Oct 27, 2026 by Pulumi
Installation
The Venafi provider is available as a package in all Pulumi languages:
- JavaScript/TypeScript:
@pulumi/venafi - Python:
pulumi-venafi - Go:
github.com/pulumi/pulumi-venafi/sdk/go/venafi - .NET:
Pulumi.Venafi - Java:
com.pulumi/venafi
Overview
We dropped support for RSA PKCS#1 formatted keys for TLS certificates in version 15.0 and also for EC Keys in version 0.15.4 (you can find out more about this transition in here). For backward compatibility during Pulumi state refresh please update to version 0.15.5 or above.
As a part for upgrading our provider to SDK version 2, we dropped support for Pulumi version 0.11 and below.
With the introduction of version 0.18.0 the CyberArk Certificate Manager Provider now incorporates a new feature related to certificate retirement. When an infrastructure is decommissioned, the associated certificate will be automatically retired from the CyberArk Certificate Manager.
CyberArk is the enterprise platform for Machine Identity Protection. The CyberArk Certificate Manager Provider streamlines the process of acquiring SSL/TLS keys and certificates from CyberArk Machine Identity Service giving assurance of compliance with Information Security policies. It provides resources that allow private keys and certificates to be created as part of a Pulumi deployment.
Use the navigation to the left to read about the available resources.
Example Usage for CyberArk Certificate Manager, SaaS
You can sign up for a CyberArk Certificate Manager, SaaS account by visiting https://www.cyberark.com/products/certificate-management/.
Once registered, find your API key by clicking your name in the top right of the web interface. You will also need to specify the zone
to use when requesting certificates. Zones define the machine identity policy that will be applied to certificate requests and the
certificate authority that will issue certificates. The zone is formed by combining the Application Name and Issuing
Template API Alias (e.g. “Business App\Enterprise CIT”).
US tenants
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:zone:
value: Business App\Enterprise CIT
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:zone:
value: Business App\Enterprise CIT
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:zone:
value: Business App\Enterprise CIT
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:zone:
value: Business App\Enterprise CIT
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:zone:
value: Business App\Enterprise CIT
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:zone:
value: Business App\Enterprise CIT
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
EU tenants
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.venafi.eu
venafi:zone:
value: Business App\Enterprise CIT
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.venafi.eu
venafi:zone:
value: Business App\Enterprise CIT
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.venafi.eu
venafi:zone:
value: Business App\Enterprise CIT
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.venafi.eu
venafi:zone:
value: Business App\Enterprise CIT
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.venafi.eu
venafi:zone:
value: Business App\Enterprise CIT
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.venafi.eu
venafi:zone:
value: Business App\Enterprise CIT
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
AU tenants
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.au.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.au.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.au.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.au.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.au.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.au.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
UK tenants
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.uk.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.uk.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.uk.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.uk.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.uk.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.uk.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
SG tenants
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.sg.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.sg.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.sg.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.sg.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.sg.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.sg.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
CA tenants
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.ca.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.ca.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.ca.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.ca.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.ca.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:apiKey:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:url:
value: https://api.ca.venafi.cloud
venafi:zone:
value: Business App\Enterprise CIT
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
Example Usage for CyberArk Certificate Manager, Self-Hosted
Your CyberArk administrator can provide you with the URL for the CyberArk Certificate Manager, Self-Hosted REST API and grant you
permission to use it. At the same time they’ll provide you with the Distinguished Name of a policy folder to specify
for the zone. Policy folders define the machine identity policy applied to certificate requests and the certificate
authority that will issue certificates. You may also need to ask them for a root CA certificate for your trustBundle
if the CyberArk Certificate Manager, Self-Hosted URL is secured by a certificate your Pulumi computer does not already trust.
Obtain the required accessToken for CyberArk Certificate Manager, Self-Hosted using the VCert CLI
(getcred action with --client-id "pulumi-pulumi-by-venafi" and --scope "certificate:manage") or the
CyberArk Certificate Manager, Self-Hosted Platform’s Authorize REST API method. The configuration:manage scope is required to set certificate policy using the
venafi.Policy resource.
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:accessToken:
value: p0WTt3sDPbzm2BDIkoJROQ==
venafi:trustBundle:
value: 'TODO: "${file("/opt/venafi/bundle.pem")}"'
venafi:url:
value: https://tpp.venafi.example
venafi:zone:
value: DevOps\Terraform
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:accessToken:
value: p0WTt3sDPbzm2BDIkoJROQ==
venafi:trustBundle:
value: 'TODO: "${file("/opt/venafi/bundle.pem")}"'
venafi:url:
value: https://tpp.venafi.example
venafi:zone:
value: DevOps\Terraform
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:accessToken:
value: p0WTt3sDPbzm2BDIkoJROQ==
venafi:trustBundle:
value: 'TODO: "${file("/opt/venafi/bundle.pem")}"'
venafi:url:
value: https://tpp.venafi.example
venafi:zone:
value: DevOps\Terraform
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:accessToken:
value: p0WTt3sDPbzm2BDIkoJROQ==
venafi:trustBundle:
value: 'TODO: "${file("/opt/venafi/bundle.pem")}"'
venafi:url:
value: https://tpp.venafi.example
venafi:zone:
value: DevOps\Terraform
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:accessToken:
value: p0WTt3sDPbzm2BDIkoJROQ==
venafi:trustBundle:
value: 'TODO: "${file("/opt/venafi/bundle.pem")}"'
venafi:url:
value: https://tpp.venafi.example
venafi:zone:
value: DevOps\Terraform
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:accessToken:
value: p0WTt3sDPbzm2BDIkoJROQ==
venafi:trustBundle:
value: 'TODO: "${file("/opt/venafi/bundle.pem")}"'
venafi:url:
value: https://tpp.venafi.example
venafi:zone:
value: DevOps\Terraform
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
Example Usage for Palo Alto Networks Next-Gen Trust Security (NGTS)
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
venafi:clientId:
value: your-service-account@panserviceaccount.com
venafi:clientSecret:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:tokenUrl:
value: https://auth.apps.paloaltonetworks.com/auth/v1/oauth2/access_token
venafi:tsgId:
value: "1234567890"
venafi:url:
value: https://api.strata.paloaltonetworks.com/ngts
venafi:zone:
value: Built-In CA Open Policy
import * as pulumi from "@pulumi/pulumi";
import * as venafi from "@pulumi/venafi";
// Generate a key pair and request a certificate
const webserver = new venafi.Certificate("webserver", {});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
venafi:clientId:
value: your-service-account@panserviceaccount.com
venafi:clientSecret:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:tokenUrl:
value: https://auth.apps.paloaltonetworks.com/auth/v1/oauth2/access_token
venafi:tsgId:
value: "1234567890"
venafi:url:
value: https://api.strata.paloaltonetworks.com/ngts
venafi:zone:
value: Built-In CA Open Policy
import pulumi
import pulumi_venafi as venafi
# Generate a key pair and request a certificate
webserver = venafi.Certificate("webserver")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
venafi:clientId:
value: your-service-account@panserviceaccount.com
venafi:clientSecret:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:tokenUrl:
value: https://auth.apps.paloaltonetworks.com/auth/v1/oauth2/access_token
venafi:tsgId:
value: "1234567890"
venafi:url:
value: https://api.strata.paloaltonetworks.com/ngts
venafi:zone:
value: Built-In CA Open Policy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Venafi = Pulumi.Venafi;
return await Deployment.RunAsync(() =>
{
// Generate a key pair and request a certificate
var webserver = new Venafi.Certificate("webserver");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
venafi:clientId:
value: your-service-account@panserviceaccount.com
venafi:clientSecret:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:tokenUrl:
value: https://auth.apps.paloaltonetworks.com/auth/v1/oauth2/access_token
venafi:tsgId:
value: "1234567890"
venafi:url:
value: https://api.strata.paloaltonetworks.com/ngts
venafi:zone:
value: Built-In CA Open Policy
package main
import (
"github.com/pulumi/pulumi-venafi/sdk/go/venafi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Generate a key pair and request a certificate
_, err := venafi.NewCertificate(ctx, "webserver", nil)
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
venafi:clientId:
value: your-service-account@panserviceaccount.com
venafi:clientSecret:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:tokenUrl:
value: https://auth.apps.paloaltonetworks.com/auth/v1/oauth2/access_token
venafi:tsgId:
value: "1234567890"
venafi:url:
value: https://api.strata.paloaltonetworks.com/ngts
venafi:zone:
value: Built-In CA Open Policy
resources:
# Generate a key pair and request a certificate
webserver:
type: venafi:Certificate
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
venafi:clientId:
value: your-service-account@panserviceaccount.com
venafi:clientSecret:
value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
venafi:tokenUrl:
value: https://auth.apps.paloaltonetworks.com/auth/v1/oauth2/access_token
venafi:tsgId:
value: "1234567890"
venafi:url:
value: https://api.strata.paloaltonetworks.com/ngts
venafi:zone:
value: Built-In CA Open Policy
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.venafi.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Generate a key pair and request a certificate
var webserver = new Certificate("webserver");
}
}
terraform {
required_providers {
venafi = {
source = "pulumi/venafi"
}
}
}
# Generate a key pair and request a certificate
resource "venafi_certificate" "webserver" {
lifecycle {
create_before_destroy = true
}
}
Configuration Reference
The following configuration inputs are supported:
accessToken- (Optional, string) Authentication token for the ‘pulumi-pulumi-by-venafi’ API Application. Applies only to CyberArk Certificate Manager, Self-Hosted.apiKey- (Optional, string) REST API key for authentication. Applies only to CyberArk Certificate Manager, SaaS.clientId- (Optional, string) Application that will be using the token. Defaults topulumi-pulumi-by-venafi.clientSecret- (Optional, string) Client Secret for CyberArk Certificate Manager, Self-Hosted or NGTS authentication.devMode- (Optional, boolean) When “true” will test the provider without connecting to CyberArk Certificate Manager, Self-Hosted or CyberArk Certificate Manager, SaaSexternalJwt- (Optional, string) JWT of the Identity Provider associated to a service account for authentication. Applies only to CyberArk Certificate Manager, SaaS.p12CertFilename- (Optional, string) Filename of PKCS#12 keystore containing a client certificate, private key,p12CertData- (Optional, string) Base64 encoded PKCS#12 keystore containing a client certificate, private key, and chain certificates to authenticate to CyberArk Certificate Manager, Self-Hosted.p12CertPassword- (Optional, string) Password for the PKCS#12 keystore declared inp12CertFilenameor inp12CertData. Applies only to CyberArk Certificate Manager, Self-Hosted.skipRetirement- (Optional, boolean) If it’s specified with valuetruethen the certificate retirement on the related CyberArk Certificate Manager, Self-Hosted or CyberArk Certificate Manager, SaaS will be skipped. A value offalseis equivalent to omit this argument.tokenUrl- (Optional, string) - URL to request access tokens for CyberArk Certificate Manager, SaaS or NGTS.tppPassword[DEPRECATED] - (Optional, string) WebSDK account password for authentication (applies only to CyberArk Certificate Manager, Self-Hosted).tppUsername[DEPRECATED] - (Optional, string) WebSDK account username for authentication (applies only to CyberArk Certificate Manager, Self-Hosted).trustBundle- (Optional, string) PEM trust bundle for CyberArk Certificate Manager, Self-Hosted server certificate (e.g. “${file(“bundle.pem”)}”).tsgId- (Optional, string) The Palo Alto Networks NGTS TSG ID used when issuing a token. Only used when platform is NGTS.url- (Optional, string) CyberArk Certificate Manager, Self-Hosted URL (e.g. “https://tpp.cyberark.example”) or NGTS URL (e.g. “https://api.strata.paloaltonetworks.com/ngts”).zone- (Required, string) Application Name and Issuing Template API Alias (e.g. “Business App\Enterprise CIT”) for CyberArk Certificate Manager, SaaS, policy folder for CyberArk Certificate Manager, Self-Hosted, or Certificate Issuing Template name for NGTS.
Environment Variables
The following environment variables can also be used to specify provider argument values:
VENAFI_API- forapiKeyargumentVENAFI_CLIENT_ID- forclientIdargumentVENAFI_CLIENT_SECRET- forclientSecretargumentVENAFI_DEVMODE- fordevModeargumentVENAFI_EXTERNAL_JWT- forexternalJwtargumentVENAFI_PASS- fortppPasswordargumentVENAFI_P12_CERTIFICATE- forp12CertFilenameargumentVENAFI_P12_PASSWORD- forp12PasswordargumentVENAFI_SKIP_RETIREMENT- forskipRetirementargumentVENAFI_TOKEN- foraccessTokenargumentVENAFI_TOKEN_URL- fortokenUrlargumentVENAFI_TSG_ID- fortsgIdargumentVENAFI_URL- forurlargumentVENAFI_USER- fortppUsernameargumentVENAFI_ZONE- forzoneargument
published on Tuesday, Oct 27, 2026 by Pulumi