A push leaves out a module whose settings do not compose and sends the rest, which is right, but only plan said so: nfs-server ran nowhere for days while the operator believed it ran. The self-check now raises needs-operator for a setting nobody gave, naming the setting and the command, and left-out for any other cause; both warnings, cleared once the module composes or is unassigned. status and node show list the same modules as assigned, not applied.
143 lines
3.8 KiB
JSON
143 lines
3.8 KiB
JSON
{
|
|
"module": "nfs-server",
|
|
"version": "1",
|
|
"upgrade": {
|
|
"policy": "record",
|
|
"why": "the folders other machines mount: a build that breaks the exports leaves every client's mount hanging or refused, and the gate on this one machine does not see the clients (hq ADR 0236, ADR 0263)"
|
|
},
|
|
"capabilities": [
|
|
"package-manager",
|
|
"service-manager"
|
|
],
|
|
"provides": [
|
|
{
|
|
"name": "nfs-share",
|
|
"scope": "mesh",
|
|
"identity": false
|
|
}
|
|
],
|
|
"data": {
|
|
"consumers": {
|
|
"nfs-share": {
|
|
"class": "none",
|
|
"why": "the shared folders are the operator's data (hq ADR 0051): what a client writes lands in them, and they are protected where the operator declares them, never by this module, which keeps nothing of a consumer's"
|
|
}
|
|
}
|
|
},
|
|
"claims": [
|
|
{
|
|
"name": "node-nfs-server",
|
|
"scope": "node",
|
|
"serves": [
|
|
"exports",
|
|
"clients",
|
|
"test",
|
|
"reload",
|
|
"adopt"
|
|
]
|
|
}
|
|
],
|
|
"state": [
|
|
{
|
|
"name": "exports",
|
|
"ttl-seconds": 120,
|
|
"per-machine": true
|
|
}
|
|
],
|
|
"tools": [
|
|
"nfs_health"
|
|
],
|
|
"listens": [
|
|
{
|
|
"name": "nfs",
|
|
"port": 2049,
|
|
"protocol": "tcp",
|
|
"from": "mesh",
|
|
"fixed": true,
|
|
"why": "the shares, to the mesh's machines only (hq ADR 0263): NFS version 4 alone, which needs no other port, and never the home network, where a device that is not a node could claim any user id"
|
|
}
|
|
],
|
|
"resources": [
|
|
{
|
|
"id": "package",
|
|
"type": "package",
|
|
"package": "nfs-utils"
|
|
},
|
|
{
|
|
"id": "nfs-conf",
|
|
"type": "file",
|
|
"path": "/etc/nfs.conf.d/50-mesh.conf",
|
|
"mode": "0644",
|
|
"content": "# Written by the mesh (module nfs-server, novox/hq ADR 0263). Replaced on every push; a drop-in of\n# the operator's that sorts after this one overrides it, and is theirs.\n#\n# NFS version 4 only: a client needs port 2049 and nothing else, so the module opens nothing more\n# than that, to the private network. Version 3 needs rpcbind and mountd, on ports the mesh does not open.\n[nfsd]\nvers2=n\nvers3=n\nvers4=y\nvers4.0=n\nvers4.1=y\nvers4.2=y\n"
|
|
},
|
|
{
|
|
"id": "config-dir",
|
|
"type": "directory",
|
|
"path": "/etc/nfs-server",
|
|
"mode": "0755"
|
|
},
|
|
{
|
|
"id": "config",
|
|
"type": "file",
|
|
"path": "/etc/nfs-server/shares.conf",
|
|
"mode": "0644",
|
|
"content": "# Written by the mesh (module nfs-server, novox/hq ADR 0263) from this machine's assignment.\n# Replaced on every push; change the `shares` setting, never this file.\n#\n# The shares: name=folder, or name=folder:ro, one share per folder. The module's process exports each\n# to the private network's range below, every client mapped to the folder's owner.\nshares=${setting:shares}\nrange=${machine:mesh-range}\n"
|
|
},
|
|
{
|
|
"id": "run-dir",
|
|
"type": "directory",
|
|
"path": "/run/nfs-server",
|
|
"mode": "0755"
|
|
},
|
|
{
|
|
"id": "server",
|
|
"type": "service",
|
|
"unit": "nfs-server.service",
|
|
"state": "running",
|
|
"boot": "enabled",
|
|
"restart-on": [
|
|
"nfs-conf"
|
|
],
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
},
|
|
{
|
|
"id": "exports",
|
|
"type": "process",
|
|
"name": "nfs-server-exports",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./nfs-server",
|
|
"exports"
|
|
],
|
|
"restart-on": [
|
|
"config"
|
|
],
|
|
"health": {
|
|
"kind": "tool",
|
|
"tool": "nfs_health",
|
|
"interval": "60s",
|
|
"timeout": "10s",
|
|
"looks": 2,
|
|
"grace": "90s"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/nfs-server",
|
|
"binary": "nfs-server",
|
|
"loads": [
|
|
"nfs-server"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|