aubay-oci-deploy-tool 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/argocd/argocd.d.ts +22 -0
- package/argocd/argocd.js +266 -0
- package/argocd/argocd.js.map +1 -0
- package/argocd/config.d.ts +2 -0
- package/argocd/config.js +19 -0
- package/argocd/config.js.map +1 -0
- package/argocd/interfaces.d.ts +66 -0
- package/argocd/interfaces.js +3 -0
- package/argocd/interfaces.js.map +1 -0
- package/compute/compute.d.ts +11 -0
- package/compute/compute.js +56 -0
- package/compute/compute.js.map +1 -0
- package/compute/config.d.ts +2 -0
- package/compute/config.js +19 -0
- package/compute/config.js.map +1 -0
- package/compute/interfaces.d.ts +19 -0
- package/compute/interfaces.js +3 -0
- package/compute/interfaces.js.map +1 -0
- package/crds/config.d.ts +2 -0
- package/crds/config.js +9 -0
- package/crds/config.js.map +1 -0
- package/crds/crds.d.ts +13 -0
- package/crds/crds.js +42 -0
- package/crds/crds.js.map +1 -0
- package/crds/interfaces.d.ts +7 -0
- package/crds/interfaces.js +3 -0
- package/crds/interfaces.js.map +1 -0
- package/external-secrets/config.d.ts +5 -0
- package/external-secrets/config.js +12 -0
- package/external-secrets/config.js.map +1 -0
- package/external-secrets/externalsecrets.d.ts +22 -0
- package/external-secrets/externalsecrets.js +74 -0
- package/external-secrets/externalsecrets.js.map +1 -0
- package/external-secrets/interfaces.d.ts +10 -0
- package/external-secrets/interfaces.js +3 -0
- package/external-secrets/interfaces.js.map +1 -0
- package/iam/config.d.ts +2 -0
- package/iam/config.js +17 -0
- package/iam/config.js.map +1 -0
- package/iam/iam.d.ts +10 -0
- package/iam/iam.js +33 -0
- package/iam/iam.js.map +1 -0
- package/iam/interfaces.d.ts +12 -0
- package/iam/interfaces.js +3 -0
- package/iam/interfaces.js.map +1 -0
- package/index.d.ts +39 -0
- package/index.js +81 -0
- package/index.js.map +1 -0
- package/istio/config.d.ts +2 -0
- package/istio/config.js +18 -0
- package/istio/config.js.map +1 -0
- package/istio/interfaces.d.ts +18 -0
- package/istio/interfaces.js +3 -0
- package/istio/interfaces.js.map +1 -0
- package/istio/istio.d.ts +24 -0
- package/istio/istio.js +288 -0
- package/istio/istio.js.map +1 -0
- package/network/config.d.ts +3 -0
- package/network/config.js +23 -0
- package/network/config.js.map +1 -0
- package/network/interfaces.d.ts +31 -0
- package/network/interfaces.js +3 -0
- package/network/interfaces.js.map +1 -0
- package/network/network.d.ts +28 -0
- package/network/network.js +218 -0
- package/network/network.js.map +1 -0
- package/oke/config.d.ts +3 -0
- package/oke/config.js +25 -0
- package/oke/config.js.map +1 -0
- package/oke/interfaces.d.ts +40 -0
- package/oke/interfaces.js +3 -0
- package/oke/interfaces.js.map +1 -0
- package/oke/oke.d.ts +15 -0
- package/oke/oke.js +112 -0
- package/oke/oke.js.map +1 -0
- package/package.json +22 -0
- package/region/config.d.ts +2 -0
- package/region/config.js +9 -0
- package/region/config.js.map +1 -0
- package/region/interfaces.d.ts +7 -0
- package/region/interfaces.js +3 -0
- package/region/interfaces.js.map +1 -0
- package/region/region.d.ts +6 -0
- package/region/region.js +12 -0
- package/region/region.js.map +1 -0
- package/region/shortcode.d.ts +13 -0
- package/region/shortcode.js +22 -0
- package/region/shortcode.js.map +1 -0
- package/security/config.d.ts +3 -0
- package/security/config.js +27 -0
- package/security/config.js.map +1 -0
- package/security/interfaces.d.ts +23 -0
- package/security/interfaces.js +3 -0
- package/security/interfaces.js.map +1 -0
- package/security/security.d.ts +13 -0
- package/security/security.js +79 -0
- package/security/security.js.map +1 -0
- package/storage/config.d.ts +4 -0
- package/storage/config.js +24 -0
- package/storage/config.js.map +1 -0
- package/storage/interfaces.d.ts +19 -0
- package/storage/interfaces.js +3 -0
- package/storage/interfaces.js.map +1 -0
- package/storage/storage.d.ts +9 -0
- package/storage/storage.js +36 -0
- package/storage/storage.js.map +1 -0
package/oke/config.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clusters = exports.ociCompartmentId = void 0;
|
|
4
|
+
const pulumi = require("@pulumi/pulumi");
|
|
5
|
+
const stack = pulumi.getStack();
|
|
6
|
+
const infraConfig = new pulumi.Config("infra");
|
|
7
|
+
exports.ociCompartmentId = infraConfig.require("compartmentId");
|
|
8
|
+
const okeConfig = new pulumi.Config("oke");
|
|
9
|
+
const rawClusters = okeConfig.requireObject("clusters");
|
|
10
|
+
exports.clusters = rawClusters.map(cluster => ({
|
|
11
|
+
...cluster,
|
|
12
|
+
name: `${stack}-${cluster.name}`,
|
|
13
|
+
apiSubnet: `${stack}-${cluster.apiSubnet}`,
|
|
14
|
+
vcnName: `${stack}-${cluster.vcnName}`,
|
|
15
|
+
compartmentId: exports.ociCompartmentId,
|
|
16
|
+
nodePools: cluster.nodePools.map(np => ({
|
|
17
|
+
...np,
|
|
18
|
+
name: `${stack}-${np.name}`,
|
|
19
|
+
placementConfigs: np.placementConfigs.map(pc => ({
|
|
20
|
+
...pc,
|
|
21
|
+
subnetName: `${stack}-${pc.subnetName}`,
|
|
22
|
+
}))
|
|
23
|
+
})),
|
|
24
|
+
}));
|
|
25
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/oke/config.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAGzC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,QAAA,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAErE,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAA6C,UAAU,CAAC,CAAC;AAEvF,QAAA,QAAQ,GAAwB,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrE,GAAG,OAAO;IACV,IAAI,EAAE,GAAG,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;IAChC,SAAS,EAAE,GAAG,KAAK,IAAI,OAAO,CAAC,SAAS,EAAE;IAC1C,OAAO,EAAE,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE;IACtC,aAAa,EAAE,wBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpC,GAAG,EAAE;QACL,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE;QAC3B,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7C,GAAG,EAAE;YACL,UAAU,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE;SAC1C,CAAC,CAAC;KACN,CAAC,CAAC;CACN,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as oci from "@pulumi/oci";
|
|
2
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
3
|
+
export interface INodePoolConfig {
|
|
4
|
+
name: string;
|
|
5
|
+
nodeShape: string;
|
|
6
|
+
cpuCoreCount: number;
|
|
7
|
+
memorySizeInGBs: number;
|
|
8
|
+
imageId: string;
|
|
9
|
+
sshPublicKey: string;
|
|
10
|
+
nodeCount: number;
|
|
11
|
+
placementConfigs: IPlacementConfig[];
|
|
12
|
+
nodeLabels: INodeLabels[];
|
|
13
|
+
}
|
|
14
|
+
export interface INodeLabels {
|
|
15
|
+
key: string;
|
|
16
|
+
value: string;
|
|
17
|
+
}
|
|
18
|
+
export interface IPlacementConfig {
|
|
19
|
+
subnetName: string;
|
|
20
|
+
ad: string;
|
|
21
|
+
}
|
|
22
|
+
export interface IOkeClusterConfig {
|
|
23
|
+
name: string;
|
|
24
|
+
kubernetesVersion: string;
|
|
25
|
+
isPublicIpEnabled: boolean;
|
|
26
|
+
apiSubnet: string;
|
|
27
|
+
nodePools: INodePoolConfig[];
|
|
28
|
+
compartmentId: string;
|
|
29
|
+
vcnName: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IOkeKubeconfig {
|
|
32
|
+
clusterId: pulumi.Output<string>;
|
|
33
|
+
clusterName: pulumi.Output<string>;
|
|
34
|
+
kubeconfig: pulumi.Output<string>;
|
|
35
|
+
}
|
|
36
|
+
export interface IOke {
|
|
37
|
+
clusters: oci.containerengine.Cluster[];
|
|
38
|
+
nodePools: oci.containerengine.NodePool[];
|
|
39
|
+
kubeconfigs: IOkeKubeconfig[];
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/oke/interfaces.ts"],"names":[],"mappings":""}
|
package/oke/oke.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as oci from "@pulumi/oci";
|
|
2
|
+
import { IOke, IOkeClusterConfig, IOkeKubeconfig } from "./interfaces";
|
|
3
|
+
export declare class Oke implements IOke {
|
|
4
|
+
private clustersConfig;
|
|
5
|
+
private vcns;
|
|
6
|
+
private subnets;
|
|
7
|
+
clusters: oci.containerengine.Cluster[];
|
|
8
|
+
nodePools: oci.containerengine.NodePool[];
|
|
9
|
+
kubeconfigs: IOkeKubeconfig[];
|
|
10
|
+
constructor(clustersConfig: IOkeClusterConfig[], vcns: oci.core.Vcn[], subnets: oci.core.Subnet[]);
|
|
11
|
+
private buildOke;
|
|
12
|
+
private createOke;
|
|
13
|
+
private createNodePool;
|
|
14
|
+
private generateKubeconfig;
|
|
15
|
+
}
|
package/oke/oke.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Oke = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const pulumi = require("@pulumi/pulumi");
|
|
6
|
+
const oci = require("@pulumi/oci");
|
|
7
|
+
class Oke {
|
|
8
|
+
constructor(clustersConfig, vcns, subnets) {
|
|
9
|
+
this.clustersConfig = clustersConfig;
|
|
10
|
+
this.vcns = vcns;
|
|
11
|
+
this.subnets = subnets;
|
|
12
|
+
this.clusters = [];
|
|
13
|
+
this.nodePools = [];
|
|
14
|
+
this.kubeconfigs = [];
|
|
15
|
+
this.buildOke();
|
|
16
|
+
}
|
|
17
|
+
buildOke() {
|
|
18
|
+
for (const clusterCfg of this.clustersConfig) {
|
|
19
|
+
const cluster = this.createOke(clusterCfg);
|
|
20
|
+
for (const np of clusterCfg.nodePools) {
|
|
21
|
+
this.createNodePool(cluster, np);
|
|
22
|
+
}
|
|
23
|
+
const kubeconfig = this.generateKubeconfig(cluster);
|
|
24
|
+
this.kubeconfigs.push({
|
|
25
|
+
clusterId: cluster.id,
|
|
26
|
+
clusterName: cluster.name,
|
|
27
|
+
kubeconfig: kubeconfig,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
createOke(clusterCfg) {
|
|
32
|
+
const vcnId = pulumi.all(this.vcns.map(vcn => vcn.displayName.apply(vdn => ({ id: vcn.id, match: vdn === clusterCfg.vcnName })))).apply(vcnsId => {
|
|
33
|
+
const match = vcnsId.find(vId => vId.match);
|
|
34
|
+
if (!match)
|
|
35
|
+
throw new Error(`No se encontró la VCN ${clusterCfg.vcnName} para cluster ${clusterCfg.name}`);
|
|
36
|
+
return match.id;
|
|
37
|
+
});
|
|
38
|
+
const apiSubnetID = pulumi.all(this.subnets.map(s => s.displayName.apply(d => ({ id: s.id, match: d === clusterCfg.apiSubnet })))).apply(subnets => {
|
|
39
|
+
const match = subnets.find(s => s.match);
|
|
40
|
+
if (!match)
|
|
41
|
+
throw new Error(`No se encontró la subnet ${clusterCfg.apiSubnet}`);
|
|
42
|
+
return match.id;
|
|
43
|
+
});
|
|
44
|
+
const cluster = new oci.containerengine.Cluster(clusterCfg.name, {
|
|
45
|
+
name: clusterCfg.name,
|
|
46
|
+
compartmentId: clusterCfg.compartmentId,
|
|
47
|
+
kubernetesVersion: clusterCfg.kubernetesVersion,
|
|
48
|
+
vcnId: vcnId,
|
|
49
|
+
//clusterPodNetworkOptions: [
|
|
50
|
+
// {
|
|
51
|
+
// cniType: "OCI_VCN_IP_NATIVE"
|
|
52
|
+
// }
|
|
53
|
+
//],
|
|
54
|
+
options: {
|
|
55
|
+
serviceLbSubnetIds: [],
|
|
56
|
+
},
|
|
57
|
+
endpointConfig: {
|
|
58
|
+
isPublicIpEnabled: clusterCfg.isPublicIpEnabled,
|
|
59
|
+
subnetId: apiSubnetID
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
this.clusters.push(cluster);
|
|
63
|
+
return cluster;
|
|
64
|
+
}
|
|
65
|
+
createNodePool(cluster, np) {
|
|
66
|
+
const placementConfigs = np.placementConfigs.map(pc => pulumi.all(this.subnets.map(s => s.displayName.apply(d => ({ id: s.id, match: d === pc.subnetName })))).apply(subnetInfo => {
|
|
67
|
+
const nodeSubnet = subnetInfo.find(info => info.match);
|
|
68
|
+
if (!nodeSubnet)
|
|
69
|
+
throw new Error(`No se encontró la subnet ${pc.subnetName} para node pool ${np.name}`);
|
|
70
|
+
return {
|
|
71
|
+
subnetId: nodeSubnet.id,
|
|
72
|
+
availabilityDomain: pc.ad,
|
|
73
|
+
};
|
|
74
|
+
}));
|
|
75
|
+
const cloudInit = fs.readFileSync("../../scripts/cloud-init.sh", "utf8");
|
|
76
|
+
const cloudInitBase64 = Buffer.from(cloudInit).toString("base64");
|
|
77
|
+
const nodePool = new oci.containerengine.NodePool(np.name, {
|
|
78
|
+
name: np.name,
|
|
79
|
+
compartmentId: cluster.compartmentId,
|
|
80
|
+
clusterId: cluster.id,
|
|
81
|
+
kubernetesVersion: cluster.kubernetesVersion,
|
|
82
|
+
nodeShape: np.nodeShape,
|
|
83
|
+
nodeShapeConfig: {
|
|
84
|
+
ocpus: np.cpuCoreCount,
|
|
85
|
+
memoryInGbs: np.memorySizeInGBs,
|
|
86
|
+
},
|
|
87
|
+
nodeConfigDetails: {
|
|
88
|
+
size: np.nodeCount,
|
|
89
|
+
placementConfigs: placementConfigs,
|
|
90
|
+
},
|
|
91
|
+
nodeMetadata: {
|
|
92
|
+
"user_data": cloudInitBase64,
|
|
93
|
+
},
|
|
94
|
+
nodeSourceDetails: {
|
|
95
|
+
sourceType: "IMAGE",
|
|
96
|
+
imageId: np.imageId,
|
|
97
|
+
},
|
|
98
|
+
sshPublicKey: np.sshPublicKey,
|
|
99
|
+
initialNodeLabels: np.nodeLabels
|
|
100
|
+
});
|
|
101
|
+
this.nodePools.push(nodePool);
|
|
102
|
+
}
|
|
103
|
+
generateKubeconfig(cluster) {
|
|
104
|
+
const kubeconfig = oci.containerengine.getClusterKubeConfigOutput({
|
|
105
|
+
clusterId: cluster.id,
|
|
106
|
+
tokenVersion: "2.0.0",
|
|
107
|
+
}).content;
|
|
108
|
+
return kubeconfig;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.Oke = Oke;
|
|
112
|
+
//# sourceMappingURL=oke.js.map
|
package/oke/oke.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oke.js","sourceRoot":"","sources":["../../src/oke/oke.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aubay-oci-deploy-tool",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Aubay tool to deploy to OCI",
|
|
5
|
+
"keywords": ["aubay","deploy", "OCI"],
|
|
6
|
+
"types": "index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./index.d.ts",
|
|
10
|
+
"default": "./index.d.ts"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
15
|
+
},
|
|
16
|
+
"email" : "vtecnica@aubay.es",
|
|
17
|
+
"url" : "https://www.aubay-sam.cloud/resources/info",
|
|
18
|
+
"author": "Aubay Spain",
|
|
19
|
+
"license": "(MIT OR Apache-2.0)",
|
|
20
|
+
"dependencies": {
|
|
21
|
+
}
|
|
22
|
+
}
|
package/region/config.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.regionConfig = void 0;
|
|
4
|
+
const pulumi = require("@pulumi/pulumi");
|
|
5
|
+
const regionCfg = new pulumi.Config("oci").require("region");
|
|
6
|
+
exports.regionConfig = {
|
|
7
|
+
name: regionCfg
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/region/config.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAGzC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEhD,QAAA,YAAY,GAAkB;IACvC,IAAI,EAAE,SAAS;CAClB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/region/interfaces.ts"],"names":[],"mappings":""}
|
package/region/region.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Region = void 0;
|
|
4
|
+
const shortcode_1 = require("./shortcode");
|
|
5
|
+
class Region {
|
|
6
|
+
constructor(region) {
|
|
7
|
+
this.name = region.name;
|
|
8
|
+
this.shortCode = (0, shortcode_1.getRegionShortCode)(this.name);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.Region = Region;
|
|
12
|
+
//# sourceMappingURL=region.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region.js","sourceRoot":"","sources":["../../src/region/region.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AAGjD,MAAa,MAAM;IAIf,YAAY,MAAqB;QAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAA,8BAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;CACJ;AARD,wBAQC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum OciRegionShortCode {
|
|
2
|
+
"eu-madrid-1" = "mad",
|
|
3
|
+
"eu-frankfurt-1" = "fra",
|
|
4
|
+
"us-ashburn-1" = "iad",
|
|
5
|
+
"us-phoenix-1" = "phx",
|
|
6
|
+
"uk-london-1" = "lhr",
|
|
7
|
+
"ca-toronto-1" = "yyz",
|
|
8
|
+
"ap-mumbai-1" = "bom",
|
|
9
|
+
"ap-seoul-1" = "icn",
|
|
10
|
+
"ap-tokyo-1" = "nrt",
|
|
11
|
+
"ap-sydney-1" = "syd"
|
|
12
|
+
}
|
|
13
|
+
export declare function getRegionShortCode(region: string): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OciRegionShortCode = void 0;
|
|
4
|
+
exports.getRegionShortCode = getRegionShortCode;
|
|
5
|
+
var OciRegionShortCode;
|
|
6
|
+
(function (OciRegionShortCode) {
|
|
7
|
+
OciRegionShortCode["eu-madrid-1"] = "mad";
|
|
8
|
+
OciRegionShortCode["eu-frankfurt-1"] = "fra";
|
|
9
|
+
OciRegionShortCode["us-ashburn-1"] = "iad";
|
|
10
|
+
OciRegionShortCode["us-phoenix-1"] = "phx";
|
|
11
|
+
OciRegionShortCode["uk-london-1"] = "lhr";
|
|
12
|
+
OciRegionShortCode["ca-toronto-1"] = "yyz";
|
|
13
|
+
OciRegionShortCode["ap-mumbai-1"] = "bom";
|
|
14
|
+
OciRegionShortCode["ap-seoul-1"] = "icn";
|
|
15
|
+
OciRegionShortCode["ap-tokyo-1"] = "nrt";
|
|
16
|
+
OciRegionShortCode["ap-sydney-1"] = "syd";
|
|
17
|
+
})(OciRegionShortCode || (exports.OciRegionShortCode = OciRegionShortCode = {}));
|
|
18
|
+
// Helper para convertir
|
|
19
|
+
function getRegionShortCode(region) {
|
|
20
|
+
return OciRegionShortCode[region];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=shortcode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shortcode.js","sourceRoot":"","sources":["../../src/region/shortcode.ts"],"names":[],"mappings":";;;AAcA,gDAEC;AAhBD,IAAY,kBAWX;AAXD,WAAY,kBAAkB;IAC1B,yCAAqB,CAAA;IACrB,4CAAwB,CAAA;IACxB,0CAAsB,CAAA;IACtB,0CAAsB,CAAA;IACtB,yCAAqB,CAAA;IACrB,0CAAsB,CAAA;IACtB,yCAAqB,CAAA;IACrB,wCAAoB,CAAA;IACpB,wCAAoB,CAAA;IACpB,yCAAqB,CAAA;AACzB,CAAC,EAXW,kBAAkB,kCAAlB,kBAAkB,QAW7B;AAED,wBAAwB;AACxB,SAAgB,kBAAkB,CAAC,MAAc;IAC7C,OAAO,kBAAkB,CAAC,MAAyC,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.vaults = exports.compartmentId = void 0;
|
|
4
|
+
const pulumi = require("@pulumi/pulumi");
|
|
5
|
+
const stack = pulumi.getStack();
|
|
6
|
+
// Compartimento global del proyecto
|
|
7
|
+
const infraConfig = new pulumi.Config("infra");
|
|
8
|
+
exports.compartmentId = infraConfig.require("compartmentId");
|
|
9
|
+
// Configuración de Vaults
|
|
10
|
+
const securityConfig = new pulumi.Config("security");
|
|
11
|
+
const rawVaults = securityConfig.requireObject("vaults");
|
|
12
|
+
// Inyectamos el compartmentId y un prefijo con el stack en los nombres
|
|
13
|
+
exports.vaults = rawVaults.map(vault => ({
|
|
14
|
+
...vault,
|
|
15
|
+
name: `${stack}-${vault.name}`,
|
|
16
|
+
vaultType: vault.vaultType || "DEFAULT",
|
|
17
|
+
compartmendId: exports.compartmentId,
|
|
18
|
+
keys: vault.keys?.map(key => ({
|
|
19
|
+
...key,
|
|
20
|
+
name: `${stack}-${key.name}`,
|
|
21
|
+
})) ?? [],
|
|
22
|
+
secrets: vault.secrets?.map(secret => ({
|
|
23
|
+
...secret,
|
|
24
|
+
keyToUse: `${stack}-${secret.keyToUse}`
|
|
25
|
+
})) ?? [],
|
|
26
|
+
}));
|
|
27
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/security/config.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAGzC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAEhC,oCAAoC;AACpC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,QAAA,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAElE,0BAA0B;AAC1B,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,CAAiB,QAAQ,CAAC,CAAC;AAEzE,uEAAuE;AAC1D,QAAA,MAAM,GAAmB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,GAAG,KAAK;IACR,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;IACvC,aAAa,EAAE,qBAAa;IAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,GAAG;QACN,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE;KAC/B,CAAC,CAAC,IAAI,EAAE;IACT,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnC,GAAG,MAAM;QACT,QAAQ,EAAE,GAAG,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;KAC1C,CAAC,CAAC,IAAI,EAAE;CACZ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as oci from "@pulumi/oci";
|
|
2
|
+
export interface Ikey {
|
|
3
|
+
name: string;
|
|
4
|
+
protectionMode: "SOFTWARE" | "HSM";
|
|
5
|
+
algorithm: "AES";
|
|
6
|
+
}
|
|
7
|
+
export interface IVaultConfig {
|
|
8
|
+
name: string;
|
|
9
|
+
vaultType: "DEFAULT" | "VIRTUAL_PRIVATE";
|
|
10
|
+
compartmendId: string;
|
|
11
|
+
keys: Ikey[];
|
|
12
|
+
secrets?: ISecret[];
|
|
13
|
+
}
|
|
14
|
+
export interface ISecurity {
|
|
15
|
+
vaults: oci.kms.Vault[];
|
|
16
|
+
keys: oci.kms.Key[];
|
|
17
|
+
secrets: oci.vault.Secret[];
|
|
18
|
+
}
|
|
19
|
+
export interface ISecret {
|
|
20
|
+
name: string;
|
|
21
|
+
keyToUse: string;
|
|
22
|
+
value: any;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/security/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as oci from "@pulumi/oci";
|
|
2
|
+
import { IVaultConfig, ISecurity } from "./interfaces";
|
|
3
|
+
export declare class Security implements ISecurity {
|
|
4
|
+
private vaultsConfig;
|
|
5
|
+
vaults: oci.kms.Vault[];
|
|
6
|
+
keys: oci.kms.Key[];
|
|
7
|
+
secrets: oci.vault.Secret[];
|
|
8
|
+
constructor(vaultsConfig: IVaultConfig[]);
|
|
9
|
+
private buildSecurity;
|
|
10
|
+
private createVault;
|
|
11
|
+
private createKey;
|
|
12
|
+
private createSecret;
|
|
13
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Security = void 0;
|
|
4
|
+
const oci = require("@pulumi/oci");
|
|
5
|
+
class Security {
|
|
6
|
+
constructor(vaultsConfig) {
|
|
7
|
+
this.vaultsConfig = vaultsConfig;
|
|
8
|
+
this.vaults = [];
|
|
9
|
+
this.keys = [];
|
|
10
|
+
this.secrets = [];
|
|
11
|
+
this.buildSecurity();
|
|
12
|
+
}
|
|
13
|
+
/// CAMBIAR EL VAULT UNDEFINED ///
|
|
14
|
+
buildSecurity() {
|
|
15
|
+
this.vaultsConfig.forEach(cfg => {
|
|
16
|
+
//let vault = undefined;
|
|
17
|
+
const vault = this.createVault(cfg);
|
|
18
|
+
this.vaults.push(vault);
|
|
19
|
+
cfg.keys.forEach(keyCfg => {
|
|
20
|
+
const key = this.createKey(keyCfg, cfg.compartmendId, vault);
|
|
21
|
+
this.keys.push(key);
|
|
22
|
+
});
|
|
23
|
+
cfg.secrets?.forEach(secretCfg => {
|
|
24
|
+
/*const keyId = pulumi.all(this.keys.map(key =>
|
|
25
|
+
key.displayName.apply(kdn => ({ id: key.id, match: kdn === secretCfg.keyToUse }))
|
|
26
|
+
)).apply(keysId => {
|
|
27
|
+
const match = keysId.find(kId => kId.match);
|
|
28
|
+
if (!match) throw new Error(`No se encontró la Key ${secretCfg.keyToUse}`);
|
|
29
|
+
return match.id;
|
|
30
|
+
});*/
|
|
31
|
+
const key = this.keys.find(k => k.displayName.apply(dn => dn === secretCfg.keyToUse));
|
|
32
|
+
if (!key)
|
|
33
|
+
throw new Error(`No se encontró la Key ${secretCfg.keyToUse}`);
|
|
34
|
+
const secret = this.createSecret(secretCfg, cfg.compartmendId, vault, key);
|
|
35
|
+
this.secrets.push(secret);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
createVault(vaultConfig) {
|
|
40
|
+
return new oci.kms.Vault(vaultConfig.name, {
|
|
41
|
+
compartmentId: vaultConfig.compartmendId,
|
|
42
|
+
displayName: vaultConfig.name,
|
|
43
|
+
vaultType: vaultConfig.vaultType,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
createKey(keyCfg, compartmentId, vault) {
|
|
47
|
+
return new oci.kms.Key(`${keyCfg.name}`, {
|
|
48
|
+
compartmentId,
|
|
49
|
+
displayName: keyCfg.name,
|
|
50
|
+
managementEndpoint: vault.managementEndpoint,
|
|
51
|
+
//managementEndpoint: "https://ifurl64caae3s-management.kms.eu-madrid-1.oci.oraclecloud.com",
|
|
52
|
+
protectionMode: keyCfg.protectionMode,
|
|
53
|
+
keyShape: {
|
|
54
|
+
algorithm: keyCfg.algorithm,
|
|
55
|
+
length: 32, // AES-256 → 32 bytes
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
createSecret(secretCfg, compartmentId, vault, key) {
|
|
60
|
+
const secretValue = typeof secretCfg.value === "string" && secretCfg.value === ""
|
|
61
|
+
? "ChangeMe"
|
|
62
|
+
: secretCfg.value;
|
|
63
|
+
return new oci.vault.Secret(`${secretCfg.name}`, {
|
|
64
|
+
compartmentId,
|
|
65
|
+
secretName: secretCfg.name,
|
|
66
|
+
vaultId: vault.id,
|
|
67
|
+
//vaultId: "ocid1.vault.oc1.eu-madrid-1.ifurl64caae3s.abwwcljr2lava4yjsuit7lysd7f4zaaci4syxltpkh6camihqky324dmxzjq",
|
|
68
|
+
keyId: key.id,
|
|
69
|
+
secretContent: {
|
|
70
|
+
content: Buffer.from(typeof secretValue === "string"
|
|
71
|
+
? secretValue
|
|
72
|
+
: JSON.stringify(secretValue)).toString("base64"),
|
|
73
|
+
contentType: "BASE64",
|
|
74
|
+
},
|
|
75
|
+
}, { dependsOn: [key] });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.Security = Security;
|
|
79
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/security/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buckets = exports.namespace = exports.compartmentId = void 0;
|
|
4
|
+
const pulumi = require("@pulumi/pulumi");
|
|
5
|
+
const stack = pulumi.getStack();
|
|
6
|
+
// Compartimento global
|
|
7
|
+
const infraConfig = new pulumi.Config("infra");
|
|
8
|
+
exports.compartmentId = infraConfig.require("compartmentId");
|
|
9
|
+
const tenancyConfig = new pulumi.Config("tenancy");
|
|
10
|
+
exports.namespace = tenancyConfig.require("namespace");
|
|
11
|
+
// Config Storage
|
|
12
|
+
const storageConfig = new pulumi.Config("storage");
|
|
13
|
+
const rawBuckets = storageConfig.requireObject("buckets");
|
|
14
|
+
// Normalización
|
|
15
|
+
exports.buckets = rawBuckets.map(bucket => ({
|
|
16
|
+
name: `${stack}-${bucket.name}`,
|
|
17
|
+
compartmentId: exports.compartmentId,
|
|
18
|
+
namespace: exports.namespace,
|
|
19
|
+
accessType: bucket.accessType ?? "NoPublicAccess",
|
|
20
|
+
versioning: bucket.versioning ?? "Disabled",
|
|
21
|
+
storageTier: bucket.storageTier ?? "Standard",
|
|
22
|
+
retentionRules: bucket.retentionRules ?? undefined,
|
|
23
|
+
}));
|
|
24
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/storage/config.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAIzC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAEhC,uBAAuB;AACvB,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,QAAA,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAElE,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACtC,QAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAE5D,iBAAiB;AACjB,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAkB,SAAS,CAAC,CAAC;AAE3E,gBAAgB;AACH,QAAA,OAAO,GAAoB,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE,IAAI,EAAE,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;IAC/B,aAAa,EAAb,qBAAa;IACb,SAAS,EAAT,iBAAS;IACT,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,gBAAgB;IACjD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,UAAU;IAC3C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU;IAC7C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS;CACnD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as oci from "@pulumi/oci";
|
|
2
|
+
export type BucketAccessType = "NoPublicAccess" | "ObjectRead" | "ObjectReadWithoutList";
|
|
3
|
+
export interface IRetentionRule {
|
|
4
|
+
name: string;
|
|
5
|
+
timeAmount: string;
|
|
6
|
+
timeUnit: "DAYS" | "YEARS";
|
|
7
|
+
}
|
|
8
|
+
export interface IBucketConfig {
|
|
9
|
+
name: string;
|
|
10
|
+
compartmentId: string;
|
|
11
|
+
namespace: string;
|
|
12
|
+
accessType?: BucketAccessType;
|
|
13
|
+
versioning?: "Enabled" | "Disabled";
|
|
14
|
+
storageTier?: "Standard" | "Archive";
|
|
15
|
+
retentionRules?: IRetentionRule[];
|
|
16
|
+
}
|
|
17
|
+
export interface IStorage {
|
|
18
|
+
buckets: oci.objectstorage.Bucket[];
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/storage/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as oci from "@pulumi/oci";
|
|
2
|
+
import { IBucketConfig, IStorage } from "./interfaces";
|
|
3
|
+
export declare class Storage implements IStorage {
|
|
4
|
+
private bucketsConfig;
|
|
5
|
+
buckets: oci.objectstorage.Bucket[];
|
|
6
|
+
constructor(bucketsConfig: IBucketConfig[]);
|
|
7
|
+
private buildBuckets;
|
|
8
|
+
private createBucket;
|
|
9
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Storage = void 0;
|
|
4
|
+
const oci = require("@pulumi/oci");
|
|
5
|
+
class Storage {
|
|
6
|
+
constructor(bucketsConfig) {
|
|
7
|
+
this.bucketsConfig = bucketsConfig;
|
|
8
|
+
this.buckets = [];
|
|
9
|
+
this.buildBuckets();
|
|
10
|
+
}
|
|
11
|
+
buildBuckets() {
|
|
12
|
+
this.bucketsConfig.forEach(cfg => {
|
|
13
|
+
const bucket = this.createBucket(cfg);
|
|
14
|
+
this.buckets.push(bucket);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
createBucket(cfg) {
|
|
18
|
+
return new oci.objectstorage.Bucket(cfg.name, {
|
|
19
|
+
compartmentId: cfg.compartmentId,
|
|
20
|
+
namespace: cfg.namespace,
|
|
21
|
+
name: cfg.name,
|
|
22
|
+
accessType: cfg.accessType,
|
|
23
|
+
storageTier: cfg.storageTier,
|
|
24
|
+
versioning: cfg.versioning,
|
|
25
|
+
retentionRules: cfg.retentionRules?.map(r => ({
|
|
26
|
+
displayName: r.name,
|
|
27
|
+
duration: {
|
|
28
|
+
timeAmount: r.timeAmount,
|
|
29
|
+
timeUnit: r.timeUnit,
|
|
30
|
+
},
|
|
31
|
+
})),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.Storage = Storage;
|
|
36
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage/storage.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AAGnC,MAAa,OAAO;IAGlB,YAAoB,aAA8B;QAA9B,kBAAa,GAAb,aAAa,CAAiB;QAF3C,YAAO,GAA+B,EAAE,CAAC;QAG9C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,GAAkB;QACrC,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YAC5C,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5C,WAAW,EAAE,CAAC,CAAC,IAAI;gBACnB,QAAQ,EAAE;oBACR,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;CACF;AA/BD,0BA+BC"}
|