{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "OptionalNode", "type": "object", "properties": { "arch": { "anyOf": [ { "$ref": "#/$defs/NodeArch" }, { "type": "null" } ] }, "install": { "anyOf": [ { "$ref": "#/$defs/OptionalInstall" }, { "type": "null" } ] }, "kernelArgs": { "type": [ "array", "null" ], "items": { "type": "string" } }, "network": { "anyOf": [ { "$ref": "#/$defs/OptionalNetwork" }, { "type": "null" } ] }, "ntp": { "type": [ "string", "null" ] }, "patches": { "anyOf": [ { "$ref": "#/$defs/OptionalPatches" }, { "type": "null" } ] }, "schematic": { "anyOf": [ { "$ref": "#/$defs/Schematic" }, { "type": "null" } ] }, "sops": { "anyOf": [ { "$ref": "#/$defs/Secret" }, { "type": "null" } ] }, "type": { "anyOf": [ { "$ref": "#/$defs/NodeType" }, { "type": "null" } ] } }, "additionalProperties": false, "$defs": { "NodeArch": { "type": "string", "enum": [ "amd64" ] }, "NodeType": { "type": "string", "enum": [ "worker", "controlPlane" ] }, "OptionalInstall": { "type": "object", "properties": { "auto": { "type": [ "boolean", "null" ] }, "disk": { "type": [ "string", "null" ] }, "serial": { "type": [ "string", "null" ] } }, "additionalProperties": false }, "OptionalNetwork": { "type": "object", "properties": { "dns": { "type": [ "array", "null" ], "items": { "type": "string", "format": "ipv4" }, "maxItems": 2, "minItems": 2 }, "gateway": { "type": [ "string", "null" ], "format": "ipv4" }, "interface": { "type": [ "string", "null" ] }, "ip": { "type": [ "string", "null" ], "format": "ipv4" }, "netmask": { "type": [ "string", "null" ], "format": "ipv4" }, "tailscale": { "anyOf": [ { "$ref": "#/$defs/OptionalTailscale" }, { "type": "null" } ] } }, "additionalProperties": false }, "OptionalPatches": { "type": "object", "properties": { "all": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Patch" } }, "controlPlane": { "type": [ "array", "null" ], "items": { "$ref": "#/$defs/Patch" } } }, "additionalProperties": false }, "OptionalTailscale": { "type": "object", "properties": { "advertiseRoutes": { "type": [ "boolean", "null" ] }, "authKey": { "anyOf": [ { "$ref": "#/$defs/Secret" }, { "type": "null" } ] }, "server": { "type": [ "string", "null" ], "default": null } }, "additionalProperties": false }, "Patch": { "anyOf": [ { "type": "string" } ] }, "Schematic": { "type": "string" }, "Secret": { "$ref": "#/$defs/SecretHelper" }, "SecretHelper": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "file": { "type": "string" } }, "required": [ "file" ] } ] } } }