Commit 9ff7fcc
committed
feat(infra): RUNNERS-count multi-runner provisioning; drop dead RUNNER_PRIVATE_IP
Add a `RUNNERS=N` knob to provision N runners on `sst deploy` with no API
changes. The default runner is still auto-seeded by the API at boot; extras
(runner-2..N) each get their own EC2 + minted token and are registered with the
control plane after deploy via the admin API. Pairing is token-based and v2
runners self-report their address via healthcheck, so the API needs no
multi-runner seed.
- sst.config.ts: add the `command` provider; create extra-runner EC2s
(protect:true, same ignoreChanges as the default); RegisterExtraRunners
(command.local.Command) runs scripts/register-runners.mjs after the EC2s.
- scripts/register-runners.mjs: poll GET /api/health, then POST
/api/admin/runners per extra runner (Bearer admin key); 201 and 409 both
treated as success, so redeploys are idempotent.
- Remove dead RUNNER_PRIVATE_IP / runnerEndpoint wiring + the
DEFAULT_RUNNER_*URL env: they only fed the v0 seed branch, which this v2
deploy never hits. Keep DEFAULT_RUNNER_NAME/_API_KEY (the v2 seed needs them).
- .env.example / README: document RUNNERS + "Adding a runner"; remove the stale
RUNNER_PRIVATE_IP "after first deploy" step.
Known limitations (follow-ups): scale-down is not symmetric — protect:true
blocks a plain `RUNNERS` decrease (needs the decommission ceremony) and the
provisioner does not deregister the control-plane row; extra EC2 tags come out
as `boxlite-runner-runner-N`; `npx sst install` is required to fetch the
`command` provider before deploy.1 parent 71e1754 commit 9ff7fcc
4 files changed
Lines changed: 174 additions & 36 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
74 | 72 | | |
75 | 73 | | |
76 | 74 | | |
| |||
121 | 119 | | |
122 | 120 | | |
123 | 121 | | |
124 | | - | |
125 | | - | |
| 122 | + | |
| 123 | + | |
126 | 124 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | 125 | | |
131 | 126 | | |
132 | 127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
42 | 45 | | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
| 46 | + | |
48 | 47 | | |
49 | | - | |
50 | | - | |
| 48 | + | |
| 49 | + | |
51 | 50 | | |
52 | | - | |
| 51 | + | |
| 52 | + | |
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
56 | 64 | | |
57 | 65 | | |
58 | 66 | | |
| |||
339 | 347 | | |
340 | 348 | | |
341 | 349 | | |
342 | | - | |
343 | | - | |
344 | | - | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
345 | 356 | | |
346 | 357 | | |
347 | 358 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
90 | 90 | | |
91 | 91 | | |
92 | 92 | | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | 93 | | |
102 | 94 | | |
103 | 95 | | |
| |||
110 | 102 | | |
111 | 103 | | |
112 | 104 | | |
| 105 | + | |
| 106 | + | |
113 | 107 | | |
114 | 108 | | |
115 | 109 | | |
| |||
341 | 335 | | |
342 | 336 | | |
343 | 337 | | |
344 | | - | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
345 | 341 | | |
346 | 342 | | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | 343 | | |
351 | 344 | | |
352 | 345 | | |
| |||
595 | 588 | | |
596 | 589 | | |
597 | 590 | | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
598 | 647 | | |
599 | 648 | | |
600 | 649 | | |
| |||
0 commit comments