@studion/infra-code-blocks
Version:
Studion common infra components
53 lines (52 loc) • 2.54 kB
JavaScript
;
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;