UNPKG

@studion/infra-code-blocks

Version:
53 lines (52 loc) 2.54 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mongo = void 0; const pulumi = require("@pulumi/pulumi"); const ecs_service_1 = require("./ecs-service"); const password_1 = require("./password"); class Mongo extends pulumi.ComponentResource { constructor(name, args, opts = {}) { super('studion:Mongo', name, args, opts); const image = args.image || 'mongo:7.0.3@sha256:238b1636bdd7820c752b91bec8a669f92568eb313ad89a1fc4a92903c1b40489'; const port = args.port || 27017; const persistentStorageConfig = args.persistentStorageConfig || { volumes: [{ name: 'mongo' }], mountPoints: [{ sourceVolume: 'mongo', containerPath: '/data/db' }] }; const { username, password, privateSubnetIds } = args, ecsServiceArgs = __rest(args, ["username", "password", "privateSubnetIds"]); this.name = name; this.host = pulumi.output(`${name}.${name}`); this.username = pulumi.output(username); this.port = pulumi.output(port); this.password = new password_1.Password(`${this.name}-mongo-password`, { value: password }, { parent: this }); this.service = new ecs_service_1.EcsService(name, Object.assign(Object.assign({}, ecsServiceArgs), { port, image, desiredCount: 1, autoscaling: { enabled: false }, enableServiceAutoDiscovery: true, persistentStorageConfig, dockerCommand: ['mongod', '--port', port.toString()], assignPublicIp: false, subnetIds: privateSubnetIds, environment: [ { name: 'MONGO_INITDB_ROOT_USERNAME', value: username, }, ], secrets: [ { name: 'MONGO_INITDB_ROOT_PASSWORD', valueFrom: this.password.secret.arn, }, ] }), Object.assign(Object.assign({}, opts), { parent: this })); this.registerOutputs(); } } exports.Mongo = Mongo;