Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68a193d6f0 | ||
|
|
4fba884d47 | ||
|
|
15f0dabf32 |
@@ -962,9 +962,14 @@ func runLink(ctx context.Context, opts options) error {
|
|||||||
return nil // asked to stop while waiting
|
return nil // asked to stop while waiting
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("node %s, linking to %s\n", mine.Node, mine.Membership.Broker)
|
// **A membership delivered while this host was not running is adopted before the first dial.**
|
||||||
|
// The ordinary path is a declaration, read after it applies; the rescue path is an operator
|
||||||
|
// writing the file by hand on a machine no bus can reach — rotated while it held the old
|
||||||
|
// password, say — and restarting the host (design 28, task 5.2). Same file, same check.
|
||||||
say := func(line string) { fmt.Println(line) }
|
say := func(line string) { fmt.Println(line) }
|
||||||
|
adoptDeliveredMembership(identity.Path(opts.state), &mine, say)
|
||||||
|
|
||||||
|
fmt.Printf("node %s, linking to %s\n", mine.Node, mine.Membership.Broker)
|
||||||
|
|
||||||
// One scheduler for the life of the process, re-established from each applied declaration
|
// One scheduler for the life of the process, re-established from each applied declaration
|
||||||
// (novox/hq ADR 0053). It fires scheduled steps on their cadence, surviving across applies and
|
// (novox/hq ADR 0053). It fires scheduled steps on their cadence, surviving across applies and
|
||||||
|
|||||||
@@ -152,7 +152,7 @@
|
|||||||
"type": "file",
|
"type": "file",
|
||||||
"path": "/var/lib/mesh-bus-conf/accounts.conf",
|
"path": "/var/lib/mesh-bus-conf/accounts.conf",
|
||||||
"mode": "0600",
|
"mode": "0600",
|
||||||
"content": "// The first user list, carried by the installer because at genesis there is no mesh to\n// compose one. A bootstrap credential, rotated with the store's and replaced by the\n// controller's own composition from its first start onward.\naccounts {\n MESH {\n users = [\n { user: \"controller\", password: \"$2a$10$AHqJgOifIVbU41KmATiMhuXFs8xa7Wl2HuN4UVBCXdN2jIQzjqApy\", permissions: {\n publish: { allow: [\"$JS.API.>\", \"$JS.ACK.CONTROL.controller.>\", \"$JS.ACK.EVENTS.controller.>\", \"_INBOX.enrol.>\", \"mesh.control.>\", \"mesh.node.>\", \"mesh.seat.mesh-build-machine.accept.>\"] }\n subscribe: { allow: [\"$JS.API.>\", \"_INBOX.controller.>\", \"mesh.control.>\", \"mesh.mod.mesh-catalog.event.catching-up\", \"mesh.mod.mesh-catalog.event.upgraded\", \"mesh.seat.mesh-build-machine.event.built\"] }\n allow_responses: { max: 1, ttl: \"1m\" }\n } }\n ]\n }\n}\n"
|
"content": "// The first user list, carried by the installer because at genesis there is no mesh to\n// compose one. A bootstrap credential, rotated with the store's and replaced by the\n// controller's own composition from its first start onward.\naccounts {\n MESH {\n jetstream: enabled\n users = [\n { user: \"controller\", password: \"$2a$10$AHqJgOifIVbU41KmATiMhuXFs8xa7Wl2HuN4UVBCXdN2jIQzjqApy\", permissions: {\n publish: { allow: [\"$JS.API.>\", \"$JS.ACK.CONTROL.controller.>\", \"$JS.ACK.EVENTS.controller.>\", \"_INBOX.enrol.>\", \"mesh.control.>\", \"mesh.node.>\", \"mesh.seat.mesh-build-machine.accept.>\"] }\n subscribe: { allow: [\"$JS.API.>\", \"_DELIVER.controller\", \"_DELIVER.controller.>\", \"_INBOX.controller.>\", \"mesh.control.>\", \"mesh.mod.mesh-catalog.event.catching-up\", \"mesh.mod.mesh-catalog.event.upgraded\", \"mesh.seat.mesh-build-machine.event.built\"] }\n allow_responses: { max: 1, ttl: \"1m\" }\n } }\n ]\n }\n}\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "broker",
|
"id": "broker",
|
||||||
|
|||||||
Reference in New Issue
Block a user