mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.9 KiB
110 lines
3.9 KiB
#!/usr/bin/env node
|
|
|
|
const { App } = require('aws-cdk-lib');
|
|
const { CPDocusealStack } = require('./lib/cp-docuseal-stack');
|
|
const fs = require('fs');
|
|
|
|
const app = new App();
|
|
|
|
const userDataScript = fs.readFileSync('./userdata.txt', 'utf8');
|
|
|
|
// Get staging number from context if provided
|
|
const stagingNumber = app.node.tryGetContext('stagingNumber');
|
|
|
|
// Function to get certificate ARN based on staging number
|
|
function getStagingCertificateArn(stagingNumber) {
|
|
if (!stagingNumber) {
|
|
// Default certificate for staging when no staging number is provided
|
|
return 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35';
|
|
}
|
|
|
|
const num = parseInt(stagingNumber);
|
|
|
|
if (num >= 1 && num <= 11) {
|
|
return 'arn:aws:acm:us-east-1:788066832395:certificate/d3ae2320-6da3-4a6f-a3d9-0f00f85033cb';
|
|
} else if (num >= 12 && num <= 22) {
|
|
return 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35';
|
|
} else if (num >= 23 && num <= 24) {
|
|
return 'arn:aws:acm:us-east-1:788066832395:certificate/69a8fe61-f12f-4251-9e55-d68c21553388';
|
|
} else if (num >= 25 && num <= 27) {
|
|
return 'arn:aws:acm:us-east-1:788066832395:certificate/3ce231d1-b2ec-4013-80db-b231db5a1e02';
|
|
} else {
|
|
// Default certificate for staging numbers outside defined ranges
|
|
return 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35';
|
|
}
|
|
}
|
|
|
|
// Environment configurations
|
|
const environments = {
|
|
dev: {
|
|
account: process.env.CDK_DEFAULT_ACCOUNT,
|
|
region: process.env.CDK_DEFAULT_REGION || 'us-east-1',
|
|
vpcId: 'vpc-95c19df2',
|
|
publicSubnetIds: ['subnet-ff02dbb6', 'subnet-69fe1132', 'subnet-cb8e63f7' ],
|
|
instanceCount: 1,
|
|
instanceSize: 'SMALL',
|
|
cpu: 512,
|
|
memory: 1024,
|
|
securityGroupIds: ["sg-0f0da2fa2d6088742", "sg-006e8df67aec60469"],
|
|
userDataScript: userDataScript,
|
|
certificateArn: 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35',
|
|
},
|
|
staging: {
|
|
account: process.env.CDK_DEFAULT_ACCOUNT,
|
|
region: process.env.CDK_DEFAULT_REGION || 'us-east-1',
|
|
vpcId: 'vpc-95c19df2',
|
|
publicSubnetIds: ['subnet-ff02dbb6', 'subnet-69fe1132', 'subnet-cb8e63f7'],
|
|
instanceCount: 1,
|
|
instanceSize: 'SMALL',
|
|
apiCpu: 512,
|
|
apiMemory: 1024,
|
|
securityGroupIds: ["sg-0f0da2fa2d6088742", "sg-006e8df67aec60469"],
|
|
userDataScript: userDataScript,
|
|
certificateArn: getStagingCertificateArn(stagingNumber),
|
|
},
|
|
// production: {
|
|
// account: process.env.CDK_DEFAULT_ACCOUNT,
|
|
// region: process.env.CDK_DEFAULT_REGION || 'us-east-1',
|
|
// vpcId: 'vpc-95c19df2',
|
|
// publicSubnetIds: ['subnet-ff02dbb6', 'subnet-69fe1132', 'subnet-cb8e63f7' ],
|
|
// instanceCount: 2,
|
|
// instanceSize: 'LARGE',
|
|
// apiCpu: 900,
|
|
// apiMemory: 3000,
|
|
// sidekiqCpu: 900,
|
|
// sidekiqMemory: 3000,
|
|
// securityGroupIds: ["sg-09fa17711757036e6", "sg-006e8df67aec60469"],
|
|
// userDataScript: userDataScript,
|
|
// certificateArn: 'arn:aws:acm:us-east-1:788066832395:certificate/05fa2bb8-5589-4425-9f28-427f1082a64b',
|
|
// }
|
|
};
|
|
|
|
// Create stacks for each environment
|
|
Object.entries(environments).forEach(([envName, config]) => {
|
|
// Construct stack name with staging number if provided
|
|
let stackName = `CPDocusealStack-${envName}`;
|
|
let environmentName = envName;
|
|
|
|
// Append staging number for staging environments
|
|
if (envName === 'staging' && stagingNumber) {
|
|
stackName += `-${stagingNumber}`;
|
|
environmentName += `-${stagingNumber}`;
|
|
}
|
|
|
|
new CPDocusealStack(app, stackName, {
|
|
env: {
|
|
account: config.account,
|
|
region: config.region
|
|
},
|
|
environment: envName,
|
|
vpcConfig: {
|
|
vpcId: config.vpcId,
|
|
publicSubnetIds: config.publicSubnetIds
|
|
},
|
|
ecsConfig: config,
|
|
certificateArn: config.certificateArn,
|
|
securityGroupIds: config.securityGroupIds,
|
|
userDataScript: config.userDataScript
|
|
});
|
|
});
|