{ "module": "resolv-conf", "version": "1", "slug": "resolv", "requires": [ "wildcard-resolution" ], "claims": [ { "name": "node-resolver-config", "scope": "node" } ], "resources": [ { "id": "resolv", "type": "file", "path": "/etc/resolv.conf", "mode": "0644", "content": "# Managed by the mesh.\n#\n# For a machine where nothing else owns this file. On one where systemd-resolved\n# or NetworkManager does, assign that module instead — this one and those claim\n# the same thing, so the mesh refuses the pair rather than letting them take\n# turns overwriting each other, which is the failure this claim exists to stop.\n#\n# The mesh's one resolver first (novox/hq ADR 0194, 0196), by address — a machine\n# cannot resolve the name of the thing it resolves names with. It answers the\n# mesh's names itself and forwards every other name. A public resolver second,\n# asked only when the first does not answer at all — its machine or the tunnel\n# down, a captive portal holding the tunnel back — so public names keep\n# resolving then. An answer from the first, \"no such name\" included, is final,\n# so a mesh name is never asked of the public one while the mesh's answers. One\n# second and one attempt, so the wait before the fallback is short. Containers\n# copy these two lines from their machine.\nnameserver ${bound:wildcard-resolution:address}\nnameserver 1.1.1.1\noptions timeout:1 attempts:1 edns0\n" }, { "id": "runtime-config", "type": "file", "path": "/etc/docker/daemon.json", "mode": "0644", "into": "json", "content": "{\"live-restore\": true}\n" }, { "id": "runtime", "type": "service", "unit": "docker.service", "state": "running", "reload-on": [ "runtime-config" ] } ] }