Architecture overview
pulumi-netskope-publisher exposes provider-specific Pulumi components
instead of one switchable root component. Import only the component for
the platform you are provisioning:
1 | import { AwsPublisher } from "@johninnl/pulumi-netskope-publisher"; |
Each platform component follows the same pattern:
- Resolve publisher names from
names, or fromnamePrefixandreplicas. - Create or reuse Netskope publisher records through
NetskopeRegistration, unlessregistrationsis supplied directly. - Render per-publisher cloud-init with the registration token.
- Provision the VM, pod, or chart resources for the target platform.
- Return
publisherNamesand secretpublishersoutputs keyed by
publisher name.
Two install paths
| Path | Image | Cloud-init behavior |
|---|---|---|
| Bootstrap | Stock Ubuntu image | Runs Netskope’s generic bootstrap.sh, then npa_publisher_wizard -token <token>. |
| Pre-baked | Netskope Publisher image, marketplace image, custom image, OVA, or VHDX | Runs the wizard already present on the image. |
AWS and Azure support both paths. GCP uses bootstrap mode by default
because there is no public Netskope Publisher image. vSphere clones an
existing template, Hyper-V is currently an experimental gate, and
Kubernetes installs the publisher Helm chart instead of booting a VM.
Hcloud, Nutanix, OpenStack, OVH, Scaleway, OCI, Alicloud, Proxmox VE,
DigitalOcean, Vultr, Exoscale, UpCloud, Stackit, Equinix Metal,
Outscale, OpenTelekomCloud, TencentCloud, and Yandex Cloud use
bootstrap mode.
What each component owns
| Component | Responsibility | Main providers |
|---|---|---|
NetskopeRegistration |
List/create publisher records and generate registration tokens | Pulumi dynamic provider |
AwsPublisher |
EC2 instances, optional Canonical AMI lookup, EC2 user data | @pulumi/aws |
AzurePublisher |
NICs, optional public IPs, Linux VMs, custom data | @pulumi/azure-native |
GcpPublisher |
Compute Engine instances and metadata user-data | @pulumi/gcp |
VspherePublisher |
VM clones with guestinfo cloud-init | @pulumi/vsphere |
EsxiPublisher |
Direct ESXi VM creation with guestinfo cloud-init | @pulumiverse/esxi-native |
HcloudPublisher |
Hetzner Cloud servers and user data | @pulumi/hcloud |
NutanixPublisher |
Nutanix VMs and guest customization cloud-init | @pierskarsenbarg/nutanix |
OpenstackPublisher |
OpenStack instances and optional floating IPs | @pulumi/openstack |
OvhPublisher |
OVH Public Cloud instances and user data | @ovhcloud/pulumi-ovh |
ScalewayPublisher |
Scaleway instances and cloud-init | @pulumiverse/scaleway |
OciPublisher |
OCI instances and metadata user data | @pulumi/oci |
AlicloudPublisher |
Alibaba Cloud ECS instances and user data | @pulumi/alicloud |
ProxmoxvePublisher |
Proxmox VE cloud-init snippets and VM template clones | @muhlba91/pulumi-proxmoxve |
DigitaloceanPublisher |
DigitalOcean Droplets and user data | @pulumi/digitalocean |
VultrPublisher |
Vultr instances and user data | @ediri/vultr |
ExoscalePublisher |
Exoscale compute instances and user data | @pulumiverse/exoscale |
UpcloudPublisher |
UpCloud servers and user data | @pulumiverse/upcloud |
StackitPublisher |
STACKIT servers and user data | @stackitcloud/stackit |
EquinixPublisher |
Equinix Metal devices and user data | @equinix-labs/equinix |
OutscalePublisher |
OUTSCALE VMs and user data | @pulumiverse/outscale |
OpentelekomcloudPublisher |
Open Telekom Cloud compute instances and user data | @pulumiverse/opentelekomcloud |
TencentcloudPublisher |
TencentCloud CVM instances and raw user data | @pulumi/tencentcloud |
YandexPublisher |
Yandex Cloud compute instances and metadata user-data | @pulumi/yandex |
KubernetesPublisher |
Helm chart releases and token/API Secrets | @pulumi/kubernetes |
HypervPublisher |
Experimental placeholder until @pulumi/hyperv is published |
none |
Provider isolation
Use the component that matches the provider already configured in the
stack. A stack that only creates AwsPublisher resources does not need
Azure, GCP, vSphere, or Kubernetes provider credentials.
See also:
Shared cloud-init and user-data adapters
and Registration flow.