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.
Files changed (107) hide show
  1. package/README.md +4 -0
  2. package/argocd/argocd.d.ts +22 -0
  3. package/argocd/argocd.js +266 -0
  4. package/argocd/argocd.js.map +1 -0
  5. package/argocd/config.d.ts +2 -0
  6. package/argocd/config.js +19 -0
  7. package/argocd/config.js.map +1 -0
  8. package/argocd/interfaces.d.ts +66 -0
  9. package/argocd/interfaces.js +3 -0
  10. package/argocd/interfaces.js.map +1 -0
  11. package/compute/compute.d.ts +11 -0
  12. package/compute/compute.js +56 -0
  13. package/compute/compute.js.map +1 -0
  14. package/compute/config.d.ts +2 -0
  15. package/compute/config.js +19 -0
  16. package/compute/config.js.map +1 -0
  17. package/compute/interfaces.d.ts +19 -0
  18. package/compute/interfaces.js +3 -0
  19. package/compute/interfaces.js.map +1 -0
  20. package/crds/config.d.ts +2 -0
  21. package/crds/config.js +9 -0
  22. package/crds/config.js.map +1 -0
  23. package/crds/crds.d.ts +13 -0
  24. package/crds/crds.js +42 -0
  25. package/crds/crds.js.map +1 -0
  26. package/crds/interfaces.d.ts +7 -0
  27. package/crds/interfaces.js +3 -0
  28. package/crds/interfaces.js.map +1 -0
  29. package/external-secrets/config.d.ts +5 -0
  30. package/external-secrets/config.js +12 -0
  31. package/external-secrets/config.js.map +1 -0
  32. package/external-secrets/externalsecrets.d.ts +22 -0
  33. package/external-secrets/externalsecrets.js +74 -0
  34. package/external-secrets/externalsecrets.js.map +1 -0
  35. package/external-secrets/interfaces.d.ts +10 -0
  36. package/external-secrets/interfaces.js +3 -0
  37. package/external-secrets/interfaces.js.map +1 -0
  38. package/iam/config.d.ts +2 -0
  39. package/iam/config.js +17 -0
  40. package/iam/config.js.map +1 -0
  41. package/iam/iam.d.ts +10 -0
  42. package/iam/iam.js +33 -0
  43. package/iam/iam.js.map +1 -0
  44. package/iam/interfaces.d.ts +12 -0
  45. package/iam/interfaces.js +3 -0
  46. package/iam/interfaces.js.map +1 -0
  47. package/index.d.ts +39 -0
  48. package/index.js +81 -0
  49. package/index.js.map +1 -0
  50. package/istio/config.d.ts +2 -0
  51. package/istio/config.js +18 -0
  52. package/istio/config.js.map +1 -0
  53. package/istio/interfaces.d.ts +18 -0
  54. package/istio/interfaces.js +3 -0
  55. package/istio/interfaces.js.map +1 -0
  56. package/istio/istio.d.ts +24 -0
  57. package/istio/istio.js +288 -0
  58. package/istio/istio.js.map +1 -0
  59. package/network/config.d.ts +3 -0
  60. package/network/config.js +23 -0
  61. package/network/config.js.map +1 -0
  62. package/network/interfaces.d.ts +31 -0
  63. package/network/interfaces.js +3 -0
  64. package/network/interfaces.js.map +1 -0
  65. package/network/network.d.ts +28 -0
  66. package/network/network.js +218 -0
  67. package/network/network.js.map +1 -0
  68. package/oke/config.d.ts +3 -0
  69. package/oke/config.js +25 -0
  70. package/oke/config.js.map +1 -0
  71. package/oke/interfaces.d.ts +40 -0
  72. package/oke/interfaces.js +3 -0
  73. package/oke/interfaces.js.map +1 -0
  74. package/oke/oke.d.ts +15 -0
  75. package/oke/oke.js +112 -0
  76. package/oke/oke.js.map +1 -0
  77. package/package.json +22 -0
  78. package/region/config.d.ts +2 -0
  79. package/region/config.js +9 -0
  80. package/region/config.js.map +1 -0
  81. package/region/interfaces.d.ts +7 -0
  82. package/region/interfaces.js +3 -0
  83. package/region/interfaces.js.map +1 -0
  84. package/region/region.d.ts +6 -0
  85. package/region/region.js +12 -0
  86. package/region/region.js.map +1 -0
  87. package/region/shortcode.d.ts +13 -0
  88. package/region/shortcode.js +22 -0
  89. package/region/shortcode.js.map +1 -0
  90. package/security/config.d.ts +3 -0
  91. package/security/config.js +27 -0
  92. package/security/config.js.map +1 -0
  93. package/security/interfaces.d.ts +23 -0
  94. package/security/interfaces.js +3 -0
  95. package/security/interfaces.js.map +1 -0
  96. package/security/security.d.ts +13 -0
  97. package/security/security.js +79 -0
  98. package/security/security.js.map +1 -0
  99. package/storage/config.d.ts +4 -0
  100. package/storage/config.js +24 -0
  101. package/storage/config.js.map +1 -0
  102. package/storage/interfaces.d.ts +19 -0
  103. package/storage/interfaces.js +3 -0
  104. package/storage/interfaces.js.map +1 -0
  105. package/storage/storage.d.ts +9 -0
  106. package/storage/storage.js +36 -0
  107. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -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
+ }
@@ -0,0 +1,2 @@
1
+ import { IRegionConfig } from "./interfaces";
2
+ export declare const regionConfig: IRegionConfig;
@@ -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,7 @@
1
+ export interface IRegionConfig {
2
+ name: string;
3
+ }
4
+ export interface IRegion {
5
+ name: string;
6
+ shortCode: string;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/region/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { IRegion, IRegionConfig } from "./interfaces";
2
+ export declare class Region implements IRegion {
3
+ readonly name: string;
4
+ readonly shortCode: string;
5
+ constructor(region: IRegionConfig);
6
+ }
@@ -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,3 @@
1
+ import { IVaultConfig } from "./interfaces";
2
+ export declare const compartmentId: string;
3
+ export declare const vaults: IVaultConfig[];
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -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,4 @@
1
+ import { IBucketConfig } from "./interfaces";
2
+ export declare const compartmentId: string;
3
+ export declare const namespace: string;
4
+ export declare const buckets: IBucketConfig[];
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -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"}