205 lines
5.8 KiB
JavaScript
205 lines
5.8 KiB
JavaScript
#!/usr/bin/env node
|
|
import * as cdk from 'aws-cdk-lib';
|
|
import { StackProps } from 'aws-cdk-lib';
|
|
import { ConfigProps, getConfig } from '../lib/config';
|
|
|
|
import { VpcStack } from '../lib/vpc-stack';
|
|
import { RdsStack } from '../lib/rds-stack';
|
|
import { EksStack } from '../lib/eks-stack';
|
|
import { RedisStack } from '../lib/redis-stack';
|
|
import { DocumentDbStack } from '../lib/documentdb-stack';
|
|
import { RabbitMqStack } from '../lib/rabbitmq-stack';
|
|
|
|
import { HelmRegistryStack } from '../lib/helm-registry';
|
|
import { HelmGatewayStack } from '../lib/helm-gateway';
|
|
import { HelmCommonServicesStack } from '../lib/helm-beckn-common-services';
|
|
import { HelmBapStack } from '../lib/helm-bap';
|
|
import { HelmBppStack } from '../lib/helm-bpp';
|
|
|
|
|
|
const config = getConfig();
|
|
const app = new cdk.App();
|
|
|
|
type AwsEnvStackProps = StackProps & {
|
|
config: ConfigProps;
|
|
};
|
|
|
|
// Retrieve AWS Account ID and Region from the environment
|
|
const accountId = config.ACCOUNT;
|
|
const region = config.REGION;
|
|
|
|
if (!accountId || !region) {
|
|
console.error("AWS_ACCOUNT_ID or AWS_REGION is missing from .env file");
|
|
process.exit(1);
|
|
}
|
|
|
|
// Common environment configuration for all stacks
|
|
const env = { account: accountId, region: region };
|
|
|
|
// Function to deploy registry environment
|
|
const deployRegistry = () => {
|
|
var envC = "registry";
|
|
const vpcStack = new VpcStack(app, 'RegistryVpcStack', { config: config, env });
|
|
const eksStack = new EksStack(app, 'RegistryEksStack', { config: config, vpc: vpcStack.vpc, env });
|
|
const rdsStack = new RdsStack(app, 'RegistryRdsStack', { config: config, vpc: vpcStack.vpc, envC: envC, env });
|
|
|
|
new HelmRegistryStack(app, 'HelmRegistryStack', {
|
|
config: config,
|
|
rdsHost: rdsStack.rdsHost,
|
|
rdsPassword: rdsStack.rdsPassword,
|
|
eksCluster: eksStack.cluster,
|
|
env,
|
|
});
|
|
};
|
|
|
|
// Function to deploy gateway environment
|
|
const deployGateway = () => {
|
|
var envC = "gateway";
|
|
const vpcStack = new VpcStack(app, 'GatewayVpcStack', { config: config, env });
|
|
const eksStack = new EksStack(app, 'GatewayEksStack', { config: config, vpc: vpcStack.vpc, env });
|
|
const rdsStack = new RdsStack(app, 'GatewayRdsStack', { config: config, vpc: vpcStack.vpc, envC: envC, env });
|
|
|
|
new HelmGatewayStack(app, 'HelmGatewayStack', {
|
|
config: config,
|
|
rdsHost: rdsStack.rdsHost,
|
|
rdsPassword: rdsStack.rdsPassword,
|
|
eksCluster: eksStack.cluster,
|
|
env,
|
|
});
|
|
|
|
};
|
|
|
|
// Function to deploy BAP environment
|
|
const deployBAP = () => {
|
|
const vpcStack = new VpcStack(app, 'BapVpcStack', { config: config, env });
|
|
const eksStack = new EksStack(app, 'BapEksStack', {config: config, vpc: vpcStack.vpc, env });
|
|
|
|
// bitnami - common services on eks - self hosted
|
|
new HelmCommonServicesStack(app, 'HelmBapCommonServicesStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
service: 'bap',
|
|
env,
|
|
});
|
|
|
|
new HelmBapStack(app, 'HelmBapStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
vpc: vpcStack.vpc,
|
|
eksSecGrp: eksStack.eksSecGrp,
|
|
isSandbox: false,
|
|
env,
|
|
});
|
|
|
|
};
|
|
|
|
// Function to deploy BPP environment
|
|
const deployBPP = () => {
|
|
const vpcStack = new VpcStack(app, 'BppVpcStack', {config: config, env });
|
|
const eksStack = new EksStack(app, 'BppEksStack', {config: config, vpc: vpcStack.vpc, env });
|
|
|
|
// if bitnami
|
|
new HelmCommonServicesStack(app, 'HelmBapCommonServicesStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
service: 'bpp',
|
|
env,
|
|
});
|
|
|
|
new HelmBppStack(app, 'HelmBppStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
vpc: vpcStack.vpc,
|
|
eksSecGrp: eksStack.eksSecGrp,
|
|
isSandbox: false,
|
|
env,
|
|
});
|
|
};
|
|
|
|
// Function to deploy sandbox environment (all stacks)
|
|
const deploySandbox = () => {
|
|
var envC = "sandbox";
|
|
const vpcStack = new VpcStack(app, 'VpcStack', {config: config, env });
|
|
const eksStack = new EksStack(app, 'EksStack', {config: config, vpc: vpcStack.vpc, env });
|
|
const rdsStack = new RdsStack(app, 'RdsStack', { config: config, vpc: vpcStack.vpc, envC: envC, env });
|
|
|
|
new HelmRegistryStack(app, 'HelmRegistryStack', {
|
|
config: config,
|
|
rdsHost: rdsStack.rdsHost,
|
|
rdsPassword: rdsStack.rdsPassword,
|
|
eksCluster: eksStack.cluster,
|
|
env,
|
|
});
|
|
|
|
new HelmGatewayStack(app, 'HelmGatewayStack', {
|
|
config: config,
|
|
rdsHost: rdsStack.rdsHost,
|
|
rdsPassword: rdsStack.rdsPassword,
|
|
eksCluster: eksStack.cluster,
|
|
env,
|
|
});
|
|
|
|
// default - bitnami
|
|
new HelmCommonServicesStack(app, 'BapHelmCommonServicesStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
service: 'bap',
|
|
env,
|
|
});
|
|
|
|
new HelmCommonServicesStack(app, 'BppHelmCommonServicesStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
service: 'bpp',
|
|
env,
|
|
});
|
|
|
|
new HelmBapStack(app, 'HelmBapStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
vpc: vpcStack.vpc,
|
|
eksSecGrp: eksStack.eksSecGrp,
|
|
isSandbox: true,
|
|
env,
|
|
});
|
|
|
|
new HelmBppStack(app, 'HelmBppStack', {
|
|
config: config,
|
|
eksCluster: eksStack.cluster,
|
|
vpc: vpcStack.vpc,
|
|
eksSecGrp: eksStack.eksSecGrp,
|
|
isSandbox: true,
|
|
env,
|
|
});
|
|
};
|
|
|
|
// Retrieve the environment from CDK context
|
|
const environment = app.node.tryGetContext('env');
|
|
|
|
// Deploy based on the selected environment
|
|
switch (environment) {
|
|
case 'sandbox':
|
|
console.log('Deploying sandbox environment...');
|
|
deploySandbox();
|
|
break;
|
|
case 'registry':
|
|
console.log('Deploying registry environment...');
|
|
deployRegistry();
|
|
break;
|
|
case 'gateway':
|
|
console.log('Deploying gateway environment...');
|
|
deployGateway();
|
|
break;
|
|
case 'bap':
|
|
console.log('Deploying BAP environment...');
|
|
deployBAP();
|
|
break;
|
|
case 'bpp':
|
|
console.log('Deploying BPP environment...');
|
|
deployBPP();
|
|
break;
|
|
default:
|
|
console.error('Unknown environment specified.');
|
|
process.exit(1);
|
|
}
|