@caelo-cms/provisioning 0.10.44 → 0.10.47
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/dist/adc-impersonation.d.ts +28 -0
- package/dist/adc-impersonation.d.ts.map +1 -0
- package/dist/adc-impersonation.js +148 -0
- package/dist/adc-impersonation.js.map +1 -0
- package/dist/checkpoint-secrets.d.ts.map +1 -1
- package/dist/checkpoint-secrets.js +2 -1
- package/dist/checkpoint-secrets.js.map +1 -1
- package/dist/cli.js +202 -33
- package/dist/cli.js.map +1 -1
- package/dist/compose.d.ts +45 -0
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +112 -29
- package/dist/compose.js.map +1 -1
- package/dist/gcloud-retry.d.ts +5 -1
- package/dist/gcloud-retry.d.ts.map +1 -1
- package/dist/gcloud-retry.js.map +1 -1
- package/dist/gcloud.d.ts +2 -1
- package/dist/gcloud.d.ts.map +1 -1
- package/dist/gcloud.js +11 -13
- package/dist/gcloud.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/infra-contract.d.ts +24 -0
- package/dist/infra-contract.d.ts.map +1 -0
- package/dist/infra-contract.js +25 -0
- package/dist/infra-contract.js.map +1 -0
- package/dist/install-state.d.ts +66 -2
- package/dist/install-state.d.ts.map +1 -1
- package/dist/install-state.js +162 -22
- package/dist/install-state.js.map +1 -1
- package/dist/lifecycle.d.ts +6 -0
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +189 -819
- package/dist/lifecycle.js.map +1 -1
- package/dist/migration-runner.d.ts +3 -0
- package/dist/migration-runner.d.ts.map +1 -1
- package/dist/migration-runner.js +7 -5
- package/dist/migration-runner.js.map +1 -1
- package/dist/ops-backend.d.ts +46 -0
- package/dist/ops-backend.d.ts.map +1 -0
- package/dist/ops-backend.js +370 -0
- package/dist/ops-backend.js.map +1 -0
- package/dist/provisioner-identity.d.ts +103 -0
- package/dist/provisioner-identity.d.ts.map +1 -0
- package/dist/provisioner-identity.js +323 -0
- package/dist/provisioner-identity.js.map +1 -0
- package/dist/regions.d.ts.map +1 -1
- package/dist/regions.js +2 -1
- package/dist/regions.js.map +1 -1
- package/dist/release-contract.d.ts +37 -0
- package/dist/release-contract.d.ts.map +1 -0
- package/dist/release-contract.js +55 -0
- package/dist/release-contract.js.map +1 -0
- package/dist/release-manifest.d.ts +140 -0
- package/dist/release-manifest.d.ts.map +1 -0
- package/dist/release-manifest.js +319 -0
- package/dist/release-manifest.js.map +1 -0
- package/dist/self-command.d.ts +16 -0
- package/dist/self-command.d.ts.map +1 -0
- package/dist/self-command.js +20 -0
- package/dist/self-command.js.map +1 -0
- package/dist/self-hosted-release.d.ts +81 -0
- package/dist/self-hosted-release.d.ts.map +1 -0
- package/dist/self-hosted-release.js +148 -0
- package/dist/self-hosted-release.js.map +1 -0
- package/dist/self-hosted-upgrade.d.ts +91 -0
- package/dist/self-hosted-upgrade.d.ts.map +1 -0
- package/dist/self-hosted-upgrade.js +355 -0
- package/dist/self-hosted-upgrade.js.map +1 -0
- package/dist/stack-converge.d.ts.map +1 -1
- package/dist/stack-converge.js +2 -1
- package/dist/stack-converge.js.map +1 -1
- package/dist/state-attach.d.ts +23 -0
- package/dist/state-attach.d.ts.map +1 -0
- package/dist/state-attach.js +112 -0
- package/dist/state-attach.js.map +1 -0
- package/dist/state-backend.d.ts +114 -0
- package/dist/state-backend.d.ts.map +1 -0
- package/dist/state-backend.js +200 -0
- package/dist/state-backend.js.map +1 -0
- package/dist/state-command.d.ts +20 -0
- package/dist/state-command.d.ts.map +1 -0
- package/dist/state-command.js +237 -0
- package/dist/state-command.js.map +1 -0
- package/dist/state-migrate.d.ts +121 -0
- package/dist/state-migrate.d.ts.map +1 -0
- package/dist/state-migrate.js +290 -0
- package/dist/state-migrate.js.map +1 -0
- package/dist/state-pulumi.d.ts +17 -0
- package/dist/state-pulumi.d.ts.map +1 -0
- package/dist/state-pulumi.js +218 -0
- package/dist/state-pulumi.js.map +1 -0
- package/dist/state-store.d.ts +82 -0
- package/dist/state-store.d.ts.map +1 -0
- package/dist/state-store.js +205 -0
- package/dist/state-store.js.map +1 -0
- package/dist/upgrade/app-roll.d.ts +164 -0
- package/dist/upgrade/app-roll.d.ts.map +1 -0
- package/dist/upgrade/app-roll.js +270 -0
- package/dist/upgrade/app-roll.js.map +1 -0
- package/dist/upgrade/backup.d.ts +48 -0
- package/dist/upgrade/backup.d.ts.map +1 -0
- package/dist/upgrade/backup.js +71 -0
- package/dist/upgrade/backup.js.map +1 -0
- package/dist/upgrade/converge.d.ts +45 -0
- package/dist/upgrade/converge.d.ts.map +1 -0
- package/dist/upgrade/converge.js +287 -0
- package/dist/upgrade/converge.js.map +1 -0
- package/dist/upgrade/gcp-lookup.d.ts +23 -0
- package/dist/upgrade/gcp-lookup.d.ts.map +1 -0
- package/dist/upgrade/gcp-lookup.js +95 -0
- package/dist/upgrade/gcp-lookup.js.map +1 -0
- package/dist/upgrade/health.d.ts +99 -0
- package/dist/upgrade/health.d.ts.map +1 -0
- package/dist/upgrade/health.js +214 -0
- package/dist/upgrade/health.js.map +1 -0
- package/dist/upgrade/release-images.d.ts +125 -0
- package/dist/upgrade/release-images.d.ts.map +1 -0
- package/dist/upgrade/release-images.js +315 -0
- package/dist/upgrade/release-images.js.map +1 -0
- package/dist/upgrade/reporter.d.ts +17 -0
- package/dist/upgrade/reporter.d.ts.map +1 -0
- package/dist/upgrade/reporter.js +28 -0
- package/dist/upgrade/reporter.js.map +1 -0
- package/dist/upgrade/upgrade.d.ts +79 -0
- package/dist/upgrade/upgrade.d.ts.map +1 -0
- package/dist/upgrade/upgrade.js +105 -0
- package/dist/upgrade/upgrade.js.map +1 -0
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +7 -3
- package/dist/wizard.js.map +1 -1
- package/dist/wizards/gcp-cost.d.ts.map +1 -1
- package/dist/wizards/gcp-cost.js +7 -1
- package/dist/wizards/gcp-cost.js.map +1 -1
- package/dist/wizards/gcp-pulumi.d.ts +104 -8
- package/dist/wizards/gcp-pulumi.d.ts.map +1 -1
- package/dist/wizards/gcp-pulumi.js +159 -50
- package/dist/wizards/gcp-pulumi.js.map +1 -1
- package/dist/wizards/gcp.d.ts.map +1 -1
- package/dist/wizards/gcp.js +246 -78
- package/dist/wizards/gcp.js.map +1 -1
- package/package.json +4 -3
- package/stacks/self-hosted/README.md +4 -0
- package/stacks/self-hosted/index.ts +10 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-converge.d.ts","sourceRoot":"","sources":["../src/stack-converge.ts"],"names":[],"mappings":"AAuBA,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAA2B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"stack-converge.d.ts","sourceRoot":"","sources":["../src/stack-converge.ts"],"names":[],"mappings":"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"}
|
package/dist/stack-converge.js
CHANGED
|
@@ -22,6 +22,7 @@ import { removeDefaultFirewallRules } from "./default-firewall.js";
|
|
|
22
22
|
import { gcloud as defaultGcloud } from "./gcloud.js";
|
|
23
23
|
import { realSleep, runWithRetry } from "./gcloud-retry.js";
|
|
24
24
|
import { gcpBucketName, gcpSecretId } from "./gcp-names.js";
|
|
25
|
+
import { selfCommand } from "./self-command.js";
|
|
25
26
|
import { ADMIN_MEMORY_DEFAULT, adminEnvContract, databaseUrls, gatewayEnvContract, iamMember, memoryQuantityMiB, RETIRED_IAM_BINDINGS, RETIRED_SERVICE_ENV, STATIC_CDN_POLICY, stackIamInvariants, staticBackendBucketPrefix, } from "./stack-contract.js";
|
|
26
27
|
/**
|
|
27
28
|
* Env vars of the first container in `gcloud run services describe
|
|
@@ -335,7 +336,7 @@ async function ensureIam(invariants, install, projectNumber, run, sleep) {
|
|
|
335
336
|
status: "failed",
|
|
336
337
|
// upgrade only adds bindings; it never creates the resource itself.
|
|
337
338
|
error: RESOURCE_MISSING.test(error)
|
|
338
|
-
? `${error}\n The ${targetLabel(inv.target)} or the account it grants to does not exist on this install (the install predates it). Re-run the installer (
|
|
339
|
+
? `${error}\n The ${targetLabel(inv.target)} or the account it grants to does not exist on this install (the install predates it). Re-run the installer (${selfCommand()}) to create it — it keeps the release this install runs — then re-run upgrade.`
|
|
339
340
|
: error,
|
|
340
341
|
});
|
|
341
342
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-converge.js","sourceRoot":"","sources":["../src/stack-converge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stack-converge.js","sourceRoot":"","sources":["../src/stack-converge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type SyncGcloud } from "./state-store.js";
|
|
2
|
+
export type AttachResult = {
|
|
3
|
+
readonly ok: true;
|
|
4
|
+
readonly installId: string;
|
|
5
|
+
readonly domain: string;
|
|
6
|
+
readonly status: "attached" | "refreshed";
|
|
7
|
+
} | {
|
|
8
|
+
readonly ok: false;
|
|
9
|
+
readonly error: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Attach the install in `projectId` to this machine.
|
|
13
|
+
*
|
|
14
|
+
* @param deps.run gcloud runner (tests pass a fake bucket)
|
|
15
|
+
* @param deps.rootFor `~/.caelo-<id>` for an install id
|
|
16
|
+
* @param deps.hasLocalState whether a dir holds a local Pulumi stack
|
|
17
|
+
*/
|
|
18
|
+
export declare function attachInstall(projectId: string, deps: {
|
|
19
|
+
run: SyncGcloud;
|
|
20
|
+
rootFor: (installId: string) => string;
|
|
21
|
+
hasLocalState: (root: string) => boolean;
|
|
22
|
+
}): AttachResult;
|
|
23
|
+
//# sourceMappingURL=state-attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-attach.d.ts","sourceRoot":"","sources":["../src/state-attach.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnF,MAAM,MAAM,YAAY,GACpB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAAC;CAC3C,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAKnD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IACJ,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C,GACA,YAAY,CAsFd"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* `cms-provision attach --project <id>` (#696): make an install whose state
|
|
4
|
+
* lives in its ops bucket manageable from this machine (a new laptop, Cloud
|
|
5
|
+
* Shell). It reads `gs://<project>-caelo-ops/install/install.json`, checks
|
|
6
|
+
* it, and mirrors install.json + progress.json into `~/.caelo-<id>/`. No
|
|
7
|
+
* secret is copied, because none exists outside the operator's Google
|
|
8
|
+
* login: Pulumi reaches the state and its KMS key with that login.
|
|
9
|
+
*
|
|
10
|
+
* Refuses rather than overwrites: an install directory here that holds this
|
|
11
|
+
* install's local state (it was never migrated) or another backend.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
14
|
+
import { selfCommand } from "./self-command.js";
|
|
15
|
+
import { opsBucketName, parseStateBackend } from "./state-backend.js";
|
|
16
|
+
import { GcsStateStore, LocalStateStore } from "./state-store.js";
|
|
17
|
+
/** Install ids are `<provider>-<slug>` (install-state.ts deriveInstallId). */
|
|
18
|
+
const INSTALL_ID = /^[a-z0-9][a-z0-9-]{0,80}$/;
|
|
19
|
+
/**
|
|
20
|
+
* Attach the install in `projectId` to this machine.
|
|
21
|
+
*
|
|
22
|
+
* @param deps.run gcloud runner (tests pass a fake bucket)
|
|
23
|
+
* @param deps.rootFor `~/.caelo-<id>` for an install id
|
|
24
|
+
* @param deps.hasLocalState whether a dir holds a local Pulumi stack
|
|
25
|
+
*/
|
|
26
|
+
export function attachInstall(projectId, deps) {
|
|
27
|
+
const bucket = opsBucketName(projectId);
|
|
28
|
+
let text;
|
|
29
|
+
try {
|
|
30
|
+
// Peek: the directory to mirror into isn't known (or checked) yet.
|
|
31
|
+
text = new GcsStateStore(bucket, "/nonexistent", deps.run).peek("install.json");
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return { ok: false, error: e instanceof Error ? e.message : String(e) };
|
|
35
|
+
}
|
|
36
|
+
if (text === null) {
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
error: `gs://${bucket} holds no install.json. If this install's state is still on the machine that installed it, run \`${selfCommand("state", "migrate")}\` there first.`,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
let remote;
|
|
43
|
+
try {
|
|
44
|
+
remote = JSON.parse(text);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return { ok: false, error: `gs://${bucket}/install/install.json is not valid JSON.` };
|
|
48
|
+
}
|
|
49
|
+
const installId = typeof remote.installId === "string" ? remote.installId : "";
|
|
50
|
+
if (!INSTALL_ID.test(installId) || remote.projectId !== projectId) {
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
error: `gs://${bucket}/install/install.json does not describe an install in project ${projectId}; refusing to attach.`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
let backend;
|
|
57
|
+
try {
|
|
58
|
+
backend = parseStateBackend(remote.stateBackend);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
return { ok: false, error: e instanceof Error ? e.message : String(e) };
|
|
62
|
+
}
|
|
63
|
+
if (backend?.kind !== "gcs") {
|
|
64
|
+
return {
|
|
65
|
+
ok: false,
|
|
66
|
+
error: `${installId}'s state was moved back to a machine (state migrate --to local); there is nothing in gs://${bucket} to attach to. Run \`state migrate --to remote\` on that machine first.`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (backend.bucket !== bucket) {
|
|
70
|
+
return {
|
|
71
|
+
ok: false,
|
|
72
|
+
error: `install.json in gs://${bucket} names another bucket (${backend.bucket}); refusing to attach.`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const root = deps.rootFor(installId);
|
|
76
|
+
const localText = new LocalStateStore(root).read("install.json");
|
|
77
|
+
// Local Pulumi state blocks the attach whether or not an install.json
|
|
78
|
+
// sits next to it: attaching would hide it.
|
|
79
|
+
if (deps.hasLocalState(root)) {
|
|
80
|
+
return {
|
|
81
|
+
ok: false,
|
|
82
|
+
error: `${root} holds a local Pulumi state of this install. Attaching would hide it; run \`${selfCommand("state", "migrate", "--install", installId)}\` instead, or move ${root} aside if that state is stale.`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
let status = "attached";
|
|
86
|
+
if (localText !== null) {
|
|
87
|
+
const local = JSON.parse(localText);
|
|
88
|
+
const localBackend = parseStateBackend(local.stateBackend);
|
|
89
|
+
if (localBackend?.kind === "gcs" && localBackend.bucket === bucket) {
|
|
90
|
+
status = "refreshed";
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
return {
|
|
94
|
+
ok: false,
|
|
95
|
+
error: `${root}/install.json exists and names another backend. Move ${root} aside, then re-run attach.`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (!existsSync(root))
|
|
100
|
+
mkdirSync(root, { recursive: true, mode: 0o700 });
|
|
101
|
+
// Mirror exactly the install.json validated above (a re-read could fetch
|
|
102
|
+
// a different one written meanwhile); progress.json is bookkeeping.
|
|
103
|
+
new LocalStateStore(root).write("install.json", JSON.parse(text));
|
|
104
|
+
new GcsStateStore(bucket, root, deps.run).read("progress.json");
|
|
105
|
+
return {
|
|
106
|
+
ok: true,
|
|
107
|
+
installId,
|
|
108
|
+
domain: typeof remote.domain === "string" ? remote.domain : installId,
|
|
109
|
+
status,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=state-attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-attach.js","sourceRoot":"","sources":["../src/state-attach.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/** Name of the Cloud KMS key ring holding Caelo's keys in the install project. */
|
|
2
|
+
export declare const OPS_KEY_RING = "caelo";
|
|
3
|
+
/** Name of the Cloud KMS key Pulumi encrypts the stack's secrets with. */
|
|
4
|
+
export declare const OPS_STATE_KEY = "pulumi-state";
|
|
5
|
+
/** Prefix inside the ops bucket that Pulumi's DIY backend uses. */
|
|
6
|
+
export declare const OPS_PULUMI_PREFIX = "pulumi";
|
|
7
|
+
/** Prefix inside the ops bucket that holds install.json + progress.json. */
|
|
8
|
+
export declare const OPS_INSTALL_PREFIX = "install";
|
|
9
|
+
/** What install.json records about the install's state backend. */
|
|
10
|
+
export type StateBackendRecord = {
|
|
11
|
+
readonly kind: "local";
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: "gcs";
|
|
14
|
+
/** The ops bucket, without `gs://`. */
|
|
15
|
+
readonly bucket: string;
|
|
16
|
+
/** Full resource name of the KMS key (`projects/…/cryptoKeys/pulumi-state`). */
|
|
17
|
+
readonly kmsKey: string;
|
|
18
|
+
};
|
|
19
|
+
/** The ops-bucket variant of {@link StateBackendRecord}. */
|
|
20
|
+
export type GcsBackendRecord = Extract<StateBackendRecord, {
|
|
21
|
+
kind: "gcs";
|
|
22
|
+
}>;
|
|
23
|
+
/** The backend a Pulumi command runs against, ready to pass to the CLI. */
|
|
24
|
+
export interface ResolvedBackend {
|
|
25
|
+
readonly kind: StateBackendRecord["kind"];
|
|
26
|
+
/** `PULUMI_BACKEND_URL`. */
|
|
27
|
+
readonly url: string;
|
|
28
|
+
/** What `pulumi stack init/migrate --secrets-provider` takes. */
|
|
29
|
+
readonly secretsProvider: string;
|
|
30
|
+
/** The environment Pulumi needs for this backend (and nothing else). */
|
|
31
|
+
readonly envVars: Readonly<Record<string, string>>;
|
|
32
|
+
}
|
|
33
|
+
/** `<project>-caelo-ops` — the install's ops bucket (project ids are globally unique). */
|
|
34
|
+
export declare function opsBucketName(projectId: string): string;
|
|
35
|
+
/** Full resource name of the install's Pulumi state key. */
|
|
36
|
+
export declare function opsKmsKeyName(projectId: string, region: string): string;
|
|
37
|
+
/** The `gcs` record for an install in `projectId`, its ops resources in `region`. */
|
|
38
|
+
export declare function gcsBackendRecord(projectId: string, region: string): GcsBackendRecord;
|
|
39
|
+
/** The install's recorded backend; installs that predate #696 are `local`. */
|
|
40
|
+
export declare function installBackend(meta: {
|
|
41
|
+
readonly stateBackend?: StateBackendRecord;
|
|
42
|
+
}): StateBackendRecord;
|
|
43
|
+
/**
|
|
44
|
+
* Validate a `stateBackend` value read from install.json (on disk or in the
|
|
45
|
+
* bucket). A malformed record would point Pulumi at the wrong place, so it
|
|
46
|
+
* throws instead of guessing.
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseStateBackend(value: unknown): StateBackendRecord | undefined;
|
|
49
|
+
/** Where a `local` install keeps Pulumi's state. */
|
|
50
|
+
export declare function localStateDir(installRoot: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the backend URL, secrets provider and environment for an install.
|
|
53
|
+
*
|
|
54
|
+
* `local` needs the passphrase and fails loudly without it — Pulumi would
|
|
55
|
+
* otherwise prompt for it on a terminal nobody sees. `gcs` needs no secret:
|
|
56
|
+
* Pulumi reaches the bucket and the KMS key with the operator's Application
|
|
57
|
+
* Default Credentials. Both set `PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER`:
|
|
58
|
+
* Pulumi then takes the secrets provider (KMS key or passphrase salt) from
|
|
59
|
+
* the install's own state when the stack's config file in the package's
|
|
60
|
+
* stack dir names none (wizards/gcp-pulumi.ts alignedStackSettings).
|
|
61
|
+
*
|
|
62
|
+
* @param meta the install (its `stateBackend`, absent = local)
|
|
63
|
+
* @param opts.installRoot `~/.caelo-<id>`
|
|
64
|
+
* @param opts.readPassphrase reads `secrets/pulumi-passphrase`; called for local only
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveBackend(meta: {
|
|
67
|
+
readonly installId: string;
|
|
68
|
+
readonly stateBackend?: StateBackendRecord;
|
|
69
|
+
}, opts: {
|
|
70
|
+
readonly installRoot: string;
|
|
71
|
+
readonly readPassphrase: () => string | null;
|
|
72
|
+
}): ResolvedBackend;
|
|
73
|
+
/**
|
|
74
|
+
* The shell prefix that points a manual `pulumi …` command at the install's
|
|
75
|
+
* backend, for recovery instructions the CLI prints. Never contains the
|
|
76
|
+
* passphrase itself: a local install reads it from its file at run time.
|
|
77
|
+
*/
|
|
78
|
+
export declare function backendShellEnv(meta: {
|
|
79
|
+
readonly stateBackend?: StateBackendRecord;
|
|
80
|
+
}, installRoot: string): string;
|
|
81
|
+
/** Human-readable location of the install's state, for status and progress output. */
|
|
82
|
+
export declare function describeBackend(meta: {
|
|
83
|
+
readonly stateBackend?: StateBackendRecord;
|
|
84
|
+
}, installRoot: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* Whether a local Pulumi backend dir holds any stack (Pulumi's DIY layout
|
|
87
|
+
* keeps them under `.pulumi/stacks/`).
|
|
88
|
+
*/
|
|
89
|
+
export declare function hasLocalPulumiState(installRoot: string): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Which backend the GCP wizard runs an install on (#696). A recorded
|
|
92
|
+
* backend wins. An install without one whose state already sits on this
|
|
93
|
+
* machine stays local — moving state needs a preflight, a backup and a
|
|
94
|
+
* verification, never a side effect of a re-run.
|
|
95
|
+
* Everything else (a new GCP install) gets the ops bucket. Self-hosted, AWS
|
|
96
|
+
* and Azure stay local until their adapters have an equivalent.
|
|
97
|
+
*/
|
|
98
|
+
export declare function chooseInstallBackend(meta: {
|
|
99
|
+
readonly installId?: string;
|
|
100
|
+
readonly provider: string;
|
|
101
|
+
readonly stateBackend?: StateBackendRecord;
|
|
102
|
+
}, localStateExists: boolean, deployed?: boolean): StateBackendRecord["kind"];
|
|
103
|
+
/**
|
|
104
|
+
* What `upgrade` tells the operator about an install whose Pulumi state is
|
|
105
|
+
* still on this machine (#696), or null when it lives in the install's own
|
|
106
|
+
* cloud. `upgrade` never moves state itself: the move has its own
|
|
107
|
+
* preflight, backup and verification (`state migrate`).
|
|
108
|
+
*/
|
|
109
|
+
export declare function localStateNotice(meta: {
|
|
110
|
+
readonly installId: string;
|
|
111
|
+
readonly provider: string;
|
|
112
|
+
readonly stateBackend?: StateBackendRecord;
|
|
113
|
+
}): string | null;
|
|
114
|
+
//# sourceMappingURL=state-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-backend.d.ts","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Where an install's Pulumi state and install metadata live (#696, D2).
|
|
4
|
+
*
|
|
5
|
+
* Two kinds:
|
|
6
|
+
*
|
|
7
|
+
* - `local` — the original layout: Pulumi's DIY backend at
|
|
8
|
+
* `file://~/.caelo-<id>/state`, secrets encrypted with the passphrase in
|
|
9
|
+
* `~/.caelo-<id>/secrets/pulumi-passphrase`. Only the machine that
|
|
10
|
+
* installed can upgrade or re-run the install. Self-hosted always stays
|
|
11
|
+
* here: its state is on the host, next to the install.
|
|
12
|
+
* - `gcs` — the install's own GCP project holds everything: a versioned,
|
|
13
|
+
* uniform-access, public-access-prevented bucket `<project>-caelo-ops`
|
|
14
|
+
* (`pulumi/` for Pulumi's DIY backend, `install/` for install.json and
|
|
15
|
+
* progress.json) and a Cloud KMS key `caelo/pulumi-state` as Pulumi's
|
|
16
|
+
* secrets provider. No passphrase exists. Any machine (laptop, Cloud
|
|
17
|
+
* Shell, an in-cloud job) the operator is signed in on can run the
|
|
18
|
+
* install's lifecycle commands after `cms-provision attach`.
|
|
19
|
+
*
|
|
20
|
+
* install.json records the kind in `stateBackend`; an install without the
|
|
21
|
+
* field predates #696 and is `local`. Every Pulumi call resolves its backend
|
|
22
|
+
* URL, secrets provider and environment through {@link resolveBackend} — no
|
|
23
|
+
* other code builds a `file://` URL or reads the passphrase.
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
26
|
+
import { join } from "node:path";
|
|
27
|
+
import { selfCommand } from "./self-command.js";
|
|
28
|
+
/** Name of the Cloud KMS key ring holding Caelo's keys in the install project. */
|
|
29
|
+
export const OPS_KEY_RING = "caelo";
|
|
30
|
+
/** Name of the Cloud KMS key Pulumi encrypts the stack's secrets with. */
|
|
31
|
+
export const OPS_STATE_KEY = "pulumi-state";
|
|
32
|
+
/** Prefix inside the ops bucket that Pulumi's DIY backend uses. */
|
|
33
|
+
export const OPS_PULUMI_PREFIX = "pulumi";
|
|
34
|
+
/** Prefix inside the ops bucket that holds install.json + progress.json. */
|
|
35
|
+
export const OPS_INSTALL_PREFIX = "install";
|
|
36
|
+
/** `<project>-caelo-ops` — the install's ops bucket (project ids are globally unique). */
|
|
37
|
+
export function opsBucketName(projectId) {
|
|
38
|
+
return `${projectId}-caelo-ops`;
|
|
39
|
+
}
|
|
40
|
+
/** Full resource name of the install's Pulumi state key. */
|
|
41
|
+
export function opsKmsKeyName(projectId, region) {
|
|
42
|
+
return `projects/${projectId}/locations/${region}/keyRings/${OPS_KEY_RING}/cryptoKeys/${OPS_STATE_KEY}`;
|
|
43
|
+
}
|
|
44
|
+
/** The `gcs` record for an install in `projectId`, its ops resources in `region`. */
|
|
45
|
+
export function gcsBackendRecord(projectId, region) {
|
|
46
|
+
return {
|
|
47
|
+
kind: "gcs",
|
|
48
|
+
bucket: opsBucketName(projectId),
|
|
49
|
+
kmsKey: opsKmsKeyName(projectId, region),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** The install's recorded backend; installs that predate #696 are `local`. */
|
|
53
|
+
export function installBackend(meta) {
|
|
54
|
+
return meta.stateBackend ?? { kind: "local" };
|
|
55
|
+
}
|
|
56
|
+
const BUCKET = /^[a-z0-9][a-z0-9._-]{1,61}[a-z0-9]$/;
|
|
57
|
+
const KMS_KEY = /^projects\/[a-z][a-z0-9.:-]{0,61}[a-z0-9]\/locations\/[a-z0-9-]+\/keyRings\/[A-Za-z0-9_-]+\/cryptoKeys\/[A-Za-z0-9_-]+$/;
|
|
58
|
+
/**
|
|
59
|
+
* Validate a `stateBackend` value read from install.json (on disk or in the
|
|
60
|
+
* bucket). A malformed record would point Pulumi at the wrong place, so it
|
|
61
|
+
* throws instead of guessing.
|
|
62
|
+
*/
|
|
63
|
+
export function parseStateBackend(value) {
|
|
64
|
+
if (value === undefined)
|
|
65
|
+
return undefined;
|
|
66
|
+
const v = value;
|
|
67
|
+
if (v && v.kind === "local")
|
|
68
|
+
return { kind: "local" };
|
|
69
|
+
if (v &&
|
|
70
|
+
v.kind === "gcs" &&
|
|
71
|
+
typeof v.bucket === "string" &&
|
|
72
|
+
BUCKET.test(v.bucket) &&
|
|
73
|
+
typeof v.kmsKey === "string" &&
|
|
74
|
+
KMS_KEY.test(v.kmsKey)) {
|
|
75
|
+
return { kind: "gcs", bucket: v.bucket, kmsKey: v.kmsKey };
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`install.json stateBackend is malformed (${JSON.stringify(value)}). Expected {"kind":"local"} or {"kind":"gcs","bucket":"<project>-caelo-ops","kmsKey":"projects/…/cryptoKeys/${OPS_STATE_KEY}"}.`);
|
|
78
|
+
}
|
|
79
|
+
/** Where a `local` install keeps Pulumi's state. */
|
|
80
|
+
export function localStateDir(installRoot) {
|
|
81
|
+
return join(installRoot, "state");
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Resolve the backend URL, secrets provider and environment for an install.
|
|
85
|
+
*
|
|
86
|
+
* `local` needs the passphrase and fails loudly without it — Pulumi would
|
|
87
|
+
* otherwise prompt for it on a terminal nobody sees. `gcs` needs no secret:
|
|
88
|
+
* Pulumi reaches the bucket and the KMS key with the operator's Application
|
|
89
|
+
* Default Credentials. Both set `PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER`:
|
|
90
|
+
* Pulumi then takes the secrets provider (KMS key or passphrase salt) from
|
|
91
|
+
* the install's own state when the stack's config file in the package's
|
|
92
|
+
* stack dir names none (wizards/gcp-pulumi.ts alignedStackSettings).
|
|
93
|
+
*
|
|
94
|
+
* @param meta the install (its `stateBackend`, absent = local)
|
|
95
|
+
* @param opts.installRoot `~/.caelo-<id>`
|
|
96
|
+
* @param opts.readPassphrase reads `secrets/pulumi-passphrase`; called for local only
|
|
97
|
+
*/
|
|
98
|
+
export function resolveBackend(meta, opts) {
|
|
99
|
+
const record = installBackend(meta);
|
|
100
|
+
if (record.kind === "gcs") {
|
|
101
|
+
const url = `gs://${record.bucket}/${OPS_PULUMI_PREFIX}`;
|
|
102
|
+
return {
|
|
103
|
+
kind: "gcs",
|
|
104
|
+
url,
|
|
105
|
+
secretsProvider: `gcpkms://${record.kmsKey}`,
|
|
106
|
+
envVars: {
|
|
107
|
+
PULUMI_BACKEND_URL: url,
|
|
108
|
+
PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER: "true",
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const passphrase = opts.readPassphrase();
|
|
113
|
+
if (!passphrase) {
|
|
114
|
+
throw new Error(`~/.caelo-${meta.installId}/secrets/pulumi-passphrase is missing, so the install's local Pulumi state can't be decrypted. Restore it from your backup of ~/.caelo-${meta.installId}/.`);
|
|
115
|
+
}
|
|
116
|
+
const url = `file://${localStateDir(opts.installRoot)}`;
|
|
117
|
+
return {
|
|
118
|
+
kind: "local",
|
|
119
|
+
url,
|
|
120
|
+
secretsProvider: "passphrase",
|
|
121
|
+
envVars: {
|
|
122
|
+
PULUMI_BACKEND_URL: url,
|
|
123
|
+
PULUMI_CONFIG_PASSPHRASE: passphrase,
|
|
124
|
+
PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER: "true",
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The shell prefix that points a manual `pulumi …` command at the install's
|
|
130
|
+
* backend, for recovery instructions the CLI prints. Never contains the
|
|
131
|
+
* passphrase itself: a local install reads it from its file at run time.
|
|
132
|
+
*/
|
|
133
|
+
export function backendShellEnv(meta, installRoot) {
|
|
134
|
+
const record = installBackend(meta);
|
|
135
|
+
if (record.kind === "gcs") {
|
|
136
|
+
return `PULUMI_BACKEND_URL=gs://${record.bucket}/${OPS_PULUMI_PREFIX} PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER=true`;
|
|
137
|
+
}
|
|
138
|
+
return `PULUMI_BACKEND_URL=file://${localStateDir(installRoot)} PULUMI_CONFIG_PASSPHRASE="$(cat ${join(installRoot, "secrets", "pulumi-passphrase")})" PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER=true`;
|
|
139
|
+
}
|
|
140
|
+
/** Human-readable location of the install's state, for status and progress output. */
|
|
141
|
+
export function describeBackend(meta, installRoot) {
|
|
142
|
+
const record = installBackend(meta);
|
|
143
|
+
return record.kind === "gcs"
|
|
144
|
+
? `gs://${record.bucket} (secrets: Cloud KMS ${record.kmsKey.split("/").slice(-3).join("/")})`
|
|
145
|
+
: `${localStateDir(installRoot)} on this machine (secrets: passphrase file)`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Whether a local Pulumi backend dir holds any stack (Pulumi's DIY layout
|
|
149
|
+
* keeps them under `.pulumi/stacks/`).
|
|
150
|
+
*/
|
|
151
|
+
export function hasLocalPulumiState(installRoot) {
|
|
152
|
+
const stacks = join(localStateDir(installRoot), ".pulumi", "stacks");
|
|
153
|
+
if (!existsSync(stacks))
|
|
154
|
+
return false;
|
|
155
|
+
// An unreadable dir throws: guessing "no state" would move a deployed
|
|
156
|
+
// install onto an empty backend.
|
|
157
|
+
return readdirSync(stacks).length > 0;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Which backend the GCP wizard runs an install on (#696). A recorded
|
|
161
|
+
* backend wins. An install without one whose state already sits on this
|
|
162
|
+
* machine stays local — moving state needs a preflight, a backup and a
|
|
163
|
+
* verification, never a side effect of a re-run.
|
|
164
|
+
* Everything else (a new GCP install) gets the ops bucket. Self-hosted, AWS
|
|
165
|
+
* and Azure stay local until their adapters have an equivalent.
|
|
166
|
+
*/
|
|
167
|
+
export function chooseInstallBackend(meta, localStateExists, deployed = false) {
|
|
168
|
+
if (meta.stateBackend)
|
|
169
|
+
return meta.stateBackend.kind;
|
|
170
|
+
if (meta.provider !== "gcp" && meta.provider !== "gcp-firebase")
|
|
171
|
+
return "local";
|
|
172
|
+
if (localStateExists)
|
|
173
|
+
return "local";
|
|
174
|
+
if (deployed) {
|
|
175
|
+
// Deployed, yet no state anywhere: a fresh backend would make Pulumi
|
|
176
|
+
// recreate (and collide with) every resource.
|
|
177
|
+
throw new Error(`Install ${meta.installId ?? ""} was deployed, but its Pulumi state is neither recorded in install.json nor in ~/.caelo-${meta.installId ?? "<install-id>"}/state. Restore that directory from your backup and re-run.`);
|
|
178
|
+
}
|
|
179
|
+
return "gcs";
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* What `upgrade` tells the operator about an install whose Pulumi state is
|
|
183
|
+
* still on this machine (#696), or null when it lives in the install's own
|
|
184
|
+
* cloud. `upgrade` never moves state itself: the move has its own
|
|
185
|
+
* preflight, backup and verification (`state migrate`).
|
|
186
|
+
*/
|
|
187
|
+
export function localStateNotice(meta) {
|
|
188
|
+
if (installBackend(meta).kind !== "local")
|
|
189
|
+
return null;
|
|
190
|
+
if (meta.provider !== "gcp" && meta.provider !== "gcp-firebase")
|
|
191
|
+
return null;
|
|
192
|
+
return [
|
|
193
|
+
`This install's Pulumi state and passphrase live only on this machine (~/.caelo-${meta.installId}/).`,
|
|
194
|
+
"Lose this machine and the install's infrastructure can no longer be converged from anywhere.",
|
|
195
|
+
"Move them into the install's own GCP project (versioned bucket + Cloud KMS key, < $0.10/mo):",
|
|
196
|
+
` ${selfCommand("state", "migrate", "--install", meta.installId, "--dry-run")}`,
|
|
197
|
+
` ${selfCommand("state", "migrate", "--install", meta.installId)}`,
|
|
198
|
+
].join("\n");
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=state-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-backend.js","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"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"}
|