{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/budimanjojo/talhelper/v3/pkg/config/talhelper-config", "$ref": "#/$defs/TalhelperConfig", "$defs": { "Bond": { "properties": { "interfaces": { "items": { "type": "string" }, "type": "array" }, "deviceSelectors": { "items": { "$ref": "#/$defs/NetworkDeviceSelector" }, "type": "array" }, "arpIPTarget": { "items": { "type": "string" }, "type": "array" }, "mode": { "type": "string" }, "xmitHashPolicy": { "type": "string" }, "lacpRate": { "type": "string" }, "adActorSystem": { "type": "string" }, "arpValidate": { "type": "string" }, "arpAllTargets": { "type": "string" }, "primary": { "type": "string" }, "primaryReselect": { "type": "string" }, "failOverMac": { "type": "string" }, "adSelect": { "type": "string" }, "miimon": { "type": "integer" }, "updelay": { "type": "integer" }, "downdelay": { "type": "integer" }, "arpInterval": { "type": "integer" }, "resendIgmp": { "type": "integer" }, "minLinks": { "type": "integer" }, "lpInterval": { "type": "integer" }, "packetsPerSlave": { "type": "integer" }, "numPeerNotif": { "type": "integer" }, "tlbDynamicLb": { "type": "integer" }, "allSlavesActive": { "type": "integer" }, "useCarrier": { "type": "boolean" }, "adActorSysPrio": { "type": "integer" }, "adUserPortKey": { "type": "integer" }, "peerNotifyDelay": { "type": "integer" } }, "additionalProperties": false, "type": "object" }, "Bridge": { "properties": { "interfaces": { "items": { "type": "string" }, "type": "array" }, "stp": { "$ref": "#/$defs/STP" }, "vlan": { "$ref": "#/$defs/BridgeVLAN" } }, "additionalProperties": false, "type": "object" }, "BridgePort": { "properties": { "master": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "BridgeVLAN": { "properties": { "vlanFiltering": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "CNIConfig": { "properties": { "name": { "type": "string" }, "urls": { "items": { "type": "string" }, "type": "array" }, "flannel": { "$ref": "#/$defs/FlannelCNIConfig" } }, "additionalProperties": false, "type": "object" }, "ClusterInlineManifest": { "properties": { "name": { "type": "string" }, "contents": { "type": "string" }, "skipEnvsubst": { "type": "boolean", "description": "Whether to skip envsubst to the contents (only for contents in another file)" } }, "additionalProperties": false, "type": "object" }, "ClusterInlineManifests": { "items": { "$ref": "#/$defs/ClusterInlineManifest" }, "type": "array" }, "ConfigFile": { "properties": { "content": { "type": "string" }, "mountPath": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "ConfigFileList": { "items": { "$ref": "#/$defs/ConfigFile" }, "type": "array" }, "Customization": { "properties": { "extraKernelArgs": { "items": { "type": "string" }, "type": "array" }, "meta": { "items": { "$ref": "#/$defs/MetaValue" }, "type": "array" }, "systemExtensions": { "$ref": "#/$defs/SystemExtensions" }, "bootloader": { "type": "integer" }, "secureboot": { "$ref": "#/$defs/SecureBootCustomization" } }, "additionalProperties": false, "type": "object" }, "CustomizationWrapper": { "properties": { "extraKernelArgs": { "items": { "type": "string" }, "type": "array", "description": "Extra kernel arguments to be passed to the kernel" }, "meta": { "$ref": "#/$defs/MetaValue" }, "systemExtensions": { "$ref": "#/$defs/SystemExtensions", "description": "Talos system extensions to be installed" }, "bootloader": { "type": "string", "enum": [ "sd-boot", "grub", "dual-boot" ], "description": "The bootloader to be used in the image" }, "secureboot": { "$ref": "#/$defs/SecureBootCustomization", "description": "The secure boot options for the image" } }, "additionalProperties": false, "type": "object" }, "DHCPOptions": { "properties": { "routeMetric": { "type": "integer" }, "ipv4": { "type": "boolean" }, "ipv6": { "type": "boolean" }, "duidv6": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "Device": { "properties": { "interface": { "type": "string" }, "deviceSelector": { "$ref": "#/$defs/NetworkDeviceSelector" }, "addresses": { "items": { "type": "string" }, "type": "array" }, "cidr": { "type": "string" }, "routes": { "items": { "$ref": "#/$defs/Route" }, "type": "array" }, "bond": { "$ref": "#/$defs/Bond" }, "bridge": { "$ref": "#/$defs/Bridge" }, "bridgePort": { "$ref": "#/$defs/BridgePort" }, "vlans": { "$ref": "#/$defs/VlanList" }, "mtu": { "type": "integer" }, "dhcp": { "type": "boolean" }, "ignore": { "type": "boolean" }, "dummy": { "type": "boolean" }, "dhcpOptions": { "$ref": "#/$defs/DHCPOptions" }, "wireguard": { "$ref": "#/$defs/DeviceWireguardConfig" }, "vip": { "$ref": "#/$defs/DeviceVIPConfig" } }, "additionalProperties": false, "type": "object" }, "DeviceVIPConfig": { "properties": { "ip": { "type": "string" }, "equinixMetal": { "$ref": "#/$defs/VIPEquinixMetalConfig" }, "hcloud": { "$ref": "#/$defs/VIPHCloudConfig" } }, "additionalProperties": false, "type": "object" }, "DeviceWireguardConfig": { "properties": { "privateKey": { "type": "string" }, "listenPort": { "type": "integer" }, "firewallMark": { "type": "integer" }, "peers": { "items": { "$ref": "#/$defs/DeviceWireguardPeer" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "DeviceWireguardPeer": { "properties": { "publicKey": { "type": "string" }, "endpoint": { "type": "string" }, "persistentKeepaliveInterval": { "type": "integer" }, "allowedIPs": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "DiskPartition": { "properties": { "size": { "type": "integer" }, "mountpoint": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "DiskSelectorWrapper": { "properties": { "match": { "type": "string", "description": "The Common Expression Language (CEL) expression to match the disk" } }, "additionalProperties": false, "type": "object" }, "EncryptionKey": { "properties": { "slot": { "type": "integer" }, "static": { "$ref": "#/$defs/EncryptionKeyStatic" }, "nodeID": { "$ref": "#/$defs/EncryptionKeyNodeID" }, "kms": { "$ref": "#/$defs/EncryptionKeyKMS" }, "tpm": { "$ref": "#/$defs/EncryptionKeyTPM" }, "lockToState": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "EncryptionKeyKMS": { "properties": { "endpoint": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "EncryptionKeyNodeID": { "properties": {}, "additionalProperties": false, "type": "object" }, "EncryptionKeyStatic": { "properties": { "passphrase": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "EncryptionKeyTPM": { "properties": { "options": { "$ref": "#/$defs/EncryptionKeyTPMOptions" }, "checkSecurebootStatusOnEnroll": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "EncryptionKeyTPMOptions": { "properties": { "pcrs": { "items": { "type": "integer" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "EncryptionSpec": { "properties": { "provider": { "type": "integer" }, "keys": { "items": { "$ref": "#/$defs/EncryptionKey" }, "type": "array" }, "cipher": { "type": "string" }, "keySize": { "type": "integer" }, "blockSize": { "type": "integer" }, "options": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "ExtensionService": { "properties": { "name": { "type": "string", "description": "Name of the extension service config" }, "configFiles": { "$ref": "#/$defs/ConfigFileList", "description": "The config files for the extension service" }, "environment": { "items": { "type": "string" }, "type": "array", "description": "The environment for the extension service" } }, "additionalProperties": false, "type": "object" }, "FilesystemSpecWrapper": { "properties": { "type": { "type": "string", "enum": [ "ext4", "xfs" ], "description": "Filesystem type", "default": "xfs" } }, "additionalProperties": false, "type": "object" }, "FlannelCNIConfig": { "properties": { "extraArgs": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "ImageFactory": { "properties": { "registryURL": { "type": "string", "description": "Registry url or the image", "default": "factory.talos.dev" }, "schematicEndpoint": { "type": "string", "default": "/schematics" }, "protocol": { "type": "string", "description": "Protocol of the registry(https or http)", "default": "https" }, "installerURLTmpl": { "type": "string", "description": "Template for installer image URL", "default": "{{.RegistryURL}}/installer{{if .Secureboot}}-secureboot{{end}}/{{.ID}}:{{.Version}}" }, "ISOURLTmpl": { "type": "string", "description": "Template for image URL", "default": "{{.Protocol}}://{{.RegistryURL}}/image/{{.ID}}/{{.Version}}/{{.Mode}}-{{.Arch}}{{if .Secureboot}}-secureboot{{end}}{{if and .Secureboot .UseUKI}}-uki.efi{{else}}{{.Suffix}}{{end}}" } }, "additionalProperties": false, "type": "object" }, "IngressConfigWrapper": { "properties": { "subnet": { "type": "string", "description": "Source subnet" }, "except": { "type": "string", "description": "Source subnet to exclude from the subnet" } }, "additionalProperties": false, "type": "object" }, "IngressFirewallWrapper": { "properties": { "defaultAction": { "type": "string", "description": "Default action for all not explicitly configured traffic", "default": "block" }, "rules": { "items": { "$ref": "#/$defs/NetworkRuleWrapper" }, "type": "array", "description": "List of matching network rules to allow or block against the defaultAction" } }, "additionalProperties": false, "type": "object" }, "InstallDiskSelectorWrapper": { "properties": { "size": { "type": "string", "description": "Disk size", "examples": [ "4GB" ] }, "name": { "type": "string" }, "model": { "type": "string" }, "serial": { "type": "string" }, "modalias": { "type": "string" }, "uuid": { "type": "string" }, "wwid": { "type": "string" }, "type": { "type": "string", "examples": [ "ssd" ] }, "busPath": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "KernelModuleConfig": { "properties": { "name": { "type": "string" }, "parameters": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "MachineDisk": { "properties": { "device": { "type": "string" }, "partitions": { "items": { "$ref": "#/$defs/DiskPartition" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "MachineFile": { "properties": { "content": { "type": "string" }, "permissions": { "type": "integer" }, "path": { "type": "string" }, "op": { "type": "string" }, "skipEnvsubst": { "type": "boolean", "description": "Whether to skip envsubst to the contents (only for contents in another file)" } }, "additionalProperties": false, "type": "object" }, "MachineFiles": { "items": { "$ref": "#/$defs/MachineFile" }, "type": "array" }, "MachineSpec": { "properties": { "mode": { "type": "string", "description": "Machine mode (e.g: metal)", "default": "metal" }, "arch": { "type": "string", "description": "Machine architecture (e.g: amd64", "default": "amd64" }, "secureboot": { "type": "boolean", "description": "Whether to enable Secure Boot", "default": false }, "useUKI": { "type": "boolean", "description": "Whether to use UKI if Secure Boot is enabled", "default": false }, "bootMethod": { "type": "string", "description": "Boot method of the node (can be disk-image", "default": "iso" }, "imageSuffix": { "type": "string", "description": "The image file extension (will be automatically determined by specified bootMethod) (e.g: raw.xz" } }, "additionalProperties": false, "type": "object" }, "MetaValue": { "properties": { "key": { "type": "integer" }, "value": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "NetworkDeviceSelector": { "properties": { "busPath": { "type": "string" }, "hardwareAddr": { "type": "string" }, "permanentAddr": { "type": "string" }, "pciID": { "type": "string" }, "driver": { "type": "string" }, "physical": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "NetworkRuleWrapper": { "properties": { "name": { "type": "string", "description": "Name of the rule" }, "portSelector": { "$ref": "#/$defs/PortSelectorWrapper", "description": "Ports and protocols on the host affected by the rule" }, "ingress": { "items": { "$ref": "#/$defs/IngressConfigWrapper" }, "type": "array", "description": "List of source subnets allowed to access the host ports/protocols" } }, "additionalProperties": false, "type": "object" }, "Node": { "oneOf": [ { "required": [ "installDisk" ], "title": "installDiskSelector" }, { "required": [ "installDiskSelector" ], "title": "installDisk" } ], "properties": { "hostname": { "type": "string", "description": "Hostname of the node" }, "ipAddress": { "type": "string", "description": "IP address where the node can be reached", "examples": [ "192.168.200.11" ] }, "controlPlane": { "type": "boolean", "description": "Whether the node is a controlplane" }, "installDisk": { "type": "string", "description": "The disk used for installation" }, "installDiskSelector": { "$ref": "#/$defs/InstallDiskSelectorWrapper", "description": "Look up disk used for installation" }, "ignoreHostname": { "type": "boolean", "description": "Whether to set \"machine.network.hostname\" to the generated config file" }, "overridePatches": { "type": "boolean", "description": "Whether \"patches\" defined here should override the one defined in node group" }, "overrideExtraManifests": { "type": "boolean", "description": "Whether \"extraManifests\" defined here should override the one defined in node group" }, "overrideMachineCertSANs": { "type": "boolean", "description": "Whether \"certSANs\" defined here should override the one defined in node group" }, "nodeLabels": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Labels to be added to the node" }, "nodeAnnotations": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Annotations to be added to the node" }, "nodeTaints": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Node taints for the node. Effect is optional" }, "machineDisks": { "items": { "$ref": "#/$defs/MachineDisk" }, "type": "array", "description": "DEPRECATED: user \"userVolumes\" instead" }, "machineFiles": { "$ref": "#/$defs/MachineFiles", "description": "List of files to create inside the node" }, "disableSearchDomain": { "type": "boolean", "description": "Whether to disable generating default search domain" }, "kernelModules": { "items": { "$ref": "#/$defs/KernelModuleConfig" }, "type": "array", "description": "List of additional kernel modules to load inside the node" }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "List of nameservers for the node" }, "networkInterfaces": { "items": { "$ref": "#/$defs/Device" }, "type": "array", "description": "List of network interface configuration for the node" }, "extraManifests": { "items": { "type": "string" }, "type": "array", "description": "DEPRECATED: Use \"patches\" instead" }, "certSANs": { "items": { "type": "string" }, "type": "array", "description": "Additional certificate SANs to add to the machine certificate" }, "patches": { "items": { "type": "string" }, "type": "array", "description": "Patches to be applied to the node" }, "talosImageURL": { "type": "string", "description": "Talos installer image url for the node", "examples": [ "factory.talos.dev/installer/e9c7ef96884d4fbc8c0a1304ccca4bb0287d766a8b4125997cb9dbe84262144e" ] }, "noSchematicValidate": { "type": "boolean", "description": "Whether to skip schematic validation" }, "schematic": { "$ref": "#/$defs/SchematicWrapper", "description": "Talos image customization to be used in the installer image" }, "imageSchematic": { "$ref": "#/$defs/Schematic", "description": "Talos image customization to be used for ISO or boot image" }, "machineSpec": { "$ref": "#/$defs/MachineSpec", "description": "Machine hardware specification" }, "ingressFirewall": { "$ref": "#/$defs/IngressFirewallWrapper", "description": "Machine firewall specification" }, "extensionServices": { "items": { "$ref": "#/$defs/ExtensionService" }, "type": "array", "description": "Machine extension services specification" }, "volumes": { "items": { "$ref": "#/$defs/Volume" }, "type": "array", "description": "Machine volume configs specification" }, "userVolumes": { "items": { "$ref": "#/$defs/UserVolume" }, "type": "array", "description": "Machine user volume configs specification" }, "filenameTmpl": { "type": "string", "description": "Template for the generated filename", "default": "{{.ClusterName}}-{{Hostname}}.yaml" } }, "additionalProperties": false, "type": "object", "required": [ "hostname", "ipAddress" ] }, "NodeConfigs": { "properties": { "nodeLabels": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Labels to be added to the node" }, "nodeAnnotations": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Annotations to be added to the node" }, "nodeTaints": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Node taints for the node. Effect is optional" }, "machineDisks": { "items": { "$ref": "#/$defs/MachineDisk" }, "type": "array", "description": "DEPRECATED: user \"userVolumes\" instead" }, "machineFiles": { "$ref": "#/$defs/MachineFiles", "description": "List of files to create inside the node" }, "disableSearchDomain": { "type": "boolean", "description": "Whether to disable generating default search domain" }, "kernelModules": { "items": { "$ref": "#/$defs/KernelModuleConfig" }, "type": "array", "description": "List of additional kernel modules to load inside the node" }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "List of nameservers for the node" }, "networkInterfaces": { "items": { "$ref": "#/$defs/Device" }, "type": "array", "description": "List of network interface configuration for the node" }, "extraManifests": { "items": { "type": "string" }, "type": "array", "description": "DEPRECATED: Use \"patches\" instead" }, "certSANs": { "items": { "type": "string" }, "type": "array", "description": "Additional certificate SANs to add to the machine certificate" }, "patches": { "items": { "type": "string" }, "type": "array", "description": "Patches to be applied to the node" }, "talosImageURL": { "type": "string", "description": "Talos installer image url for the node", "examples": [ "factory.talos.dev/installer/e9c7ef96884d4fbc8c0a1304ccca4bb0287d766a8b4125997cb9dbe84262144e" ] }, "noSchematicValidate": { "type": "boolean", "description": "Whether to skip schematic validation" }, "schematic": { "$ref": "#/$defs/SchematicWrapper", "description": "Talos image customization to be used in the installer image" }, "imageSchematic": { "$ref": "#/$defs/Schematic", "description": "Talos image customization to be used for ISO or boot image" }, "machineSpec": { "$ref": "#/$defs/MachineSpec", "description": "Machine hardware specification" }, "ingressFirewall": { "$ref": "#/$defs/IngressFirewallWrapper", "description": "Machine firewall specification" }, "extensionServices": { "items": { "$ref": "#/$defs/ExtensionService" }, "type": "array", "description": "Machine extension services specification" }, "volumes": { "items": { "$ref": "#/$defs/Volume" }, "type": "array", "description": "Machine volume configs specification" }, "userVolumes": { "items": { "$ref": "#/$defs/UserVolume" }, "type": "array", "description": "Machine user volume configs specification" }, "filenameTmpl": { "type": "string", "description": "Template for the generated filename", "default": "{{.ClusterName}}-{{Hostname}}.yaml" } }, "additionalProperties": false, "type": "object" }, "Overlay": { "properties": { "image": { "type": "string" }, "name": { "type": "string" }, "options": { "type": "object" } }, "additionalProperties": false, "type": "object" }, "PortSelectorWrapper": { "properties": { "ports": { "items": true, "type": "array", "description": "List of ports or port ranges" }, "protocol": { "type": "string", "description": "Protocol (can be tcp or udp)" } }, "additionalProperties": false, "type": "object" }, "ProvisioningSpecWrapper": { "properties": { "diskSelector": { "$ref": "#/$defs/DiskSelectorWrapper", "description": "The disk selector expression" }, "grow": { "type": "boolean", "description": "Should the volume grow to the size of the disk (if possible)" }, "minSize": { "type": "string", "description": "The minimum size of the volume", "examples": [ "2.5GiB" ] }, "maxSize": { "type": "string", "description": "The maximum size of the volume", "examples": [ "50GiB" ] } }, "additionalProperties": false, "type": "object" }, "Route": { "properties": { "network": { "type": "string" }, "gateway": { "type": "string" }, "source": { "type": "string" }, "metric": { "type": "integer" }, "mtu": { "type": "integer" } }, "additionalProperties": false, "type": "object" }, "STP": { "properties": { "enabled": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "Schematic": { "properties": { "overlay": { "$ref": "#/$defs/Overlay" }, "customization": { "$ref": "#/$defs/Customization" } }, "additionalProperties": false, "type": "object" }, "SchematicWrapper": { "properties": { "overlay": { "$ref": "#/$defs/Overlay", "description": "The overlay options for image generation" }, "customization": { "$ref": "#/$defs/CustomizationWrapper", "description": "Talos image customization" } }, "additionalProperties": false, "type": "object" }, "SecureBootCustomization": { "properties": { "includeWellKnownCertificates": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "SystemExtensions": { "properties": { "officialExtensions": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "TalhelperConfig": { "properties": { "clusterName": { "type": "string", "description": "Name of the cluster" }, "talosVersion": { "type": "string", "description": "Talos version to perform installation", "examples": [ "v1.5.4" ] }, "kubernetesVersion": { "type": "string", "description": "Kubernetes version to use", "examples": [ "v1.27.0" ] }, "endpoint": { "type": "string", "description": "Cluster's controlplane endpoint", "examples": [ "https://192.168.200.10:6443" ] }, "domain": { "type": "string", "description": "The domain to be used by Kubernetes DNS", "examples": [ "cluster.local" ] }, "allowSchedulingOnMasters": { "type": "boolean", "description": "Whether to allow running workload on controlplane nodes" }, "allowSchedulingOnControlPlanes": { "type": "boolean", "description": "Whether to allow running workload on controlplane nodes. It is an alias to \"AllowSchedulingOnMasters\"" }, "additionalMachineCertSans": { "items": { "type": "string" }, "type": "array", "description": "DEPRECATED Use node/node groups extraMachineCertSans ! Extra certificate SANs for the machine's certificate" }, "additionalApiServerCertSans": { "items": { "type": "string" }, "type": "array", "description": "Extra certificate SANs for the API server's certificate" }, "inlineManifests": { "$ref": "#/$defs/ClusterInlineManifests", "description": "A list of inline Kubernetes manifests for the cluster" }, "clusterPodNets": { "items": { "type": "string" }, "type": "array", "description": "The pod subnet CIDR list" }, "clusterSvcNets": { "items": { "type": "string" }, "type": "array", "description": "The service subnet CIDR list" }, "cniConfig": { "$ref": "#/$defs/CNIConfig", "description": "The CNI to be used for the cluster's network" }, "patches": { "items": { "type": "string" }, "type": "array", "description": "Patches to be applied to all nodes" }, "nodes": { "items": { "$ref": "#/$defs/Node" }, "type": "array", "description": "List of configurations for Node" }, "imageFactory": { "$ref": "#/$defs/ImageFactory" }, "controlPlane": { "$ref": "#/$defs/NodeConfigs", "description": "Configurations targetted for all controlplane nodes" }, "worker": { "$ref": "#/$defs/NodeConfigs", "description": "Configurations targetted for all worker nodes" } }, "additionalProperties": false, "type": "object", "required": [ "clusterName", "endpoint", "nodes" ] }, "UserVolume": { "properties": { "name": { "type": "string", "description": "Name of user volume config" }, "volumeType": { "type": "integer", "description": "Volume type of user volume config" }, "provisioning": { "$ref": "#/$defs/ProvisioningSpecWrapper", "description": "Provisioning spec of the user volume config" }, "filesystem": { "$ref": "#/$defs/FilesystemSpecWrapper", "description": "Filesystem spec of the user volume config" }, "encryption": { "$ref": "#/$defs/EncryptionSpec", "description": "Encryption spec of the user volume config" } }, "additionalProperties": false, "type": "object" }, "VIPEquinixMetalConfig": { "properties": { "apiToken": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "VIPHCloudConfig": { "properties": { "apiToken": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "Vlan": { "properties": { "addresses": { "items": { "type": "string" }, "type": "array" }, "cidr": { "type": "string" }, "routes": { "items": { "$ref": "#/$defs/Route" }, "type": "array" }, "dhcp": { "type": "boolean" }, "vlanId": { "type": "integer" }, "mtu": { "type": "integer" }, "vip": { "$ref": "#/$defs/DeviceVIPConfig" }, "dhcpOptions": { "$ref": "#/$defs/DHCPOptions" } }, "additionalProperties": false, "type": "object" }, "VlanList": { "items": { "$ref": "#/$defs/Vlan" }, "type": "array" }, "Volume": { "properties": { "name": { "type": "string", "description": "Name of the volume config" }, "provisioning": { "$ref": "#/$defs/ProvisioningSpecWrapper", "description": "Provisioning spec of the volume config" }, "encryption": { "$ref": "#/$defs/EncryptionSpec", "description": "Encryption spec of the volume config" } }, "additionalProperties": false, "type": "object" } } }