UNPKG

@storm-software/pulumi-tools

Version:

Tools for managing Pulumi infrastructure within a Nx workspace.

121 lines (118 loc) 2.95 kB
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 };