published on Wednesday, May 20, 2026 by johnneerdael
Netskope Publisher
published on Wednesday, May 20, 2026 by johnneerdael
The Netskope Publisher package provides Pulumi component resources for
provisioning Netskope Private Access Publishers on AWS, Azure, Google
Cloud, Kubernetes, vSphere, ESXi, Hcloud, Nutanix, OpenStack, OVH,
Scaleway, OCI, and Alicloud. The package mirrors the Terraform module
pattern:
register or reuse Netskope publisher records, generate per-publisher
cloud-init, and create the virtual machines that run the publisher
appliance. On Kubernetes, it installs the
kubernetes-netskope-publisher Helm chart.
Components
AwsPublishercreates EC2-backed publishers.AzurePublishercreates Azure virtual machine backed publishers.GcpPublishercreates Google Compute Engine backed publishers.KubernetesPublisherinstalls Helm chart backed publishers.VspherePublishercreates vSphere virtual machine backed publishers.EsxiPublishercreates direct-host ESXi backed publishers.HcloudPublisher,NutanixPublisher,OpenstackPublisher,OvhPublisher,ScalewayPublisher,OciPublisher, andAlicloudPublishercreate Ubuntu 22.04 bootstrap-mode publishers.HypervPublisheris experimental and remains opt-in.
Each component accepts either Netskope tenant credentials for automatic publisher registration or pre-created registration tokens keyed by publisher name.
Java and Rust SDKs are also generated. Java uses Pulumi’s standard package SDK generator. Rust uses Pulumi Gestalt and requires the Gestalt Rust language plugin in Rust Pulumi programs.
TypeScript example
import { AwsPublisher } from "@johninnl/pulumi-netskope-publisher";
const publisher = new AwsPublisher("publisher", {
namePrefix: "pub-eu",
replicas: 2,
tenantUrl: "https://example.goskope.com",
apiToken: "ns-api-token",
subnetId: "subnet-0123456789abcdef0",
securityGroupIds: ["sg-0123456789abcdef0"],
});
Python example
from pulumi_netskope_publisher import AwsPublisher
publisher = AwsPublisher(
"publisher",
name_prefix="pub-eu",
replicas=2,
tenant_url="https://example.goskope.com",
api_token="ns-api-token",
subnet_id="subnet-0123456789abcdef0",
security_group_ids=["sg-0123456789abcdef0"],
)
C# example
using Pulumi;
using Pulumi.NetskopePublisher;
return await Deployment.RunAsync(() =>
{
var publisher = new AwsPublisher("publisher", new AwsPublisherArgs
{
NamePrefix = "pub-eu",
Replicas = 2,
TenantUrl = "https://example.goskope.com",
ApiToken = "ns-api-token",
SubnetId = "subnet-0123456789abcdef0",
SecurityGroupIds = new[] { "sg-0123456789abcdef0" },
});
});
Go example
package main
import (
"github.com/johnneerdael/pulumi-netskope-publisher/sdk/go/netskopepublisher"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := netskopepublisher.NewAwsPublisher(ctx, "publisher", &netskopepublisher.AwsPublisherArgs{
NamePrefix: pulumi.StringPtr("pub-eu"),
Replicas: pulumi.IntPtr(2),
TenantUrl: pulumi.StringPtr("https://example.goskope.com"),
ApiToken: pulumi.StringPtr("ns-api-token"),
SubnetId: pulumi.String("subnet-0123456789abcdef0"),
SecurityGroupIds: pulumi.StringArray{
pulumi.String("sg-0123456789abcdef0"),
},
})
if err != nil {
return err
}
return nil
})
}
Java example
package myproject;
import com.pulumi.Pulumi;
import com.pulumi.netskopepublisher.AwsPublisher;
import com.pulumi.netskopepublisher.AwsPublisherArgs;
public class App {
public static void main(String[] args) {
Pulumi.run(ctx -> {
new AwsPublisher("publisher", AwsPublisherArgs.builder()
.namePrefix("pub-eu")
.replicas(2)
.tenantUrl("https://example.goskope.com")
.apiToken("ns-api-token")
.subnetId("subnet-0123456789abcdef0")
.securityGroupIds("sg-0123456789abcdef0")
.build());
});
}
}
Rust example
mod netskope {
pulumi_gestalt_rust::include_provider!("netskope-publisher");
}
use anyhow::Result;
use pulumi_gestalt_rust::*;
fn main() {
run(pulumi_main).unwrap();
}
fn pulumi_main(ctx: &Context) -> Result<()> {
let publisher = netskope::aws_publisher::create(
ctx,
"publisher",
netskope::aws_publisher::AwsPublisherArgs::builder()
.name_prefix("pub-eu")
.replicas(2)
.tenant_url("https://example.goskope.com")
.api_token("ns-api-token")
.subnet_id("subnet-0123456789abcdef0")
.security_group_ids(vec!["sg-0123456789abcdef0".to_string()])
.build_struct(),
);
add_export("publisherNames", &publisher.publisher_names);
Ok(())
}
Provider-specific examples are available in the repository under
examples/.
published on Wednesday, May 20, 2026 by johnneerdael