A definition names no host path for its own data

Twenty-eight modules' data directories are placed: the root as place ".", a sub-directory named by
its id, and every host-side reference — binds, secrets, own secrets, grants, receives, file paths,
mounts, env-files — as ${dir:<id>}. Resolved on the default root every path is the one the manifest
named before, which the controller's TestPlacedDirectoriesKeepTheirPaths proves over both checkouts;
so no data moves and no machine sees a change. Five directories whose id is not their last segment
keep their path as a placement (novox/hq issue 119, ADR 0112, design 27).
This commit is contained in:
2026-09-30 21:10:18 +02:00
parent 12bbcafacf
commit eed5e8958a
28 changed files with 210 additions and 223 deletions
+16 -16
View File
@@ -15,15 +15,15 @@
"route": {}
},
"receives": {
"route": "/var/lib/route-proxy/routes/mesh.json"
"route": "${dir:routes-dir}/mesh.json"
},
"requires": [
"acme-ca",
"internal-acme-ca"
],
"binds": {
"acme-ca": "/var/lib/route-proxy/acme-ca.json",
"internal-acme-ca": "/var/lib/route-proxy/internal-acme-ca.json"
"acme-ca": "${dir:state}/acme-ca.json",
"internal-acme-ca": "${dir:state}/internal-acme-ca.json"
},
"listens": [
{
@@ -45,8 +45,8 @@
{
"id": "state",
"type": "directory",
"path": "/var/lib/route-proxy",
"mode": "0700"
"mode": "0700",
"place": "."
},
{
"id": "routes-dir",
@@ -69,14 +69,14 @@
{
"id": "acme-env",
"type": "file",
"path": "/var/lib/route-proxy/acme.env",
"path": "${dir:state}/acme.env",
"mode": "0600",
"content": "ACME_DIRECTORY=https://${bound:acme-ca:at}:${bound:acme-ca:port}${bound:acme-ca:path}\nACME_ROOTS=https://${bound:acme-ca:at}:${bound:acme-ca:port}${bound:acme-ca:roots}\nACME_ROOTS_PATH=${bound:acme-ca:roots}\n"
},
{
"id": "internal-acme-env",
"type": "file",
"path": "/var/lib/route-proxy/internal-acme.env",
"path": "${dir:state}/internal-acme.env",
"mode": "0600",
"content": "INTERNAL_ACME_DIRECTORY=https://${bound:internal-acme-ca:at}:${bound:internal-acme-ca:port}${bound:internal-acme-ca:path}\nINTERNAL_ACME_ROOTS=https://${bound:internal-acme-ca:at}:${bound:internal-acme-ca:port}${bound:internal-acme-ca:roots}\nINTERNAL_ACME_ROOTS_PATH=${bound:internal-acme-ca:roots}\n"
},
@@ -88,10 +88,10 @@
"run-once": true,
"network": "host",
"env-file": [
"/var/lib/route-proxy/acme.env"
"${dir:state}/acme.env"
],
"volumes": [
"/var/lib/route-proxy/ca:/ca"
"${dir:ca-dir}:/ca"
],
"args": [
"sh",
@@ -110,10 +110,10 @@
"run-once": true,
"network": "host",
"env-file": [
"/var/lib/route-proxy/internal-acme.env"
"${dir:state}/internal-acme.env"
],
"volumes": [
"/var/lib/route-proxy/ca:/ca"
"${dir:ca-dir}:/ca"
],
"args": [
"sh",
@@ -131,13 +131,13 @@
"artifact": "server",
"network": "host",
"env-file": [
"/var/lib/route-proxy/acme.env",
"/var/lib/route-proxy/internal-acme.env"
"${dir:state}/acme.env",
"${dir:state}/internal-acme.env"
],
"volumes": [
"/var/lib/route-proxy/routes:/routes:ro",
"/var/lib/route-proxy/acme:/acme",
"/var/lib/route-proxy/ca:/ca:ro"
"${dir:routes-dir}:/routes:ro",
"${dir:acme-cache}:/acme",
"${dir:ca-dir}:/ca:ro"
],
"env": {
"ROUTES": "/routes/mesh.json",