@reyemtech/nimbus 0.1.0
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/LICENSE +21 -0
- package/README.md +399 -0
- package/dist/cjs/aws/cluster.d.ts +32 -0
- package/dist/cjs/aws/cluster.d.ts.map +1 -0
- package/dist/cjs/aws/cluster.js +214 -0
- package/dist/cjs/aws/cluster.js.map +1 -0
- package/dist/cjs/aws/dns.d.ts +22 -0
- package/dist/cjs/aws/dns.d.ts.map +1 -0
- package/dist/cjs/aws/dns.js +95 -0
- package/dist/cjs/aws/dns.js.map +1 -0
- package/dist/cjs/aws/index.d.ts +10 -0
- package/dist/cjs/aws/index.d.ts.map +1 -0
- package/dist/cjs/aws/index.js +17 -0
- package/dist/cjs/aws/index.js.map +1 -0
- package/dist/cjs/aws/network.d.ts +27 -0
- package/dist/cjs/aws/network.d.ts.map +1 -0
- package/dist/cjs/aws/network.js +262 -0
- package/dist/cjs/aws/network.js.map +1 -0
- package/dist/cjs/aws/secrets.d.ts +26 -0
- package/dist/cjs/aws/secrets.d.ts.map +1 -0
- package/dist/cjs/aws/secrets.js +127 -0
- package/dist/cjs/aws/secrets.js.map +1 -0
- package/dist/cjs/azure/cluster.d.ts +44 -0
- package/dist/cjs/azure/cluster.d.ts.map +1 -0
- package/dist/cjs/azure/cluster.js +143 -0
- package/dist/cjs/azure/cluster.js.map +1 -0
- package/dist/cjs/azure/dns.d.ts +28 -0
- package/dist/cjs/azure/dns.d.ts.map +1 -0
- package/dist/cjs/azure/dns.js +169 -0
- package/dist/cjs/azure/dns.js.map +1 -0
- package/dist/cjs/azure/index.d.ts +10 -0
- package/dist/cjs/azure/index.d.ts.map +1 -0
- package/dist/cjs/azure/index.js +17 -0
- package/dist/cjs/azure/index.js.map +1 -0
- package/dist/cjs/azure/network.d.ts +28 -0
- package/dist/cjs/azure/network.d.ts.map +1 -0
- package/dist/cjs/azure/network.js +176 -0
- package/dist/cjs/azure/network.js.map +1 -0
- package/dist/cjs/azure/secrets.d.ts +37 -0
- package/dist/cjs/azure/secrets.d.ts.map +1 -0
- package/dist/cjs/azure/secrets.js +150 -0
- package/dist/cjs/azure/secrets.js.map +1 -0
- package/dist/cjs/cache/index.d.ts +7 -0
- package/dist/cjs/cache/index.d.ts.map +1 -0
- package/dist/cjs/cache/index.js +8 -0
- package/dist/cjs/cache/index.js.map +1 -0
- package/dist/cjs/cache/interfaces.d.ts +60 -0
- package/dist/cjs/cache/interfaces.d.ts.map +1 -0
- package/dist/cjs/cache/interfaces.js +11 -0
- package/dist/cjs/cache/interfaces.js.map +1 -0
- package/dist/cjs/cluster/index.d.ts +7 -0
- package/dist/cjs/cluster/index.d.ts.map +1 -0
- package/dist/cjs/cluster/index.js +8 -0
- package/dist/cjs/cluster/index.js.map +1 -0
- package/dist/cjs/cluster/interfaces.d.ts +120 -0
- package/dist/cjs/cluster/interfaces.d.ts.map +1 -0
- package/dist/cjs/cluster/interfaces.js +12 -0
- package/dist/cjs/cluster/interfaces.js.map +1 -0
- package/dist/cjs/database/index.d.ts +7 -0
- package/dist/cjs/database/index.d.ts.map +1 -0
- package/dist/cjs/database/index.js +8 -0
- package/dist/cjs/database/index.js.map +1 -0
- package/dist/cjs/database/interfaces.d.ts +93 -0
- package/dist/cjs/database/interfaces.d.ts.map +1 -0
- package/dist/cjs/database/interfaces.js +12 -0
- package/dist/cjs/database/interfaces.js.map +1 -0
- package/dist/cjs/dns/index.d.ts +7 -0
- package/dist/cjs/dns/index.d.ts.map +1 -0
- package/dist/cjs/dns/index.js +8 -0
- package/dist/cjs/dns/index.js.map +1 -0
- package/dist/cjs/dns/interfaces.d.ts +55 -0
- package/dist/cjs/dns/interfaces.d.ts.map +1 -0
- package/dist/cjs/dns/interfaces.js +11 -0
- package/dist/cjs/dns/interfaces.js.map +1 -0
- package/dist/cjs/factories/cluster.d.ts +45 -0
- package/dist/cjs/factories/cluster.d.ts.map +1 -0
- package/dist/cjs/factories/cluster.js +90 -0
- package/dist/cjs/factories/cluster.js.map +1 -0
- package/dist/cjs/factories/dns.d.ts +30 -0
- package/dist/cjs/factories/dns.d.ts.map +1 -0
- package/dist/cjs/factories/dns.js +56 -0
- package/dist/cjs/factories/dns.js.map +1 -0
- package/dist/cjs/factories/index.d.ts +15 -0
- package/dist/cjs/factories/index.d.ts.map +1 -0
- package/dist/cjs/factories/index.js +23 -0
- package/dist/cjs/factories/index.js.map +1 -0
- package/dist/cjs/factories/network.d.ts +40 -0
- package/dist/cjs/factories/network.d.ts.map +1 -0
- package/dist/cjs/factories/network.js +85 -0
- package/dist/cjs/factories/network.js.map +1 -0
- package/dist/cjs/factories/secrets.d.ts +38 -0
- package/dist/cjs/factories/secrets.d.ts.map +1 -0
- package/dist/cjs/factories/secrets.js +67 -0
- package/dist/cjs/factories/secrets.js.map +1 -0
- package/dist/cjs/factories/types.d.ts +75 -0
- package/dist/cjs/factories/types.d.ts.map +1 -0
- package/dist/cjs/factories/types.js +28 -0
- package/dist/cjs/factories/types.js.map +1 -0
- package/dist/cjs/global-lb/glb.d.ts +29 -0
- package/dist/cjs/global-lb/glb.d.ts.map +1 -0
- package/dist/cjs/global-lb/glb.js +220 -0
- package/dist/cjs/global-lb/glb.js.map +1 -0
- package/dist/cjs/global-lb/index.d.ts +8 -0
- package/dist/cjs/global-lb/index.d.ts.map +1 -0
- package/dist/cjs/global-lb/index.js +11 -0
- package/dist/cjs/global-lb/index.js.map +1 -0
- package/dist/cjs/global-lb/interfaces.d.ts +62 -0
- package/dist/cjs/global-lb/interfaces.d.ts.map +1 -0
- package/dist/cjs/global-lb/interfaces.js +11 -0
- package/dist/cjs/global-lb/interfaces.js.map +1 -0
- package/dist/cjs/index.d.ts +28 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +72 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/network/cidr.d.ts +92 -0
- package/dist/cjs/network/cidr.d.ts.map +1 -0
- package/dist/cjs/network/cidr.js +189 -0
- package/dist/cjs/network/cidr.js.map +1 -0
- package/dist/cjs/network/index.d.ts +8 -0
- package/dist/cjs/network/index.d.ts.map +1 -0
- package/dist/cjs/network/index.js +17 -0
- package/dist/cjs/network/index.js.map +1 -0
- package/dist/cjs/network/interfaces.d.ts +60 -0
- package/dist/cjs/network/interfaces.d.ts.map +1 -0
- package/dist/cjs/network/interfaces.js +12 -0
- package/dist/cjs/network/interfaces.js.map +1 -0
- package/dist/cjs/platform/index.d.ts +8 -0
- package/dist/cjs/platform/index.d.ts.map +1 -0
- package/dist/cjs/platform/index.js +11 -0
- package/dist/cjs/platform/index.js.map +1 -0
- package/dist/cjs/platform/interfaces.d.ts +86 -0
- package/dist/cjs/platform/interfaces.d.ts.map +1 -0
- package/dist/cjs/platform/interfaces.js +12 -0
- package/dist/cjs/platform/interfaces.js.map +1 -0
- package/dist/cjs/platform/stack.d.ts +32 -0
- package/dist/cjs/platform/stack.d.ts.map +1 -0
- package/dist/cjs/platform/stack.js +258 -0
- package/dist/cjs/platform/stack.js.map +1 -0
- package/dist/cjs/queue/index.d.ts +7 -0
- package/dist/cjs/queue/index.d.ts.map +1 -0
- package/dist/cjs/queue/index.js +8 -0
- package/dist/cjs/queue/index.js.map +1 -0
- package/dist/cjs/queue/interfaces.d.ts +46 -0
- package/dist/cjs/queue/interfaces.d.ts.map +1 -0
- package/dist/cjs/queue/interfaces.js +11 -0
- package/dist/cjs/queue/interfaces.js.map +1 -0
- package/dist/cjs/secrets/index.d.ts +7 -0
- package/dist/cjs/secrets/index.d.ts.map +1 -0
- package/dist/cjs/secrets/index.js +8 -0
- package/dist/cjs/secrets/index.js.map +1 -0
- package/dist/cjs/secrets/interfaces.d.ts +73 -0
- package/dist/cjs/secrets/interfaces.d.ts.map +1 -0
- package/dist/cjs/secrets/interfaces.js +11 -0
- package/dist/cjs/secrets/interfaces.js.map +1 -0
- package/dist/cjs/storage/index.d.ts +7 -0
- package/dist/cjs/storage/index.d.ts.map +1 -0
- package/dist/cjs/storage/index.js +8 -0
- package/dist/cjs/storage/index.js.map +1 -0
- package/dist/cjs/storage/interfaces.d.ts +63 -0
- package/dist/cjs/storage/interfaces.d.ts.map +1 -0
- package/dist/cjs/storage/interfaces.js +11 -0
- package/dist/cjs/storage/interfaces.js.map +1 -0
- package/dist/cjs/types/cloud-target.d.ts +89 -0
- package/dist/cjs/types/cloud-target.d.ts.map +1 -0
- package/dist/cjs/types/cloud-target.js +73 -0
- package/dist/cjs/types/cloud-target.js.map +1 -0
- package/dist/cjs/types/errors.d.ts +96 -0
- package/dist/cjs/types/errors.d.ts.map +1 -0
- package/dist/cjs/types/errors.js +127 -0
- package/dist/cjs/types/errors.js.map +1 -0
- package/dist/cjs/types/index.d.ts +10 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +33 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/tags.d.ts +53 -0
- package/dist/cjs/types/tags.d.ts.map +1 -0
- package/dist/cjs/types/tags.js +110 -0
- package/dist/cjs/types/tags.js.map +1 -0
- package/dist/cjs/types/validation.d.ts +63 -0
- package/dist/cjs/types/validation.d.ts.map +1 -0
- package/dist/cjs/types/validation.js +158 -0
- package/dist/cjs/types/validation.js.map +1 -0
- package/dist/esm/aws/cluster.d.ts +32 -0
- package/dist/esm/aws/cluster.d.ts.map +1 -0
- package/dist/esm/aws/cluster.js +214 -0
- package/dist/esm/aws/cluster.js.map +1 -0
- package/dist/esm/aws/dns.d.ts +22 -0
- package/dist/esm/aws/dns.d.ts.map +1 -0
- package/dist/esm/aws/dns.js +95 -0
- package/dist/esm/aws/dns.js.map +1 -0
- package/dist/esm/aws/index.d.ts +10 -0
- package/dist/esm/aws/index.d.ts.map +1 -0
- package/dist/esm/aws/index.js +17 -0
- package/dist/esm/aws/index.js.map +1 -0
- package/dist/esm/aws/network.d.ts +27 -0
- package/dist/esm/aws/network.d.ts.map +1 -0
- package/dist/esm/aws/network.js +262 -0
- package/dist/esm/aws/network.js.map +1 -0
- package/dist/esm/aws/secrets.d.ts +26 -0
- package/dist/esm/aws/secrets.d.ts.map +1 -0
- package/dist/esm/aws/secrets.js +127 -0
- package/dist/esm/aws/secrets.js.map +1 -0
- package/dist/esm/azure/cluster.d.ts +44 -0
- package/dist/esm/azure/cluster.d.ts.map +1 -0
- package/dist/esm/azure/cluster.js +143 -0
- package/dist/esm/azure/cluster.js.map +1 -0
- package/dist/esm/azure/dns.d.ts +28 -0
- package/dist/esm/azure/dns.d.ts.map +1 -0
- package/dist/esm/azure/dns.js +169 -0
- package/dist/esm/azure/dns.js.map +1 -0
- package/dist/esm/azure/index.d.ts +10 -0
- package/dist/esm/azure/index.d.ts.map +1 -0
- package/dist/esm/azure/index.js +17 -0
- package/dist/esm/azure/index.js.map +1 -0
- package/dist/esm/azure/network.d.ts +28 -0
- package/dist/esm/azure/network.d.ts.map +1 -0
- package/dist/esm/azure/network.js +176 -0
- package/dist/esm/azure/network.js.map +1 -0
- package/dist/esm/azure/secrets.d.ts +37 -0
- package/dist/esm/azure/secrets.d.ts.map +1 -0
- package/dist/esm/azure/secrets.js +150 -0
- package/dist/esm/azure/secrets.js.map +1 -0
- package/dist/esm/cache/index.d.ts +7 -0
- package/dist/esm/cache/index.d.ts.map +1 -0
- package/dist/esm/cache/index.js +8 -0
- package/dist/esm/cache/index.js.map +1 -0
- package/dist/esm/cache/interfaces.d.ts +60 -0
- package/dist/esm/cache/interfaces.d.ts.map +1 -0
- package/dist/esm/cache/interfaces.js +11 -0
- package/dist/esm/cache/interfaces.js.map +1 -0
- package/dist/esm/cluster/index.d.ts +7 -0
- package/dist/esm/cluster/index.d.ts.map +1 -0
- package/dist/esm/cluster/index.js +8 -0
- package/dist/esm/cluster/index.js.map +1 -0
- package/dist/esm/cluster/interfaces.d.ts +120 -0
- package/dist/esm/cluster/interfaces.d.ts.map +1 -0
- package/dist/esm/cluster/interfaces.js +12 -0
- package/dist/esm/cluster/interfaces.js.map +1 -0
- package/dist/esm/database/index.d.ts +7 -0
- package/dist/esm/database/index.d.ts.map +1 -0
- package/dist/esm/database/index.js +8 -0
- package/dist/esm/database/index.js.map +1 -0
- package/dist/esm/database/interfaces.d.ts +93 -0
- package/dist/esm/database/interfaces.d.ts.map +1 -0
- package/dist/esm/database/interfaces.js +12 -0
- package/dist/esm/database/interfaces.js.map +1 -0
- package/dist/esm/dns/index.d.ts +7 -0
- package/dist/esm/dns/index.d.ts.map +1 -0
- package/dist/esm/dns/index.js +8 -0
- package/dist/esm/dns/index.js.map +1 -0
- package/dist/esm/dns/interfaces.d.ts +55 -0
- package/dist/esm/dns/interfaces.d.ts.map +1 -0
- package/dist/esm/dns/interfaces.js +11 -0
- package/dist/esm/dns/interfaces.js.map +1 -0
- package/dist/esm/factories/cluster.d.ts +45 -0
- package/dist/esm/factories/cluster.d.ts.map +1 -0
- package/dist/esm/factories/cluster.js +90 -0
- package/dist/esm/factories/cluster.js.map +1 -0
- package/dist/esm/factories/dns.d.ts +30 -0
- package/dist/esm/factories/dns.d.ts.map +1 -0
- package/dist/esm/factories/dns.js +56 -0
- package/dist/esm/factories/dns.js.map +1 -0
- package/dist/esm/factories/index.d.ts +15 -0
- package/dist/esm/factories/index.d.ts.map +1 -0
- package/dist/esm/factories/index.js +23 -0
- package/dist/esm/factories/index.js.map +1 -0
- package/dist/esm/factories/network.d.ts +40 -0
- package/dist/esm/factories/network.d.ts.map +1 -0
- package/dist/esm/factories/network.js +85 -0
- package/dist/esm/factories/network.js.map +1 -0
- package/dist/esm/factories/secrets.d.ts +38 -0
- package/dist/esm/factories/secrets.d.ts.map +1 -0
- package/dist/esm/factories/secrets.js +67 -0
- package/dist/esm/factories/secrets.js.map +1 -0
- package/dist/esm/factories/types.d.ts +75 -0
- package/dist/esm/factories/types.d.ts.map +1 -0
- package/dist/esm/factories/types.js +28 -0
- package/dist/esm/factories/types.js.map +1 -0
- package/dist/esm/global-lb/glb.d.ts +29 -0
- package/dist/esm/global-lb/glb.d.ts.map +1 -0
- package/dist/esm/global-lb/glb.js +220 -0
- package/dist/esm/global-lb/glb.js.map +1 -0
- package/dist/esm/global-lb/index.d.ts +8 -0
- package/dist/esm/global-lb/index.d.ts.map +1 -0
- package/dist/esm/global-lb/index.js +11 -0
- package/dist/esm/global-lb/index.js.map +1 -0
- package/dist/esm/global-lb/interfaces.d.ts +62 -0
- package/dist/esm/global-lb/interfaces.d.ts.map +1 -0
- package/dist/esm/global-lb/interfaces.js +11 -0
- package/dist/esm/global-lb/interfaces.js.map +1 -0
- package/dist/esm/index.d.ts +28 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/network/cidr.d.ts +92 -0
- package/dist/esm/network/cidr.d.ts.map +1 -0
- package/dist/esm/network/cidr.js +189 -0
- package/dist/esm/network/cidr.js.map +1 -0
- package/dist/esm/network/index.d.ts +8 -0
- package/dist/esm/network/index.d.ts.map +1 -0
- package/dist/esm/network/index.js +17 -0
- package/dist/esm/network/index.js.map +1 -0
- package/dist/esm/network/interfaces.d.ts +60 -0
- package/dist/esm/network/interfaces.d.ts.map +1 -0
- package/dist/esm/network/interfaces.js +12 -0
- package/dist/esm/network/interfaces.js.map +1 -0
- package/dist/esm/platform/index.d.ts +8 -0
- package/dist/esm/platform/index.d.ts.map +1 -0
- package/dist/esm/platform/index.js +11 -0
- package/dist/esm/platform/index.js.map +1 -0
- package/dist/esm/platform/interfaces.d.ts +86 -0
- package/dist/esm/platform/interfaces.d.ts.map +1 -0
- package/dist/esm/platform/interfaces.js +12 -0
- package/dist/esm/platform/interfaces.js.map +1 -0
- package/dist/esm/platform/stack.d.ts +32 -0
- package/dist/esm/platform/stack.d.ts.map +1 -0
- package/dist/esm/platform/stack.js +258 -0
- package/dist/esm/platform/stack.js.map +1 -0
- package/dist/esm/queue/index.d.ts +7 -0
- package/dist/esm/queue/index.d.ts.map +1 -0
- package/dist/esm/queue/index.js +8 -0
- package/dist/esm/queue/index.js.map +1 -0
- package/dist/esm/queue/interfaces.d.ts +46 -0
- package/dist/esm/queue/interfaces.d.ts.map +1 -0
- package/dist/esm/queue/interfaces.js +11 -0
- package/dist/esm/queue/interfaces.js.map +1 -0
- package/dist/esm/secrets/index.d.ts +7 -0
- package/dist/esm/secrets/index.d.ts.map +1 -0
- package/dist/esm/secrets/index.js +8 -0
- package/dist/esm/secrets/index.js.map +1 -0
- package/dist/esm/secrets/interfaces.d.ts +73 -0
- package/dist/esm/secrets/interfaces.d.ts.map +1 -0
- package/dist/esm/secrets/interfaces.js +11 -0
- package/dist/esm/secrets/interfaces.js.map +1 -0
- package/dist/esm/storage/index.d.ts +7 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +8 -0
- package/dist/esm/storage/index.js.map +1 -0
- package/dist/esm/storage/interfaces.d.ts +63 -0
- package/dist/esm/storage/interfaces.d.ts.map +1 -0
- package/dist/esm/storage/interfaces.js +11 -0
- package/dist/esm/storage/interfaces.js.map +1 -0
- package/dist/esm/types/cloud-target.d.ts +89 -0
- package/dist/esm/types/cloud-target.d.ts.map +1 -0
- package/dist/esm/types/cloud-target.js +73 -0
- package/dist/esm/types/cloud-target.js.map +1 -0
- package/dist/esm/types/errors.d.ts +96 -0
- package/dist/esm/types/errors.d.ts.map +1 -0
- package/dist/esm/types/errors.js +127 -0
- package/dist/esm/types/errors.js.map +1 -0
- package/dist/esm/types/index.d.ts +10 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +33 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/tags.d.ts +53 -0
- package/dist/esm/types/tags.d.ts.map +1 -0
- package/dist/esm/types/tags.js +110 -0
- package/dist/esm/types/tags.js.map +1 -0
- package/dist/esm/types/validation.d.ts +63 -0
- package/dist/esm/types/validation.d.ts.map +1 -0
- package/dist/esm/types/validation.js +158 -0
- package/dist/esm/types/validation.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Route 53 DNS implementation.
|
|
3
|
+
*
|
|
4
|
+
* @module aws/dns
|
|
5
|
+
*/
|
|
6
|
+
import type { IDns, IDnsConfig } from "../dns";
|
|
7
|
+
/**
|
|
8
|
+
* Create a Route 53 hosted zone with optional initial records.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const dns = createRoute53Dns("prod", {
|
|
13
|
+
* cloud: "aws",
|
|
14
|
+
* zoneName: "example.com",
|
|
15
|
+
* records: [
|
|
16
|
+
* { name: "app", type: "A", values: ["1.2.3.4"], ttl: 300 },
|
|
17
|
+
* ],
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function createRoute53Dns(name: string, config: IDnsConfig): IDns;
|
|
22
|
+
//# sourceMappingURL=dns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.d.ts","sourceRoot":"","sources":["../../../src/aws/dns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAc,MAAM,QAAQ,CAAC;AAG3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6BvE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS Route 53 DNS implementation.
|
|
4
|
+
*
|
|
5
|
+
* @module aws/dns
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.createRoute53Dns = createRoute53Dns;
|
|
42
|
+
const aws = __importStar(require("@pulumi/aws"));
|
|
43
|
+
const types_1 = require("../types");
|
|
44
|
+
/**
|
|
45
|
+
* Create a Route 53 hosted zone with optional initial records.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const dns = createRoute53Dns("prod", {
|
|
50
|
+
* cloud: "aws",
|
|
51
|
+
* zoneName: "example.com",
|
|
52
|
+
* records: [
|
|
53
|
+
* { name: "app", type: "A", values: ["1.2.3.4"], ttl: 300 },
|
|
54
|
+
* ],
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
function createRoute53Dns(name, config) {
|
|
59
|
+
const cloud = Array.isArray(config.cloud) ? (config.cloud[0] ?? "aws") : config.cloud;
|
|
60
|
+
const target = (0, types_1.resolveCloudTarget)(cloud);
|
|
61
|
+
const tags = config.tags ?? {};
|
|
62
|
+
const zone = new aws.route53.Zone(`${name}-zone`, {
|
|
63
|
+
name: config.zoneName,
|
|
64
|
+
tags: { ...tags, Name: `${name}-zone` },
|
|
65
|
+
});
|
|
66
|
+
// Create initial records
|
|
67
|
+
if (config.records) {
|
|
68
|
+
for (const rec of config.records) {
|
|
69
|
+
createRecord(name, zone, rec);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
name,
|
|
74
|
+
cloud: target,
|
|
75
|
+
zoneId: zone.zoneId,
|
|
76
|
+
zoneName: config.zoneName,
|
|
77
|
+
nameServers: zone.nameServers,
|
|
78
|
+
nativeResource: zone,
|
|
79
|
+
addRecord(record) {
|
|
80
|
+
createRecord(name, zone, record);
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function createRecord(name, zone, record) {
|
|
85
|
+
const fqdn = record.name === "@" ? "" : record.name ? `${record.name}.` : "";
|
|
86
|
+
const resourceName = `${name}-${record.name || "root"}-${record.type.toLowerCase()}`;
|
|
87
|
+
return new aws.route53.Record(resourceName, {
|
|
88
|
+
zoneId: zone.zoneId,
|
|
89
|
+
name: zone.name.apply((zoneName) => `${fqdn}${zoneName}`),
|
|
90
|
+
type: record.type,
|
|
91
|
+
ttl: record.ttl ?? 300,
|
|
92
|
+
records: [...record.values],
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=dns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/aws/dns.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBH,4CA6BC;AAhDD,iDAAmC;AAGnC,oCAA8C;AAE9C;;;;;;;;;;;;;GAaG;AACH,SAAgB,gBAAgB,CAAC,IAAY,EAAE,MAAkB;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACtF,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE;QAChD,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE;KACxC,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,IAAI,CAAC,WAAmD;QACrE,cAAc,EAAE,IAAI;QACpB,SAAS,CAAC,MAAkB;YAC1B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,IAAsB,EACtB,MAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IAErF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE;QAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC;QACzD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG;QACtB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS provider implementations for @reyemtech/nimbus.
|
|
3
|
+
*
|
|
4
|
+
* @module aws
|
|
5
|
+
*/
|
|
6
|
+
export { createAwsNetwork, type IAwsNetworkOptions } from "./network";
|
|
7
|
+
export { createEksCluster, type IEksOptions } from "./cluster";
|
|
8
|
+
export { createRoute53Dns } from "./dns";
|
|
9
|
+
export { createAwsSecrets } from "./secrets";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/aws/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS provider implementations for @reyemtech/nimbus.
|
|
4
|
+
*
|
|
5
|
+
* @module aws
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.createAwsSecrets = exports.createRoute53Dns = exports.createEksCluster = exports.createAwsNetwork = void 0;
|
|
9
|
+
var network_1 = require("./network");
|
|
10
|
+
Object.defineProperty(exports, "createAwsNetwork", { enumerable: true, get: function () { return network_1.createAwsNetwork; } });
|
|
11
|
+
var cluster_1 = require("./cluster");
|
|
12
|
+
Object.defineProperty(exports, "createEksCluster", { enumerable: true, get: function () { return cluster_1.createEksCluster; } });
|
|
13
|
+
var dns_1 = require("./dns");
|
|
14
|
+
Object.defineProperty(exports, "createRoute53Dns", { enumerable: true, get: function () { return dns_1.createRoute53Dns; } });
|
|
15
|
+
var secrets_1 = require("./secrets");
|
|
16
|
+
Object.defineProperty(exports, "createAwsSecrets", { enumerable: true, get: function () { return secrets_1.createAwsSecrets; } });
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/aws/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qCAAsE;AAA7D,2GAAA,gBAAgB,OAAA;AACzB,qCAA+D;AAAtD,2GAAA,gBAAgB,OAAA;AACzB,6BAAyC;AAAhC,uGAAA,gBAAgB,OAAA;AACzB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS network implementation — VPC, subnets, NAT (managed or fck-nat).
|
|
3
|
+
*
|
|
4
|
+
* @module aws/network
|
|
5
|
+
*/
|
|
6
|
+
import type { INetwork, INetworkConfig } from "../network";
|
|
7
|
+
/** AWS-specific network options beyond the base config. */
|
|
8
|
+
export interface IAwsNetworkOptions {
|
|
9
|
+
/** fck-nat instance type. Default: "t4g.nano". */
|
|
10
|
+
readonly fckNatInstanceType?: string;
|
|
11
|
+
/** Number of AZs to use. Default: 2. */
|
|
12
|
+
readonly availabilityZoneCount?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create an AWS VPC with public/private subnets and optional NAT.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const network = createAwsNetwork("prod", {
|
|
20
|
+
* cloud: "aws",
|
|
21
|
+
* cidr: "10.0.0.0/16",
|
|
22
|
+
* natStrategy: "fck-nat",
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function createAwsNetwork(name: string, config: INetworkConfig, options?: IAwsNetworkOptions): INetwork;
|
|
27
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/aws/network.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAGxE,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wCAAwC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,QAAQ,CAmHV"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS network implementation — VPC, subnets, NAT (managed or fck-nat).
|
|
4
|
+
*
|
|
5
|
+
* @module aws/network
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.createAwsNetwork = createAwsNetwork;
|
|
42
|
+
const aws = __importStar(require("@pulumi/aws"));
|
|
43
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
44
|
+
const types_1 = require("../types");
|
|
45
|
+
/**
|
|
46
|
+
* Create an AWS VPC with public/private subnets and optional NAT.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const network = createAwsNetwork("prod", {
|
|
51
|
+
* cloud: "aws",
|
|
52
|
+
* cidr: "10.0.0.0/16",
|
|
53
|
+
* natStrategy: "fck-nat",
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
function createAwsNetwork(name, config, options) {
|
|
58
|
+
const cloud = Array.isArray(config.cloud) ? (config.cloud[0] ?? "aws") : config.cloud;
|
|
59
|
+
const target = (0, types_1.resolveCloudTarget)(cloud);
|
|
60
|
+
const cidr = config.cidr ?? "10.0.0.0/16";
|
|
61
|
+
const azCount = options?.availabilityZoneCount ?? 2;
|
|
62
|
+
const natStrategy = config.natStrategy ?? "managed";
|
|
63
|
+
const tags = config.tags ?? {};
|
|
64
|
+
const vpc = new aws.ec2.Vpc(`${name}-vpc`, {
|
|
65
|
+
cidrBlock: cidr,
|
|
66
|
+
enableDnsHostnames: config.enableDnsHostnames ?? true,
|
|
67
|
+
enableDnsSupport: config.enableDnsSupport ?? true,
|
|
68
|
+
tags: { ...tags, Name: `${name}-vpc` },
|
|
69
|
+
});
|
|
70
|
+
const igw = new aws.ec2.InternetGateway(`${name}-igw`, {
|
|
71
|
+
vpcId: vpc.id,
|
|
72
|
+
tags: { ...tags, Name: `${name}-igw` },
|
|
73
|
+
});
|
|
74
|
+
const azs = aws.getAvailabilityZonesOutput({ state: "available" });
|
|
75
|
+
const azNames = azs.names.apply((names) => names.slice(0, azCount));
|
|
76
|
+
// Public subnets
|
|
77
|
+
const publicSubnets = azNames.apply((names) => names.map((az, i) => new aws.ec2.Subnet(`${name}-public-${i}`, {
|
|
78
|
+
vpcId: vpc.id,
|
|
79
|
+
cidrBlock: `${cidr.split(".").slice(0, 2).join(".")}.${i + 1}.0/24`,
|
|
80
|
+
availabilityZone: az,
|
|
81
|
+
mapPublicIpOnLaunch: true,
|
|
82
|
+
tags: {
|
|
83
|
+
...tags,
|
|
84
|
+
Name: `${name}-public-${az}`,
|
|
85
|
+
"kubernetes.io/role/elb": "1",
|
|
86
|
+
},
|
|
87
|
+
})));
|
|
88
|
+
// Private subnets
|
|
89
|
+
const privateSubnets = azNames.apply((names) => names.map((az, i) => new aws.ec2.Subnet(`${name}-private-${i}`, {
|
|
90
|
+
vpcId: vpc.id,
|
|
91
|
+
cidrBlock: `${cidr.split(".").slice(0, 2).join(".")}.${i + 10}.0/24`,
|
|
92
|
+
availabilityZone: az,
|
|
93
|
+
tags: {
|
|
94
|
+
...tags,
|
|
95
|
+
Name: `${name}-private-${az}`,
|
|
96
|
+
"kubernetes.io/role/internal-elb": "1",
|
|
97
|
+
},
|
|
98
|
+
})));
|
|
99
|
+
// Public route table
|
|
100
|
+
const publicRt = new aws.ec2.RouteTable(`${name}-public-rt`, {
|
|
101
|
+
vpcId: vpc.id,
|
|
102
|
+
routes: [{ cidrBlock: "0.0.0.0/0", gatewayId: igw.id }],
|
|
103
|
+
tags: { ...tags, Name: `${name}-public-rt` },
|
|
104
|
+
});
|
|
105
|
+
publicSubnets.apply((subnets) => subnets.map((subnet, i) => new aws.ec2.RouteTableAssociation(`${name}-public-rta-${i}`, {
|
|
106
|
+
subnetId: subnet.id,
|
|
107
|
+
routeTableId: publicRt.id,
|
|
108
|
+
})));
|
|
109
|
+
// NAT setup
|
|
110
|
+
let natGatewayId;
|
|
111
|
+
if (natStrategy === "fck-nat") {
|
|
112
|
+
natGatewayId = createFckNat(name, vpc, publicSubnets, privateSubnets, cidr, tags, options);
|
|
113
|
+
}
|
|
114
|
+
else if (natStrategy === "managed") {
|
|
115
|
+
natGatewayId = createManagedNat(name, vpc, igw, publicSubnets, privateSubnets, tags);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// natStrategy === "none" — no NAT, private subnets have no internet
|
|
119
|
+
const privateRt = new aws.ec2.RouteTable(`${name}-private-rt`, {
|
|
120
|
+
vpcId: vpc.id,
|
|
121
|
+
tags: { ...tags, Name: `${name}-private-rt` },
|
|
122
|
+
});
|
|
123
|
+
privateSubnets.apply((subnets) => subnets.map((subnet, i) => new aws.ec2.RouteTableAssociation(`${name}-private-rta-${i}`, {
|
|
124
|
+
subnetId: subnet.id,
|
|
125
|
+
routeTableId: privateRt.id,
|
|
126
|
+
})));
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
name,
|
|
130
|
+
cloud: target,
|
|
131
|
+
vpcId: vpc.id,
|
|
132
|
+
cidr,
|
|
133
|
+
publicSubnetIds: publicSubnets.apply((s) => pulumi.all(s.map((sub) => sub.id))),
|
|
134
|
+
privateSubnetIds: privateSubnets.apply((s) => pulumi.all(s.map((sub) => sub.id))),
|
|
135
|
+
natGatewayId,
|
|
136
|
+
nativeResource: vpc,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function createFckNat(name, vpc, publicSubnets, privateSubnets, cidr, tags, options) {
|
|
140
|
+
const instanceType = options?.fckNatInstanceType ?? "t4g.nano";
|
|
141
|
+
const fckNatAmi = aws.ec2.getAmiOutput({
|
|
142
|
+
mostRecent: true,
|
|
143
|
+
owners: ["568608671756"],
|
|
144
|
+
filters: [
|
|
145
|
+
{ name: "name", values: ["fck-nat-al2023-*-arm64-ebs"] },
|
|
146
|
+
{ name: "architecture", values: ["arm64"] },
|
|
147
|
+
],
|
|
148
|
+
});
|
|
149
|
+
const sg = new aws.ec2.SecurityGroup(`${name}-fck-nat-sg`, {
|
|
150
|
+
namePrefix: `${name}-fck-nat`,
|
|
151
|
+
vpcId: vpc.id,
|
|
152
|
+
description: "fck-nat instance security group",
|
|
153
|
+
ingress: [{ fromPort: 0, toPort: 0, protocol: "-1", cidrBlocks: [cidr] }],
|
|
154
|
+
egress: [{ fromPort: 0, toPort: 0, protocol: "-1", cidrBlocks: ["0.0.0.0/0"] }],
|
|
155
|
+
tags: { ...tags, Name: `${name}-fck-nat-sg` },
|
|
156
|
+
});
|
|
157
|
+
const eni = new aws.ec2.NetworkInterface(`${name}-fck-nat-eni`, {
|
|
158
|
+
subnetId: publicSubnets.apply((s) => s[0].id),
|
|
159
|
+
securityGroups: [sg.id],
|
|
160
|
+
sourceDestCheck: false,
|
|
161
|
+
tags: { ...tags, Name: `${name}-fck-nat-eni` },
|
|
162
|
+
});
|
|
163
|
+
new aws.ec2.Eip(`${name}-fck-nat-eip`, {
|
|
164
|
+
domain: "vpc",
|
|
165
|
+
networkInterface: eni.id,
|
|
166
|
+
tags: { ...tags, Name: `${name}-fck-nat-eip` },
|
|
167
|
+
});
|
|
168
|
+
const role = new aws.iam.Role(`${name}-fck-nat-role`, {
|
|
169
|
+
namePrefix: `${name}-fck-nat`,
|
|
170
|
+
assumeRolePolicy: JSON.stringify({
|
|
171
|
+
Version: "2012-10-17",
|
|
172
|
+
Statement: [
|
|
173
|
+
{
|
|
174
|
+
Action: "sts:AssumeRole",
|
|
175
|
+
Effect: "Allow",
|
|
176
|
+
Principal: { Service: "ec2.amazonaws.com" },
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
}),
|
|
180
|
+
inlinePolicies: [
|
|
181
|
+
{
|
|
182
|
+
name: "fck-nat-eni",
|
|
183
|
+
policy: JSON.stringify({
|
|
184
|
+
Version: "2012-10-17",
|
|
185
|
+
Statement: [
|
|
186
|
+
{
|
|
187
|
+
Effect: "Allow",
|
|
188
|
+
Action: [
|
|
189
|
+
"ec2:AttachNetworkInterface",
|
|
190
|
+
"ec2:ModifyNetworkInterfaceAttribute",
|
|
191
|
+
"ec2:AssociateAddress",
|
|
192
|
+
"ec2:DisassociateAddress",
|
|
193
|
+
],
|
|
194
|
+
Resource: "*",
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
}),
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
tags,
|
|
201
|
+
});
|
|
202
|
+
const instanceProfile = new aws.iam.InstanceProfile(`${name}-fck-nat-profile`, {
|
|
203
|
+
namePrefix: `${name}-fck-nat`,
|
|
204
|
+
role: role.name,
|
|
205
|
+
});
|
|
206
|
+
const lt = new aws.ec2.LaunchTemplate(`${name}-fck-nat-lt`, {
|
|
207
|
+
namePrefix: `${name}-fck-nat`,
|
|
208
|
+
imageId: fckNatAmi.id,
|
|
209
|
+
instanceType,
|
|
210
|
+
vpcSecurityGroupIds: [sg.id],
|
|
211
|
+
iamInstanceProfile: { name: instanceProfile.name },
|
|
212
|
+
userData: eni.id.apply((eniId) => Buffer.from(`#!/bin/bash\necho "eni_id=${eniId}" >> /etc/fck-nat.conf\nservice fck-nat restart\n`).toString("base64")),
|
|
213
|
+
tagSpecifications: [
|
|
214
|
+
{
|
|
215
|
+
resourceType: "instance",
|
|
216
|
+
tags: { ...tags, Name: `${name}-fck-nat` },
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
tags,
|
|
220
|
+
});
|
|
221
|
+
new aws.autoscaling.Group(`${name}-fck-nat-asg`, {
|
|
222
|
+
name: `${name}-fck-nat-asg`,
|
|
223
|
+
vpcZoneIdentifiers: [publicSubnets.apply((s) => s[0].id)],
|
|
224
|
+
minSize: 1,
|
|
225
|
+
maxSize: 1,
|
|
226
|
+
desiredCapacity: 1,
|
|
227
|
+
launchTemplate: { id: lt.id, version: "$Latest" },
|
|
228
|
+
});
|
|
229
|
+
// Private route table through fck-nat ENI
|
|
230
|
+
const privateRt = new aws.ec2.RouteTable(`${name}-private-rt`, {
|
|
231
|
+
vpcId: vpc.id,
|
|
232
|
+
routes: [{ cidrBlock: "0.0.0.0/0", networkInterfaceId: eni.id }],
|
|
233
|
+
tags: { ...tags, Name: `${name}-private-rt` },
|
|
234
|
+
});
|
|
235
|
+
privateSubnets.apply((subnets) => subnets.map((subnet, i) => new aws.ec2.RouteTableAssociation(`${name}-private-rta-${i}`, {
|
|
236
|
+
subnetId: subnet.id,
|
|
237
|
+
routeTableId: privateRt.id,
|
|
238
|
+
})));
|
|
239
|
+
return eni.id;
|
|
240
|
+
}
|
|
241
|
+
function createManagedNat(name, _vpc, igw, publicSubnets, privateSubnets, tags) {
|
|
242
|
+
const eip = new aws.ec2.Eip(`${name}-nat-eip`, {
|
|
243
|
+
domain: "vpc",
|
|
244
|
+
tags: { ...tags, Name: `${name}-nat-eip` },
|
|
245
|
+
}, { dependsOn: [igw] });
|
|
246
|
+
const natGw = new aws.ec2.NatGateway(`${name}-nat`, {
|
|
247
|
+
allocationId: eip.id,
|
|
248
|
+
subnetId: publicSubnets.apply((s) => s[0].id),
|
|
249
|
+
tags: { ...tags, Name: `${name}-nat` },
|
|
250
|
+
});
|
|
251
|
+
const privateRt = new aws.ec2.RouteTable(`${name}-private-rt`, {
|
|
252
|
+
vpcId: _vpc.id,
|
|
253
|
+
routes: [{ cidrBlock: "0.0.0.0/0", natGatewayId: natGw.id }],
|
|
254
|
+
tags: { ...tags, Name: `${name}-private-rt` },
|
|
255
|
+
});
|
|
256
|
+
privateSubnets.apply((subnets) => subnets.map((subnet, i) => new aws.ec2.RouteTableAssociation(`${name}-private-rta-${i}`, {
|
|
257
|
+
subnetId: subnet.id,
|
|
258
|
+
routeTableId: privateRt.id,
|
|
259
|
+
})));
|
|
260
|
+
return natGw.id;
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/aws/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Secrets Manager implementation.
|
|
3
|
+
*
|
|
4
|
+
* @module aws/secrets
|
|
5
|
+
*/
|
|
6
|
+
import type { ISecrets, ISecretsConfig } from "../secrets";
|
|
7
|
+
/**
|
|
8
|
+
* Create an AWS Secrets Manager store.
|
|
9
|
+
*
|
|
10
|
+
* Each `putSecret(path, data)` call creates a Secret resource with
|
|
11
|
+
* JSON-encoded key-value pairs. `getSecretRef(ref)` retrieves a
|
|
12
|
+
* specific key from a stored secret.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const secrets = createAwsSecrets("prod", {
|
|
17
|
+
* cloud: "aws",
|
|
18
|
+
* backend: "aws-secrets-manager",
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* secrets.putSecret("database", { host: "db.example.com", password: dbPassword });
|
|
22
|
+
* const pw = secrets.getSecretRef({ path: "database", key: "password" });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function createAwsSecrets(name: string, config: ISecretsConfig): ISecrets;
|
|
26
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/aws/secrets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAc,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGvE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,QAAQ,CA6E/E"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS Secrets Manager implementation.
|
|
4
|
+
*
|
|
5
|
+
* @module aws/secrets
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.createAwsSecrets = createAwsSecrets;
|
|
42
|
+
const aws = __importStar(require("@pulumi/aws"));
|
|
43
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
44
|
+
const types_1 = require("../types");
|
|
45
|
+
/**
|
|
46
|
+
* Create an AWS Secrets Manager store.
|
|
47
|
+
*
|
|
48
|
+
* Each `putSecret(path, data)` call creates a Secret resource with
|
|
49
|
+
* JSON-encoded key-value pairs. `getSecretRef(ref)` retrieves a
|
|
50
|
+
* specific key from a stored secret.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const secrets = createAwsSecrets("prod", {
|
|
55
|
+
* cloud: "aws",
|
|
56
|
+
* backend: "aws-secrets-manager",
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* secrets.putSecret("database", { host: "db.example.com", password: dbPassword });
|
|
60
|
+
* const pw = secrets.getSecretRef({ path: "database", key: "password" });
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
function createAwsSecrets(name, config) {
|
|
64
|
+
const cloud = Array.isArray(config.cloud) ? (config.cloud[0] ?? "aws") : config.cloud;
|
|
65
|
+
const target = (0, types_1.resolveCloudTarget)(cloud);
|
|
66
|
+
const tags = config.tags ?? {};
|
|
67
|
+
// Track created secrets so getSecretRef can resolve them
|
|
68
|
+
const secretResources = new Map();
|
|
69
|
+
// A "store" resource to serve as the nativeResource escape hatch.
|
|
70
|
+
// We use a dummy SSM parameter to represent the store itself.
|
|
71
|
+
const store = new aws.ssm.Parameter(`${name}-secrets-store`, {
|
|
72
|
+
name: `/${name}/secrets-store`,
|
|
73
|
+
type: aws.ssm.ParameterType.String,
|
|
74
|
+
value: "managed-by-nimbus",
|
|
75
|
+
tags: { ...tags, Name: `${name}-secrets-store` },
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
name,
|
|
79
|
+
cloud: target,
|
|
80
|
+
backend: "aws-secrets-manager",
|
|
81
|
+
nativeResource: store,
|
|
82
|
+
putSecret(path, data) {
|
|
83
|
+
const secretName = `${name}/${path}`;
|
|
84
|
+
const resourceName = `${name}-${path.replace(/\//g, "-")}`;
|
|
85
|
+
const secret = new aws.secretsmanager.Secret(resourceName, {
|
|
86
|
+
namePrefix: secretName,
|
|
87
|
+
tags: { ...tags, Name: secretName },
|
|
88
|
+
});
|
|
89
|
+
// Store data as JSON
|
|
90
|
+
const secretString = pulumi.all(data).apply((resolved) => JSON.stringify(resolved));
|
|
91
|
+
new aws.secretsmanager.SecretVersion(`${resourceName}-v`, {
|
|
92
|
+
secretId: secret.id,
|
|
93
|
+
secretString,
|
|
94
|
+
});
|
|
95
|
+
secretResources.set(path, secret);
|
|
96
|
+
},
|
|
97
|
+
getSecretRef(ref) {
|
|
98
|
+
const secret = secretResources.get(ref.path);
|
|
99
|
+
const { key } = ref;
|
|
100
|
+
if (!secret) {
|
|
101
|
+
// Secret not created via putSecret — look up by name convention
|
|
102
|
+
const lookup = aws.secretsmanager.getSecretVersionOutput({
|
|
103
|
+
secretId: `${name}/${ref.path}`,
|
|
104
|
+
});
|
|
105
|
+
if (key) {
|
|
106
|
+
return lookup.secretString.apply((s) => {
|
|
107
|
+
const parsed = JSON.parse(s);
|
|
108
|
+
return parsed[key] ?? "";
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return lookup.secretString;
|
|
112
|
+
}
|
|
113
|
+
// Get the current version of the secret
|
|
114
|
+
const version = aws.secretsmanager.getSecretVersionOutput({
|
|
115
|
+
secretId: secret.id,
|
|
116
|
+
});
|
|
117
|
+
if (key) {
|
|
118
|
+
return version.secretString.apply((s) => {
|
|
119
|
+
const parsed = JSON.parse(s);
|
|
120
|
+
return parsed[key] ?? "";
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return version.secretString;
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/aws/secrets.ts"],"names":[],"mappings":"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"}
|