Skip to content

Commit

Permalink
Pulumi prod creates a VPC.
Browse files Browse the repository at this point in the history
  • Loading branch information
rizen committed Aug 2, 2024
1 parent 401d248 commit 2313e85
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 4 deletions.
7 changes: 7 additions & 0 deletions Pulumi.mjs
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
import { createUploads } from './pulumi/uploads.mjs';
import { createVpc } from './pulumi/vpc.mjs';
import { createThumbnails } from './pulumi/thumbnails.mjs';
import { createLambdaProcessUploads } from './pulumi/lambda-process-uploads.mjs';
import { updateEnv } from './pulumi/env.mjs';
import * as pulumi from "@pulumi/pulumi";

const stack = pulumi.getStack();
const { uploadsBucket, uploadsAccessKey } = createUploads();
const thumbnailsBucket = createThumbnails();
const processUploadsFunctionUrl = createLambdaProcessUploads(thumbnailsBucket);
if (stack != 'dev') {
const vpc = createVpc();
}
updateEnv({
stack,
uploadsBucket,
uploadsAccessKey,
thumbnailsBucket,
Expand Down
3 changes: 1 addition & 2 deletions pulumi/env.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import * as pulumi from "@pulumi/pulumi";
// this has to be its own file rather than each function updating itself, because of the paralleization of pulumi causing a race condition for the .env file

export const updateEnv = (obj) => {
const stack = pulumi.getStack();
const env = new Env(stack == 'dev' ? '.env' : '.env.' + stack);
const env = new Env(obj.stack == 'dev' ? '.env' : '.env.' + obj.stack);
aws.getRegion({}).then(region => env.set('AWS_REGION', region.id));
obj.uploadsAccessKey.id.apply(id => env.set("VING_AWS_UPLOADS_KEY", id));
obj.uploadsAccessKey.secret.apply(secret => env.set("VING_AWS_UPLOADS_SECRET", secret));
Expand Down
16 changes: 16 additions & 0 deletions pulumi/vpc.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import * as aws from "@pulumi/aws";
import { prefix } from './utils.mjs';

export const createVpc = () => {

const vpc = new aws.ec2.Vpc(prefix('vpc'), {
cidrBlock: "10.0.0.0/16",
enableDnsSupport: true,
enableDnsHostnames: true,
tags: {
Name: prefix('vpc'),
},
});

return vpc;
}
1 change: 1 addition & 0 deletions ving/docs/change-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ outline: deep

### 2024-08-02
* Added Pulumi prod.
* Pulumi prod creates a VPC.

## July 2024

Expand Down
5 changes: 3 additions & 2 deletions ving/docs/subsystems/pulumi.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,6 @@ pulumi stack select dev
Prod does the following things differently than dev:
- stores its AWS generated variables in .env.prod
- provisions a database
- provisions a hosting environment (EC2)
- provisions a VPC
- provisions an Aurora Serverless database
- provisions an EC2 instance

0 comments on commit 2313e85

Please sign in to comment.