OpenStack Component

OpenstackPublisher creates one OpenStack compute instance per
publisher name.

Inputs

Required: imageName, flavorName, networkName, and tenantUrl plus
apiToken unless registrations is provided.

Optional platform inputs: keyPair, securityGroups,
availabilityZone, assignFloatingIp, and floatingIpPool.

Image and bootstrap behavior

Use an Ubuntu 22.04 image name. The component uses bootstrap mode and
passes decoded cloud-init to the compute instance userData field.

Outputs

publisherNames and secret publishers, keyed by publisher name.

Pulumi CLI

1
2
3
4
5
6
pulumi config set openstack:authUrl https://openstack.example.com:5000/v3
pulumi config set openstack:userName admin
pulumi config set openstack:password --secret
pulumi config set netskope:tenantUrl https://tenant.goskope.com
pulumi config set netskope:apiToken --secret
pulumi up

TypeScript

1
2
3
4
5
6
7
8
9
10
const publisher = new OpenstackPublisher("publisher", {
namePrefix: "pub-os",
replicas: 2,
tenantUrl: netskope.require("tenantUrl"),
apiToken: netskope.requireSecret("apiToken"),
imageName: "Ubuntu 22.04",
flavorName: "m1.medium",
networkName: "private",
securityGroups: ["default"],
});

Python

1
2
3
4
5
6
7
8
9
10
11
publisher = OpenstackPublisher(
"publisher",
name_prefix="pub-os",
replicas=2,
tenant_url=netskope.require("tenantUrl"),
api_token=netskope.require_secret("apiToken"),
image_name="Ubuntu 22.04",
flavor_name="m1.medium",
network_name="private",
security_groups=["default"],
)

C#

1
2
3
4
5
6
7
8
9
10
11
var publisher = new OpenstackPublisher("publisher", new OpenstackPublisherArgs
{
NamePrefix = "pub-os",
Replicas = 2,
TenantUrl = netskope.Require("tenantUrl"),
ApiToken = netskope.RequireSecret("apiToken"),
ImageName = "Ubuntu 22.04",
FlavorName = "m1.medium",
NetworkName = "private",
SecurityGroups = { "default" },
});

Go

1
2
3
4
5
6
7
8
9
10
publisher, err := netskopepublisher.NewOpenstackPublisher(ctx, "publisher", &netskopepublisher.OpenstackPublisherArgs{
NamePrefix: pulumi.String("pub-os"),
Replicas: pulumi.Int(2),
TenantUrl: pulumi.String(netskope.Require("tenantUrl")),
ApiToken: netskope.RequireSecret("apiToken"),
ImageName: pulumi.String("Ubuntu 22.04"),
FlavorName: pulumi.String("m1.medium"),
NetworkName: pulumi.String("private"),
SecurityGroups: pulumi.StringArray{pulumi.String("default")},
})

Java

1
2
3
4
5
6
7
8
9
10
var publisher = new OpenstackPublisher("publisher", OpenstackPublisherArgs.builder()
.namePrefix("pub-os")
.replicas(2)
.tenantUrl(netskope.require("tenantUrl"))
.apiToken(netskope.requireSecret("apiToken"))
.imageName("Ubuntu 22.04")
.flavorName("m1.medium")
.networkName("private")
.securityGroups("default")
.build());

Rust

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let publisher = netskope::openstack_publisher::create(
ctx,
"publisher",
netskope::openstack_publisher::OpenstackPublisherArgs::builder()
.name_prefix("pub-os")
.replicas(2)
.tenant_url("https://tenant.goskope.com")
.api_token("secret-token")
.image_name("Ubuntu 22.04")
.flavor_name("m1.medium")
.network_name("private")
.security_groups(vec!["default".to_string()])
.build_struct(),
);