Skip to content

Instantly share code, notes, and snippets.

@jen20

jen20/index.ts Secret

Created July 8, 2018 17:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jen20/2d8451034c0a15858af8561f69a79ac4 to your computer and use it in GitHub Desktop.
Save jen20/2d8451034c0a15858af8561f69a79ac4 to your computer and use it in GitHub Desktop.
import * as aws from "@pulumi/aws";
import {SubnetDistributor} from "./subnetDistributor";
import {Output} from "@pulumi/pulumi";
interface StackOutputs {
privateSubnetIds: Output<string>[]
publicSubnetIds: Output<string>[]
}
async function main(): Promise<StackOutputs> {
const baseCidr = "10.0.0.0/16";
const baseTags = {
Project: "Distributor"
};
const azCount = (await aws.getAvailabilityZones()).names.length;
const subnetDistributor = new SubnetDistributor(baseCidr, azCount);
const vpc = new aws.ec2.Vpc("vpc", {
cidrBlock: baseCidr,
enableDnsSupport: true,
enableDnsHostnames: true,
tags: baseTags
});
const privateSubnets = subnetDistributor.privateSubnets().map((cidr, index) => {
return new aws.ec2.Subnet(`private-subnet-${index + 1}`, {
vpcId: vpc.id,
cidrBlock: cidr,
mapPublicIpOnLaunch: false,
tags: baseTags
});
});
const publicSubnets = subnetDistributor.publicSubnets().map((cidr, index) => {
return new aws.ec2.Subnet(`public-subnet-${index + 1}`, {
vpcId: vpc.id,
cidrBlock: cidr,
mapPublicIpOnLaunch: false,
tags: baseTags
});
});
return {
privateSubnetIds: privateSubnets.map(subnet => subnet.id),
publicSubnetIds: publicSubnets.map(subnet => subnet.id)
}
}
const outputs = main();
export const privateSubnetIds = outputs.then(o => o.privateSubnetIds);
export const publicSubnetIds = outputs.then(o => o.publicSubnetIds);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment