Files
mesh-catalog/modules/systemd-networkd/module.json
T

66 lines
2.3 KiB
JSON

{
"module": "systemd-networkd",
"version": "1",
"upgrade": {
"policy": "record",
"why": "the machine's network: a build that breaks it can cut the machine off from the bus, and then neither the gate's rollback nor a push reaches it (hq ADR 0236)"
},
"slug": "networkd",
"requires": [
"wildcard-resolution"
],
"capabilities": [
"service-manager",
"uplink-systemd-networkd"
],
"claims": [
{
"name": "node-uplink",
"scope": "node"
}
],
"build": {
"artifacts": [
{
"name": "tools",
"kind": "bundle",
"language": "go",
"system": "arch",
"from": "cmd/uplink-tools",
"binary": "uplink-tools",
"loads": [
"uplink-tools"
]
},
{
"name": "files",
"kind": "archive",
"from": "files"
}
]
},
"facts": {
"resolvers": {
"path": "/etc/resolv.conf",
"template": "# Managed by the mesh, and written by the module holding this machine's uplink:\n# the program that manages the machine's network would otherwise rewrite this\n# file on every change of network, so its holder is the one that writes it\n# (novox/hq ADR 0117, ADR 0223). Replaced on every push; edit nothing here.\n#\n# Every resolver of the mesh, by address, and nothing else (novox/hq ADR 0223) —\n# this machine's own first when it holds one, then the others by name. Each\n# answers the mesh's names from the same roster and forwards every other name, so\n# whichever answers first gives the one answer. There is no public resolver here:\n# a C library that asks every listed server at once and takes the first reply —\n# musl, so every Alpine container — took a public resolver's \"no such name\" for\n# a mesh name and failed. A machine that reaches none of these has no names until\n# it does. Containers copy these lines from their machine.\n{{range index .Holders \"mesh-dns-resolver\"}}nameserver {{.Address}}\n{{end}}options timeout:1 attempts:2 edns0\n"
}
},
"resources": [
{
"id": "config",
"type": "file",
"path": "/etc/systemd/network/00-mesh0.network",
"mode": "0644",
"template": "files/00-mesh0.network"
},
{
"id": "service",
"type": "service",
"unit": "systemd-networkd.service",
"reload-on": [
"config"
]
}
]
}