@storm-software/pulumi-tools
Version:
Tools for managing Pulumi infrastructure within a Nx workspace.
121 lines (118 loc) • 2.95 kB
JavaScript
import {
getCloudTemplateName
} from "./chunk-5TB4HFDP.mjs";
// src/lib/aws/providers.ts
import * as aws from "@pulumi/aws";
import * as pulumi from "@pulumi/pulumi";
import defu from "defu";
function getAWSTemplateName() {
return getCloudTemplateName("aws" /* AWS */);
}
function getProviderOpts(scope = "storm-cloud") {
const config = new pulumi.Config("aws");
const providerOpts = {
provider: new aws.Provider(getAWSTemplateName(), {
region: config.require("aws_region")
}),
scope,
zone: config.get("aws_zone") || "us-east-1a"
};
return providerOpts;
}
var size = aws.ec2.InstanceType.T2_Micro;
function vpc(opts = getProviderOpts(), appId = "default", override = {}) {
return new aws.ec2.DefaultVpc(
`${opts.scope}-${appId}-${opts.zone}-vpc`,
defu(
{
tags: {
Scope: opts.scope,
Name: `${opts.scope}-${appId}-vpc`,
AppId: appId
}
},
override
),
opts
);
}
function subnet(opts = getProviderOpts(), appId = "default", override = {}) {
return new aws.ec2.DefaultSubnet(
`${opts.scope}-${appId}-${opts.zone}-subnet`,
defu(
{
availabilityZone: opts.zone,
tags: {
Scope: opts.scope,
Name: `${opts.scope}-${appId}-${opts.zone}-subnet`,
AppId: appId
}
},
override
),
opts
);
}
function securityGroup(vpc2, opts = getProviderOpts(), appId = "default", override = {}) {
return new aws.ec2.SecurityGroup(
`${opts.scope}-${appId}-${opts.zone}-sg`,
defu(
{
vpcId: vpc2.id,
description: `Enable HTTP access for ${appId === "default" ? opts.scope : appId !== opts.scope ? `${opts.scope}-${appId}` : opts.scope}`,
ingress: [
{
protocol: aws.ec2.TCPProtocol,
fromPort: 80,
toPort: 80,
cidrBlocks: ["0.0.0.0/0"]
}
],
tags: {
Scope: opts.scope,
Name: `${opts.scope}-${appId}-sg`,
AppId: appId
}
},
override
),
opts
);
}
function ec2Instance(vpc2, subnet2, securityGroup2, opts = getProviderOpts(), appId = "default", override = {}) {
return new aws.ec2.Instance(
`${opts.scope}-${appId}-${opts.zone}-ec2`,
defu(
{
instanceType: size,
ami: aws.ec2.getAmi({
mostRecent: true,
owners: ["amazon"],
filters: [
{
name: "name",
values: ["amzn2-ami-hvm-*-x86_64-gp2"]
}
]
}).then((ami) => ami.id),
subnetId: subnet2.id,
vpcSecurityGroupIds: [securityGroup2.id],
tags: {
Scope: opts.scope,
Name: `${opts.scope}-${appId}-ec2`,
AppId: appId
}
},
override
),
opts
);
}
export {
getAWSTemplateName,
getProviderOpts,
vpc,
subnet,
securityGroup,
ec2Instance
};