@reyemtech/nimbus 0.1.0 → 1.0.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/README.md +71 -311
- package/dist/cjs/aws/dns.d.ts.map +1 -1
- package/dist/cjs/aws/dns.js +3 -1
- package/dist/cjs/aws/dns.js.map +1 -1
- package/dist/cjs/aws/index.d.ts +1 -0
- package/dist/cjs/aws/index.d.ts.map +1 -1
- package/dist/cjs/aws/index.js +3 -1
- package/dist/cjs/aws/index.js.map +1 -1
- package/dist/cjs/aws/network.d.ts.map +1 -1
- package/dist/cjs/aws/network.js +3 -1
- package/dist/cjs/aws/network.js.map +1 -1
- package/dist/cjs/aws/state.d.ts +32 -0
- package/dist/cjs/aws/state.d.ts.map +1 -0
- package/dist/cjs/aws/state.js +209 -0
- package/dist/cjs/aws/state.js.map +1 -0
- package/dist/cjs/azure/cluster.d.ts.map +1 -1
- package/dist/cjs/azure/cluster.js +15 -5
- package/dist/cjs/azure/cluster.js.map +1 -1
- package/dist/cjs/azure/dns.d.ts.map +1 -1
- package/dist/cjs/azure/dns.js +3 -1
- package/dist/cjs/azure/dns.js.map +1 -1
- package/dist/cjs/azure/index.d.ts +1 -0
- package/dist/cjs/azure/index.d.ts.map +1 -1
- package/dist/cjs/azure/index.js +3 -1
- package/dist/cjs/azure/index.js.map +1 -1
- package/dist/cjs/azure/network.d.ts.map +1 -1
- package/dist/cjs/azure/network.js +9 -3
- package/dist/cjs/azure/network.js.map +1 -1
- package/dist/cjs/azure/secrets.d.ts.map +1 -1
- package/dist/cjs/azure/secrets.js +6 -2
- package/dist/cjs/azure/secrets.js.map +1 -1
- package/dist/cjs/azure/state.d.ts +30 -0
- package/dist/cjs/azure/state.d.ts.map +1 -0
- package/dist/cjs/azure/state.js +115 -0
- package/dist/cjs/azure/state.js.map +1 -0
- package/dist/cjs/cache/interfaces.d.ts +12 -0
- package/dist/cjs/cache/interfaces.d.ts.map +1 -1
- package/dist/cjs/cli/templates.d.ts +67 -0
- package/dist/cjs/cli/templates.d.ts.map +1 -0
- package/dist/cjs/cli/templates.js +752 -0
- package/dist/cjs/cli/templates.js.map +1 -0
- package/dist/cjs/cli.d.ts +15 -0
- package/dist/cjs/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +209 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/cluster/interfaces.d.ts +28 -0
- package/dist/cjs/cluster/interfaces.d.ts.map +1 -1
- package/dist/cjs/database/interfaces.d.ts +15 -0
- package/dist/cjs/database/interfaces.d.ts.map +1 -1
- package/dist/cjs/dns/interfaces.d.ts +11 -0
- package/dist/cjs/dns/interfaces.d.ts.map +1 -1
- package/dist/cjs/factories/cluster.d.ts +4 -3
- package/dist/cjs/factories/cluster.d.ts.map +1 -1
- package/dist/cjs/factories/cluster.js +46 -11
- package/dist/cjs/factories/cluster.js.map +1 -1
- package/dist/cjs/factories/dns.d.ts +3 -2
- package/dist/cjs/factories/dns.d.ts.map +1 -1
- package/dist/cjs/factories/dns.js +44 -9
- package/dist/cjs/factories/dns.js.map +1 -1
- package/dist/cjs/factories/index.d.ts +1 -0
- package/dist/cjs/factories/index.d.ts.map +1 -1
- package/dist/cjs/factories/index.js +3 -1
- package/dist/cjs/factories/index.js.map +1 -1
- package/dist/cjs/factories/network.d.ts +4 -3
- package/dist/cjs/factories/network.d.ts.map +1 -1
- package/dist/cjs/factories/network.js +46 -11
- package/dist/cjs/factories/network.js.map +1 -1
- package/dist/cjs/factories/secrets.d.ts +4 -3
- package/dist/cjs/factories/secrets.d.ts.map +1 -1
- package/dist/cjs/factories/secrets.js +45 -10
- package/dist/cjs/factories/secrets.js.map +1 -1
- package/dist/cjs/factories/state.d.ts +33 -0
- package/dist/cjs/factories/state.d.ts.map +1 -0
- package/dist/cjs/factories/state.js +96 -0
- package/dist/cjs/factories/state.js.map +1 -0
- package/dist/cjs/factories/types.d.ts +22 -0
- package/dist/cjs/factories/types.d.ts.map +1 -1
- package/dist/cjs/factories/types.js +18 -0
- package/dist/cjs/factories/types.js.map +1 -1
- package/dist/cjs/global-lb/glb.d.ts.map +1 -1
- package/dist/cjs/global-lb/glb.js +23 -9
- package/dist/cjs/global-lb/glb.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -13
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/network/cidr.d.ts +34 -0
- package/dist/cjs/network/cidr.d.ts.map +1 -1
- package/dist/cjs/network/cidr.js +34 -0
- package/dist/cjs/network/cidr.js.map +1 -1
- package/dist/cjs/network/interfaces.d.ts +16 -0
- package/dist/cjs/network/interfaces.d.ts.map +1 -1
- package/dist/cjs/platform/interfaces.d.ts +1 -1
- package/dist/cjs/platform/interfaces.d.ts.map +1 -1
- package/dist/cjs/platform/stack.d.ts.map +1 -1
- package/dist/cjs/platform/stack.js +6 -1
- package/dist/cjs/platform/stack.js.map +1 -1
- package/dist/cjs/queue/interfaces.d.ts +8 -0
- package/dist/cjs/queue/interfaces.d.ts.map +1 -1
- package/dist/cjs/secrets/interfaces.d.ts +5 -0
- package/dist/cjs/secrets/interfaces.d.ts.map +1 -1
- package/dist/cjs/state/index.d.ts +7 -0
- package/dist/cjs/state/index.d.ts.map +1 -0
- package/dist/cjs/state/index.js +8 -0
- package/dist/cjs/state/index.js.map +1 -0
- package/dist/cjs/state/interfaces.d.ts +82 -0
- package/dist/cjs/state/interfaces.d.ts.map +1 -0
- package/dist/cjs/state/interfaces.js +11 -0
- package/dist/cjs/state/interfaces.js.map +1 -0
- package/dist/cjs/storage/interfaces.d.ts +17 -0
- package/dist/cjs/storage/interfaces.d.ts.map +1 -1
- package/dist/cjs/types/cloud-target.d.ts +12 -0
- package/dist/cjs/types/cloud-target.d.ts.map +1 -1
- package/dist/cjs/types/cloud-target.js +12 -0
- package/dist/cjs/types/cloud-target.js.map +1 -1
- package/dist/cjs/types/tags.d.ts +16 -0
- package/dist/cjs/types/tags.d.ts.map +1 -1
- package/dist/cjs/types/tags.js +16 -0
- package/dist/cjs/types/tags.js.map +1 -1
- package/dist/cjs/types/validation.d.ts.map +1 -1
- package/dist/cjs/types/validation.js +14 -11
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +7 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +11 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/provider-loader.d.ts +14 -0
- package/dist/cjs/utils/provider-loader.d.ts.map +1 -0
- package/dist/cjs/utils/provider-loader.js +66 -0
- package/dist/cjs/utils/provider-loader.js.map +1 -0
- package/dist/esm/aws/dns.d.ts.map +1 -1
- package/dist/esm/aws/dns.js +3 -1
- package/dist/esm/aws/dns.js.map +1 -1
- package/dist/esm/aws/index.d.ts +1 -0
- package/dist/esm/aws/index.d.ts.map +1 -1
- package/dist/esm/aws/index.js +3 -1
- package/dist/esm/aws/index.js.map +1 -1
- package/dist/esm/aws/network.d.ts.map +1 -1
- package/dist/esm/aws/network.js +3 -1
- package/dist/esm/aws/network.js.map +1 -1
- package/dist/esm/aws/state.d.ts +32 -0
- package/dist/esm/aws/state.d.ts.map +1 -0
- package/dist/esm/aws/state.js +209 -0
- package/dist/esm/aws/state.js.map +1 -0
- package/dist/esm/azure/cluster.d.ts.map +1 -1
- package/dist/esm/azure/cluster.js +15 -5
- package/dist/esm/azure/cluster.js.map +1 -1
- package/dist/esm/azure/dns.d.ts.map +1 -1
- package/dist/esm/azure/dns.js +3 -1
- package/dist/esm/azure/dns.js.map +1 -1
- package/dist/esm/azure/index.d.ts +1 -0
- package/dist/esm/azure/index.d.ts.map +1 -1
- package/dist/esm/azure/index.js +3 -1
- package/dist/esm/azure/index.js.map +1 -1
- package/dist/esm/azure/network.d.ts.map +1 -1
- package/dist/esm/azure/network.js +9 -3
- package/dist/esm/azure/network.js.map +1 -1
- package/dist/esm/azure/secrets.d.ts.map +1 -1
- package/dist/esm/azure/secrets.js +6 -2
- package/dist/esm/azure/secrets.js.map +1 -1
- package/dist/esm/azure/state.d.ts +30 -0
- package/dist/esm/azure/state.d.ts.map +1 -0
- package/dist/esm/azure/state.js +115 -0
- package/dist/esm/azure/state.js.map +1 -0
- package/dist/esm/cache/interfaces.d.ts +12 -0
- package/dist/esm/cache/interfaces.d.ts.map +1 -1
- package/dist/esm/cli/templates.d.ts +67 -0
- package/dist/esm/cli/templates.d.ts.map +1 -0
- package/dist/esm/cli/templates.js +752 -0
- package/dist/esm/cli/templates.js.map +1 -0
- package/dist/esm/cli.d.ts +15 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +176 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/cluster/interfaces.d.ts +28 -0
- package/dist/esm/cluster/interfaces.d.ts.map +1 -1
- package/dist/esm/database/interfaces.d.ts +15 -0
- package/dist/esm/database/interfaces.d.ts.map +1 -1
- package/dist/esm/dns/interfaces.d.ts +11 -0
- package/dist/esm/dns/interfaces.d.ts.map +1 -1
- package/dist/esm/factories/cluster.d.ts +4 -3
- package/dist/esm/factories/cluster.d.ts.map +1 -1
- package/dist/esm/factories/cluster.js +13 -11
- package/dist/esm/factories/cluster.js.map +1 -1
- package/dist/esm/factories/dns.d.ts +3 -2
- package/dist/esm/factories/dns.d.ts.map +1 -1
- package/dist/esm/factories/dns.js +11 -9
- package/dist/esm/factories/dns.js.map +1 -1
- package/dist/esm/factories/index.d.ts +1 -0
- package/dist/esm/factories/index.d.ts.map +1 -1
- package/dist/esm/factories/index.js +3 -1
- package/dist/esm/factories/index.js.map +1 -1
- package/dist/esm/factories/network.d.ts +4 -3
- package/dist/esm/factories/network.d.ts.map +1 -1
- package/dist/esm/factories/network.js +13 -11
- package/dist/esm/factories/network.js.map +1 -1
- package/dist/esm/factories/secrets.d.ts +4 -3
- package/dist/esm/factories/secrets.d.ts.map +1 -1
- package/dist/esm/factories/secrets.js +12 -10
- package/dist/esm/factories/secrets.js.map +1 -1
- package/dist/esm/factories/state.d.ts +33 -0
- package/dist/esm/factories/state.d.ts.map +1 -0
- package/dist/esm/factories/state.js +63 -0
- package/dist/esm/factories/state.js.map +1 -0
- package/dist/esm/factories/types.d.ts +22 -0
- package/dist/esm/factories/types.d.ts.map +1 -1
- package/dist/esm/factories/types.js +18 -0
- package/dist/esm/factories/types.js.map +1 -1
- package/dist/esm/global-lb/glb.d.ts.map +1 -1
- package/dist/esm/global-lb/glb.js +23 -9
- package/dist/esm/global-lb/glb.js.map +1 -1
- package/dist/esm/index.d.ts +2 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -13
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/network/cidr.d.ts +34 -0
- package/dist/esm/network/cidr.d.ts.map +1 -1
- package/dist/esm/network/cidr.js +34 -0
- package/dist/esm/network/cidr.js.map +1 -1
- package/dist/esm/network/interfaces.d.ts +16 -0
- package/dist/esm/network/interfaces.d.ts.map +1 -1
- package/dist/esm/platform/interfaces.d.ts +1 -1
- package/dist/esm/platform/interfaces.d.ts.map +1 -1
- package/dist/esm/platform/stack.d.ts.map +1 -1
- package/dist/esm/platform/stack.js +6 -1
- package/dist/esm/platform/stack.js.map +1 -1
- package/dist/esm/queue/interfaces.d.ts +8 -0
- package/dist/esm/queue/interfaces.d.ts.map +1 -1
- package/dist/esm/secrets/interfaces.d.ts +5 -0
- package/dist/esm/secrets/interfaces.d.ts.map +1 -1
- package/dist/esm/state/index.d.ts +7 -0
- package/dist/esm/state/index.d.ts.map +1 -0
- package/dist/esm/state/index.js +8 -0
- package/dist/esm/state/index.js.map +1 -0
- package/dist/esm/state/interfaces.d.ts +82 -0
- package/dist/esm/state/interfaces.d.ts.map +1 -0
- package/dist/esm/state/interfaces.js +11 -0
- package/dist/esm/state/interfaces.js.map +1 -0
- package/dist/esm/storage/interfaces.d.ts +17 -0
- package/dist/esm/storage/interfaces.d.ts.map +1 -1
- package/dist/esm/types/cloud-target.d.ts +12 -0
- package/dist/esm/types/cloud-target.d.ts.map +1 -1
- package/dist/esm/types/cloud-target.js +12 -0
- package/dist/esm/types/cloud-target.js.map +1 -1
- package/dist/esm/types/tags.d.ts +16 -0
- package/dist/esm/types/tags.d.ts.map +1 -1
- package/dist/esm/types/tags.js +16 -0
- package/dist/esm/types/tags.js.map +1 -1
- package/dist/esm/types/validation.d.ts.map +1 -1
- package/dist/esm/types/validation.js +14 -11
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/utils/index.d.ts +7 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +11 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/provider-loader.d.ts +14 -0
- package/dist/esm/utils/provider-loader.d.ts.map +1 -0
- package/dist/esm/utils/provider-loader.js +33 -0
- package/dist/esm/utils/provider-loader.js.map +1 -0
- package/package.json +41 -3
package/README.md
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
# @reyemtech/nimbus
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@reyemtech/nimbus)
|
|
4
|
+
[](https://github.com/reyemtech/nimbus/actions/workflows/ci.yml)
|
|
5
|
+
[](https://github.com/reyemtech/nimbus)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
[](https://www.pulumi.com/)
|
|
9
|
+
[](https://nodejs.org/)
|
|
10
|
+
|
|
11
|
+
Cloud-agnostic infrastructure abstractions for [Pulumi](https://www.pulumi.com/). Write IaC once, deploy to AWS, Azure, or both. Cloud migration = change one config value.
|
|
4
12
|
|
|
5
13
|
## Why
|
|
6
14
|
|
|
7
|
-
Every client environment
|
|
15
|
+
Every client environment follows the same pattern: network + cluster + DNS + secrets + platform. The only difference is the cloud provider. Nimbus extracts that pattern into reusable, type-safe factory functions.
|
|
8
16
|
|
|
9
|
-
**
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **Escape hatches** — every resource exposes its native cloud object via `nativeResource`
|
|
15
|
-
- **Type-safe** — full TypeScript interfaces with discriminated unions for provider-specific config
|
|
17
|
+
- **Cloud migration in one line** — change `cloud: "aws"` to `cloud: "azure"`
|
|
18
|
+
- **Multi-cloud active-active** — deploy to AWS + Azure with a Global Load Balancer
|
|
19
|
+
- **Dynamic provider loading** — only the targeted SDK loads; missing providers give install instructions
|
|
20
|
+
- **Cost-optimized defaults** — fck-nat (~$3/mo vs $32/mo), spot instances, Auto Mode
|
|
21
|
+
- **Escape hatches** — every resource exposes `nativeResource` for cloud-specific access
|
|
16
22
|
|
|
17
23
|
## Install
|
|
18
24
|
|
|
@@ -20,40 +26,37 @@ Every client environment at ReyemTech follows the same pattern: network + cluste
|
|
|
20
26
|
npm install @reyemtech/nimbus
|
|
21
27
|
```
|
|
22
28
|
|
|
23
|
-
|
|
29
|
+
Install provider SDKs for your target cloud(s):
|
|
24
30
|
|
|
25
|
-
**Provider SDKs** (install only what you need):
|
|
26
31
|
```bash
|
|
27
|
-
#
|
|
28
|
-
|
|
32
|
+
npx @reyemtech/nimbus install aws # @pulumi/aws
|
|
33
|
+
npx @reyemtech/nimbus install azure # @pulumi/azure-native
|
|
34
|
+
npx @reyemtech/nimbus install aws azure # both
|
|
35
|
+
```
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
npm install @pulumi/azure-native
|
|
37
|
+
## Quick Start
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
npm install @pulumi/aws @pulumi/eks @pulumi/azure-native
|
|
39
|
+
Scaffold a new project (handles `pulumi new`, `npm install`, and provider setup):
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
```bash
|
|
42
|
+
npx @reyemtech/nimbus new my-infra aws
|
|
43
|
+
cd my-infra
|
|
44
|
+
pulumi up
|
|
38
45
|
```
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
### Single Cloud (AWS)
|
|
47
|
+
Or start from scratch:
|
|
43
48
|
|
|
44
49
|
```typescript
|
|
45
|
-
import { createNetwork, createCluster,
|
|
46
|
-
import type { INetwork, ICluster
|
|
50
|
+
import { createNetwork, createCluster, createPlatformStack } from "@reyemtech/nimbus";
|
|
51
|
+
import type { INetwork, ICluster } from "@reyemtech/nimbus";
|
|
47
52
|
|
|
48
|
-
|
|
49
|
-
const network = createNetwork("prod", {
|
|
53
|
+
const network = await createNetwork("prod", {
|
|
50
54
|
cloud: "aws",
|
|
51
55
|
cidr: "10.0.0.0/16",
|
|
52
56
|
natStrategy: "fck-nat",
|
|
53
57
|
}) as INetwork;
|
|
54
58
|
|
|
55
|
-
|
|
56
|
-
const cluster = createCluster("prod", {
|
|
59
|
+
const cluster = await createCluster("prod", {
|
|
57
60
|
cloud: "aws",
|
|
58
61
|
nodePools: [
|
|
59
62
|
{ name: "system", instanceType: "t4g.small", minNodes: 2, maxNodes: 3 },
|
|
@@ -62,87 +65,41 @@ const cluster = createCluster("prod", {
|
|
|
62
65
|
providerOptions: { aws: { autoMode: true } },
|
|
63
66
|
}, network) as ICluster;
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
const dns = createDns("prod", { cloud: "aws", zoneName: "example.com" }) as IDns;
|
|
67
|
-
|
|
68
|
-
// Platform stack (Traefik, cert-manager, External DNS, ArgoCD, Vault)
|
|
69
|
-
createPlatformStack("prod", {
|
|
70
|
-
cluster,
|
|
71
|
-
domain: "example.com",
|
|
72
|
-
externalDns: { dnsProvider: "route53", domainFilters: ["example.com"] },
|
|
73
|
-
vault: { enabled: true, ingressHost: "vault.example.com" },
|
|
74
|
-
});
|
|
68
|
+
createPlatformStack("prod", { cluster, domain: "example.com" });
|
|
75
69
|
```
|
|
76
70
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
import { createNetwork, createCluster, createDns, createPlatformStack } from "@reyemtech/nimbus";
|
|
81
|
-
import type { INetwork, ICluster } from "@reyemtech/nimbus";
|
|
82
|
-
|
|
83
|
-
const providerOptions = { azure: { resourceGroupName: "rg-prod" } };
|
|
71
|
+
See [docs/examples.md](docs/examples.md) for Azure, multi-cloud, and standalone resource patterns.
|
|
84
72
|
|
|
85
|
-
|
|
86
|
-
cloud: "azure",
|
|
87
|
-
cidr: "10.1.0.0/16",
|
|
88
|
-
natStrategy: "managed",
|
|
89
|
-
providerOptions,
|
|
90
|
-
}) as INetwork;
|
|
91
|
-
|
|
92
|
-
const cluster = createCluster("prod", {
|
|
93
|
-
cloud: "azure",
|
|
94
|
-
nodePools: [
|
|
95
|
-
{ name: "system", instanceType: "Standard_D2s_v5", minNodes: 2, maxNodes: 3, mode: "system" },
|
|
96
|
-
{ name: "workers", instanceType: "Standard_D4s_v5", minNodes: 1, maxNodes: 10, spot: true, mode: "user" },
|
|
97
|
-
],
|
|
98
|
-
virtualNodes: true,
|
|
99
|
-
providerOptions,
|
|
100
|
-
}, network) as ICluster;
|
|
73
|
+
## CLI
|
|
101
74
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
});
|
|
75
|
+
```bash
|
|
76
|
+
nimbus new <name> <template> # Scaffold a project from a template
|
|
77
|
+
nimbus install <provider> [...] # Install cloud provider SDKs
|
|
78
|
+
nimbus check # Show which providers are installed
|
|
107
79
|
```
|
|
108
80
|
|
|
109
|
-
###
|
|
81
|
+
### Templates
|
|
110
82
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
83
|
+
| Template | Description |
|
|
84
|
+
|----------|-------------|
|
|
85
|
+
| `empty` | Blank scaffold with TODO placeholders |
|
|
86
|
+
| `minimal-aws` | State backend + Secrets Manager (no cluster) |
|
|
87
|
+
| `minimal-azure` | State backend + Key Vault (no cluster) |
|
|
88
|
+
| `aws` | Full stack: VPC + EKS + Route 53 + Secrets + Platform |
|
|
89
|
+
| `azure` | Full stack: VNet + AKS + Azure DNS + Key Vault + Platform |
|
|
90
|
+
| `multi-cloud` | AWS + Azure active-active with Global Load Balancer |
|
|
114
91
|
|
|
115
|
-
|
|
116
|
-
aws: { autoMode: true },
|
|
117
|
-
azure: { resourceGroupName: "rg-prod" },
|
|
118
|
-
};
|
|
92
|
+
### Day-to-Day Operations
|
|
119
93
|
|
|
120
|
-
|
|
121
|
-
const networks = createNetwork("prod", {
|
|
122
|
-
cloud: ["aws", "azure"],
|
|
123
|
-
cidr: "10.0.0.0/16",
|
|
124
|
-
natStrategy: "fck-nat",
|
|
125
|
-
providerOptions,
|
|
126
|
-
}) as INetwork[];
|
|
94
|
+
After scaffolding, use standard Pulumi commands to manage your infrastructure:
|
|
127
95
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
providerOptions,
|
|
136
|
-
}, networks) as ICluster[];
|
|
137
|
-
|
|
138
|
-
// Global Load Balancer — active-active across both clouds
|
|
139
|
-
const glb = createGlobalLoadBalancer("prod", {
|
|
140
|
-
strategy: "active-active",
|
|
141
|
-
clusters,
|
|
142
|
-
domain: "app.example.com",
|
|
143
|
-
healthCheck: { path: "/health", port: 443, protocol: "HTTPS" },
|
|
144
|
-
dnsProvider: "route53",
|
|
145
|
-
});
|
|
96
|
+
```bash
|
|
97
|
+
pulumi preview # Preview changes before deploying
|
|
98
|
+
pulumi up # Deploy infrastructure
|
|
99
|
+
pulumi refresh # Sync state with actual cloud resources
|
|
100
|
+
pulumi destroy # Tear down all resources
|
|
101
|
+
pulumi config set key value # Set stack configuration
|
|
102
|
+
pulumi stack output # View stack outputs
|
|
146
103
|
```
|
|
147
104
|
|
|
148
105
|
## Architecture
|
|
@@ -155,8 +112,11 @@ const glb = createGlobalLoadBalancer("prod", {
|
|
|
155
112
|
├── cluster/ # EKS, AKS (+ Auto Mode, virtual nodes, spot)
|
|
156
113
|
├── dns/ # Route 53, Azure DNS
|
|
157
114
|
├── secrets/ # AWS Secrets Manager, Azure Key Vault
|
|
115
|
+
├── state/ # Pulumi state backend (S3, Azure Blob) with BCDR
|
|
158
116
|
├── platform/ # Helm: Traefik, cert-manager, External DNS, ArgoCD, Vault, ESO
|
|
159
117
|
├── global-lb/ # DNS-based multi-cloud routing (active-active, failover, geo)
|
|
118
|
+
├── cli.ts # CLI (nimbus new/install/check)
|
|
119
|
+
├── cli/ # CLI templates for project scaffolding
|
|
160
120
|
├── database/ # (interfaces only — RDS, Azure DB, PXC, CNPG)
|
|
161
121
|
├── cache/ # (interfaces only — ElastiCache, Azure Cache, Redis Helm)
|
|
162
122
|
├── storage/ # (interfaces only — S3, Blob, GCS)
|
|
@@ -171,227 +131,27 @@ const glb = createGlobalLoadBalancer("prod", {
|
|
|
171
131
|
| **Cluster** | EKS + Auto Mode | AKS + virtual nodes | Planned |
|
|
172
132
|
| **DNS** | Route 53 | Azure DNS | Planned |
|
|
173
133
|
| **Secrets** | Secrets Manager | Key Vault | Planned |
|
|
134
|
+
| **State** | S3 + DynamoDB locking + replication | Blob + GRS | Planned |
|
|
174
135
|
| **Platform** | Helm (provider-agnostic) | Helm (provider-agnostic) | Helm (provider-agnostic) |
|
|
175
136
|
| **Global LB** | Route 53 health-checked routing | Planned | — |
|
|
176
137
|
|
|
177
|
-
##
|
|
178
|
-
|
|
179
|
-
### Factory Functions (Primary API)
|
|
180
|
-
|
|
181
|
-
The factory functions are the recommended way to use this library. They dispatch to the correct cloud-specific implementation based on the `cloud` parameter. Provider-specific options are passed via `providerOptions`.
|
|
182
|
-
|
|
183
|
-
#### `createNetwork(name, config)`
|
|
184
|
-
|
|
185
|
-
Creates a VPC (AWS) or VNet (Azure) with subnets and NAT.
|
|
186
|
-
|
|
187
|
-
| Parameter | Type | Description |
|
|
188
|
-
|-----------|------|-------------|
|
|
189
|
-
| `name` | `string` | Resource name prefix |
|
|
190
|
-
| `config.cloud` | `CloudArg` | `"aws"`, `"azure"`, or `["aws", "azure"]` for multi-cloud |
|
|
191
|
-
| `config.cidr` | `string` | CIDR block (auto-offset for multi-cloud) |
|
|
192
|
-
| `config.natStrategy` | `NatStrategy` | `"managed"`, `"fck-nat"`, or `"none"` |
|
|
193
|
-
| `config.providerOptions` | `IProviderOptions` | Provider-specific options (see below) |
|
|
194
|
-
|
|
195
|
-
Returns: `INetwork` (single cloud) or `INetwork[]` (multi-cloud)
|
|
196
|
-
|
|
197
|
-
#### `createCluster(name, config, networks)`
|
|
198
|
-
|
|
199
|
-
Creates an EKS (AWS) or AKS (Azure) cluster.
|
|
200
|
-
|
|
201
|
-
| Parameter | Type | Description |
|
|
202
|
-
|-----------|------|-------------|
|
|
203
|
-
| `config.nodePools` | `INodePool[]` | Node pool definitions |
|
|
204
|
-
| `config.version` | `string` | Kubernetes version |
|
|
205
|
-
| `config.providerOptions` | `IProviderOptions` | Provider-specific options |
|
|
206
|
-
| `networks` | `INetwork \| INetwork[]` | Network(s) — auto-matched by provider for multi-cloud |
|
|
207
|
-
|
|
208
|
-
Returns: `ICluster` (single cloud) or `ICluster[]` (multi-cloud)
|
|
209
|
-
|
|
210
|
-
#### `createDns(name, config)`
|
|
211
|
-
|
|
212
|
-
Creates a Route 53 (AWS) or Azure DNS zone.
|
|
213
|
-
|
|
214
|
-
Returns: `IDns` (single cloud) or `IDns[]` (multi-cloud)
|
|
215
|
-
|
|
216
|
-
#### `createSecrets(name, config)`
|
|
217
|
-
|
|
218
|
-
Creates an AWS Secrets Manager or Azure Key Vault store.
|
|
219
|
-
|
|
220
|
-
```typescript
|
|
221
|
-
const secrets = createSecrets("prod", { cloud: "aws" }) as ISecrets;
|
|
222
|
-
secrets.putSecret("database", { host: "db.example.com", password: dbPassword });
|
|
223
|
-
const pw = secrets.getSecretRef({ path: "database", key: "password" });
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Returns: `ISecrets` (single cloud) or `ISecrets[]` (multi-cloud)
|
|
227
|
-
|
|
228
|
-
#### Provider Options
|
|
229
|
-
|
|
230
|
-
```typescript
|
|
231
|
-
providerOptions: {
|
|
232
|
-
aws: {
|
|
233
|
-
// Network
|
|
234
|
-
fckNatInstanceType: "t4g.nano",
|
|
235
|
-
availabilityZoneCount: 2,
|
|
236
|
-
// Cluster
|
|
237
|
-
autoMode: true,
|
|
238
|
-
addons: ["vpc-cni", "coredns"],
|
|
239
|
-
endpointAccess: "both",
|
|
240
|
-
},
|
|
241
|
-
azure: {
|
|
242
|
-
resourceGroupName: "my-rg", // Required for all Azure resources
|
|
243
|
-
// Network
|
|
244
|
-
subnetCount: 2,
|
|
245
|
-
// Cluster
|
|
246
|
-
azureCni: true,
|
|
247
|
-
virtualNodes: false,
|
|
248
|
-
aadTenantId: "...",
|
|
249
|
-
dnsPrefix: "...",
|
|
250
|
-
// Secrets
|
|
251
|
-
tenantId: "...", // Required for Key Vault
|
|
252
|
-
objectId: "...",
|
|
253
|
-
sku: "standard",
|
|
254
|
-
},
|
|
255
|
-
}
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### Direct Cloud Functions (Escape Hatch)
|
|
259
|
-
|
|
260
|
-
For maximum control, you can still use cloud-specific functions directly:
|
|
261
|
-
|
|
262
|
-
- `createAwsNetwork(name, config, options?)` / `createAzureNetwork(name, config, options)`
|
|
263
|
-
- `createEksCluster(name, config, network, options?)` / `createAksCluster(name, config, network, options)`
|
|
264
|
-
- `createRoute53Dns(name, config)` / `createAzureDns(name, config, options)`
|
|
265
|
-
- `createAwsSecrets(name, config)` / `createAzureSecrets(name, config, options)`
|
|
266
|
-
|
|
267
|
-
### Platform Stack
|
|
268
|
-
|
|
269
|
-
#### `createPlatformStack(name, config)`
|
|
270
|
-
|
|
271
|
-
Deploys Helm-based platform components to one or more clusters.
|
|
272
|
-
|
|
273
|
-
| Component | Default | Chart |
|
|
274
|
-
|-----------|---------|-------|
|
|
275
|
-
| Traefik | Enabled | `traefik/traefik` v34.3.0 |
|
|
276
|
-
| cert-manager | Enabled | `jetstack/cert-manager` v1.17.2 |
|
|
277
|
-
| External DNS | If configured | `kubernetes-sigs/external-dns` v1.16.1 |
|
|
278
|
-
| ArgoCD | Disabled | `argoproj/argo-cd` v7.8.26 |
|
|
279
|
-
| Vault | Disabled | `hashicorp/vault` v0.29.1 |
|
|
280
|
-
| External Secrets | Disabled | `external-secrets/external-secrets` v0.14.4 |
|
|
281
|
-
|
|
282
|
-
### Global Load Balancer
|
|
283
|
-
|
|
284
|
-
#### `createGlobalLoadBalancer(name, config)`
|
|
285
|
-
|
|
286
|
-
Routes traffic across clusters using DNS-based health checks.
|
|
287
|
-
|
|
288
|
-
| Strategy | Behavior |
|
|
289
|
-
|----------|----------|
|
|
290
|
-
| `active-active` | Weighted routing — equal traffic to all healthy clusters |
|
|
291
|
-
| `active-passive` | Failover — primary cluster, secondary on failure |
|
|
292
|
-
| `geo` | Geolocation — route by client continent |
|
|
293
|
-
|
|
294
|
-
### CIDR Utilities
|
|
295
|
-
|
|
296
|
-
```typescript
|
|
297
|
-
import { parseCidr, cidrsOverlap, buildCidrMap, autoOffsetCidrs } from "@reyemtech/nimbus";
|
|
298
|
-
|
|
299
|
-
// Parse CIDR to numeric range
|
|
300
|
-
parseCidr("10.0.0.0/16"); // { network, prefix, size, start, end }
|
|
301
|
-
|
|
302
|
-
// Check overlap
|
|
303
|
-
cidrsOverlap("10.0.0.0/16", "10.0.5.0/24"); // true
|
|
304
|
-
|
|
305
|
-
// Auto-generate non-overlapping CIDRs
|
|
306
|
-
autoOffsetCidrs(3); // ["10.0.0.0/16", "10.1.0.0/16", "10.2.0.0/16"]
|
|
307
|
-
|
|
308
|
-
// Build a cloud-to-CIDR map with conflict detection
|
|
309
|
-
buildCidrMap(["aws", "azure"], { aws: "10.0.0.0/16" });
|
|
310
|
-
// => { aws: "10.0.0.0/16", azure: "10.1.0.0/16" }
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
### Cross-Cloud Validation
|
|
314
|
-
|
|
315
|
-
```typescript
|
|
316
|
-
import { validateMultiCloud, validateResourceName, isFeatureSupported } from "@reyemtech/nimbus";
|
|
317
|
-
|
|
318
|
-
// Validate multi-cloud config (checks duplicates + naming)
|
|
319
|
-
validateMultiCloud([
|
|
320
|
-
{ provider: "aws", region: "us-east-1" },
|
|
321
|
-
{ provider: "azure", region: "canadacentral" },
|
|
322
|
-
], "my-cluster"); // { valid: true, errors: [], warnings: [] }
|
|
323
|
-
|
|
324
|
-
// Check feature availability
|
|
325
|
-
isFeatureSupported("fck-nat", "aws"); // true
|
|
326
|
-
isFeatureSupported("fck-nat", "azure"); // false
|
|
327
|
-
|
|
328
|
-
// Validate resource names per provider
|
|
329
|
-
validateResourceName("MyCluster", "gcp"); // warns about uppercase
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
### Tags
|
|
333
|
-
|
|
334
|
-
```typescript
|
|
335
|
-
import { normalizeTags, mergeWithRequiredTags } from "@reyemtech/nimbus";
|
|
336
|
-
|
|
337
|
-
// GCP label normalization (lowercase, no special chars, max 63)
|
|
338
|
-
normalizeTags({ "Cost Center": "R&D" }, "gcp"); // { "cost-center": "r-d" }
|
|
339
|
-
|
|
340
|
-
// Merge required tags (environment, client, costCenter, managedBy)
|
|
341
|
-
mergeWithRequiredTags(
|
|
342
|
-
{ environment: "prod", client: "acme", costCenter: "eng" },
|
|
343
|
-
{ custom: "value" },
|
|
344
|
-
); // { environment: "prod", client: "acme", costCenter: "eng", managedBy: "nimbus", custom: "value" }
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
## Escape Hatches
|
|
348
|
-
|
|
349
|
-
Every resource exposes its cloud-native object via `nativeResource`:
|
|
350
|
-
|
|
351
|
-
```typescript
|
|
352
|
-
import * as aws from "@pulumi/aws";
|
|
353
|
-
|
|
354
|
-
const cluster = createCluster("prod", { cloud: "aws", ... }, network) as ICluster;
|
|
355
|
-
const eksCluster = cluster.nativeResource as aws.eks.Cluster;
|
|
356
|
-
eksCluster.arn.apply(arn => console.log("EKS ARN:", arn));
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
## Cloud Target Flexibility
|
|
360
|
-
|
|
361
|
-
All factory functions accept flexible cloud arguments:
|
|
362
|
-
|
|
363
|
-
```typescript
|
|
364
|
-
// String shorthand (uses DEFAULT_REGIONS)
|
|
365
|
-
createNetwork("prod", { cloud: "aws", ... });
|
|
366
|
-
|
|
367
|
-
// Explicit target
|
|
368
|
-
createNetwork("prod", { cloud: { provider: "aws", region: "eu-west-1" }, ... });
|
|
369
|
-
|
|
370
|
-
// Multi-cloud array
|
|
371
|
-
createNetwork("prod", { cloud: ["aws", "azure"], ... });
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
## Error Handling
|
|
375
|
-
|
|
376
|
-
All errors extend `AnyCloudError` with typed error codes:
|
|
138
|
+
## Documentation
|
|
377
139
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
| `CidrError` | `CIDR_OVERLAP` / `CIDR_INVALID` | CIDR conflicts or malformed |
|
|
382
|
-
| `UnsupportedFeatureError` | `UNSUPPORTED_FEATURE` | Feature not available on provider |
|
|
383
|
-
| `ConfigError` | `CONFIG_MISSING` / `CONFIG_INVALID` | Missing or invalid configuration |
|
|
140
|
+
- [API Reference](docs/api-reference.md) — Factory functions, provider options, direct cloud functions
|
|
141
|
+
- [Examples](docs/examples.md) — Single-cloud, multi-cloud, standalone resources, BCDR
|
|
142
|
+
- [Utilities](docs/utilities.md) — CIDR helpers, validation, tags, error handling
|
|
384
143
|
|
|
385
144
|
## Development
|
|
386
145
|
|
|
387
146
|
```bash
|
|
388
147
|
npm install
|
|
389
|
-
npm run typecheck
|
|
390
|
-
npm run lint
|
|
391
|
-
npm run format
|
|
392
|
-
npm test
|
|
393
|
-
npm run test:coverage # With coverage thresholds
|
|
394
|
-
npm run build
|
|
148
|
+
npm run typecheck # Type checking
|
|
149
|
+
npm run lint # ESLint
|
|
150
|
+
npm run format # Prettier
|
|
151
|
+
npm test # Vitest (unit tests)
|
|
152
|
+
npm run test:coverage # With 80% coverage thresholds
|
|
153
|
+
npm run build # ESM + CJS dual build
|
|
154
|
+
npm run docs:api # TypeDoc API docs
|
|
395
155
|
```
|
|
396
156
|
|
|
397
157
|
## License
|
|
@@ -1 +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;
|
|
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;AAM3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6BvE"}
|
package/dist/cjs/aws/dns.js
CHANGED
|
@@ -41,6 +41,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
41
41
|
exports.createRoute53Dns = createRoute53Dns;
|
|
42
42
|
const aws = __importStar(require("@pulumi/aws"));
|
|
43
43
|
const types_1 = require("../types");
|
|
44
|
+
/** Default DNS record TTL in seconds. */
|
|
45
|
+
const DEFAULT_DNS_TTL_SECONDS = 300;
|
|
44
46
|
/**
|
|
45
47
|
* Create a Route 53 hosted zone with optional initial records.
|
|
46
48
|
*
|
|
@@ -88,7 +90,7 @@ function createRecord(name, zone, record) {
|
|
|
88
90
|
zoneId: zone.zoneId,
|
|
89
91
|
name: zone.name.apply((zoneName) => `${fqdn}${zoneName}`),
|
|
90
92
|
type: record.type,
|
|
91
|
-
ttl: record.ttl ??
|
|
93
|
+
ttl: record.ttl ?? DEFAULT_DNS_TTL_SECONDS,
|
|
92
94
|
records: [...record.values],
|
|
93
95
|
});
|
|
94
96
|
}
|
package/dist/cjs/aws/dns.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/aws/dns.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../src/aws/dns.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBH,4CA6BC;AAnDD,iDAAmC;AAGnC,oCAA8C;AAE9C,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC;;;;;;;;;;;;;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,uBAAuB;QAC1C,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAC;AACL,CAAC"}
|
package/dist/cjs/aws/index.d.ts
CHANGED
|
@@ -7,4 +7,5 @@ export { createAwsNetwork, type IAwsNetworkOptions } from "./network";
|
|
|
7
7
|
export { createEksCluster, type IEksOptions } from "./cluster";
|
|
8
8
|
export { createRoute53Dns } from "./dns";
|
|
9
9
|
export { createAwsSecrets } from "./secrets";
|
|
10
|
+
export { createAwsStateBackend, type IAwsStateBackendOptions } from "./state";
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +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"}
|
|
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;AAC7C,OAAO,EAAE,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/cjs/aws/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @module aws
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.createAwsSecrets = exports.createRoute53Dns = exports.createEksCluster = exports.createAwsNetwork = void 0;
|
|
8
|
+
exports.createAwsStateBackend = exports.createAwsSecrets = exports.createRoute53Dns = exports.createEksCluster = exports.createAwsNetwork = void 0;
|
|
9
9
|
var network_1 = require("./network");
|
|
10
10
|
Object.defineProperty(exports, "createAwsNetwork", { enumerable: true, get: function () { return network_1.createAwsNetwork; } });
|
|
11
11
|
var cluster_1 = require("./cluster");
|
|
@@ -14,4 +14,6 @@ var dns_1 = require("./dns");
|
|
|
14
14
|
Object.defineProperty(exports, "createRoute53Dns", { enumerable: true, get: function () { return dns_1.createRoute53Dns; } });
|
|
15
15
|
var secrets_1 = require("./secrets");
|
|
16
16
|
Object.defineProperty(exports, "createAwsSecrets", { enumerable: true, get: function () { return secrets_1.createAwsSecrets; } });
|
|
17
|
+
var state_1 = require("./state");
|
|
18
|
+
Object.defineProperty(exports, "createAwsStateBackend", { enumerable: true, get: function () { return state_1.createAwsStateBackend; } });
|
|
17
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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"}
|
|
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;AACzB,iCAA8E;AAArE,8GAAA,qBAAqB,OAAA"}
|
|
@@ -1 +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;
|
|
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;AAMxE,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"}
|
package/dist/cjs/aws/network.js
CHANGED
|
@@ -42,6 +42,8 @@ exports.createAwsNetwork = createAwsNetwork;
|
|
|
42
42
|
const aws = __importStar(require("@pulumi/aws"));
|
|
43
43
|
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
44
44
|
const types_1 = require("../types");
|
|
45
|
+
/** AWS account ID that publishes the fck-nat community AMI. */
|
|
46
|
+
const FCK_NAT_AMI_OWNER = "568608671756";
|
|
45
47
|
/**
|
|
46
48
|
* Create an AWS VPC with public/private subnets and optional NAT.
|
|
47
49
|
*
|
|
@@ -140,7 +142,7 @@ function createFckNat(name, vpc, publicSubnets, privateSubnets, cidr, tags, opti
|
|
|
140
142
|
const instanceType = options?.fckNatInstanceType ?? "t4g.nano";
|
|
141
143
|
const fckNatAmi = aws.ec2.getAmiOutput({
|
|
142
144
|
mostRecent: true,
|
|
143
|
-
owners: [
|
|
145
|
+
owners: [FCK_NAT_AMI_OWNER],
|
|
144
146
|
filters: [
|
|
145
147
|
{ name: "name", values: ["fck-nat-al2023-*-arm64-ebs"] },
|
|
146
148
|
{ name: "architecture", values: ["arm64"] },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/aws/network.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/aws/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS S3 state backend implementation with BCDR features.
|
|
3
|
+
*
|
|
4
|
+
* Creates an S3 bucket for Pulumi state storage with versioning,
|
|
5
|
+
* encryption, locking (DynamoDB), and optional cross-region replication.
|
|
6
|
+
*
|
|
7
|
+
* @module aws/state
|
|
8
|
+
*/
|
|
9
|
+
import type { IStateBackend, IStateBackendConfig } from "../state";
|
|
10
|
+
/** AWS-specific state backend options. */
|
|
11
|
+
export interface IAwsStateBackendOptions {
|
|
12
|
+
/** KMS key ARN for encryption. Uses AES256 if not provided. */
|
|
13
|
+
readonly kmsKeyArn?: string;
|
|
14
|
+
/** Allow Pulumi to destroy the state bucket (for dev/test). Default: false. */
|
|
15
|
+
readonly forceDestroy?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create an AWS S3 state backend with BCDR features.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const state = createAwsStateBackend("prod", {
|
|
23
|
+
* cloud: "aws",
|
|
24
|
+
* versioning: true,
|
|
25
|
+
* encryption: true,
|
|
26
|
+
* locking: { enabled: true },
|
|
27
|
+
* replication: { enabled: true, destinationRegion: "us-west-2" },
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function createAwsStateBackend(name: string, config: IStateBackendConfig, options?: IAwsStateBackendOptions): IStateBackend;
|
|
32
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/aws/state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGnE,0CAA0C;AAC1C,MAAM,WAAW,uBAAuB;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,uBAAuB,GAChC,aAAa,CA6Kf"}
|