{ "$schema": "https://json-schema.org/draft/2019-09/schema", "$id": "https://github.com/agama-project/agama/blob/master/rust/share/profile.schema.json", "title": "Profile", "description": "Profile definition for automated installation", "type": "object", "additionalProperties": false, "properties": { "$schema": { "title": "URL of the JSON validation schema", "description": "The schema location is ignored by the installer, it always uses the built-in schema, but it can be useful for automatic validation and code completion in some editors", "type": "string", "examples": [ "https://raw.githubusercontent.com/agama-project/agama/refs/heads/SLE-16/rust/share/profile.schema.json", "https://raw.githubusercontent.com/agama-project/agama/refs/heads/master/rust/share/profile.schema.json" ] }, "files": { "title": "User-defined files to deploy", "description": "User-defined files to deploy after installation just before post install scripts", "type": "array", "items": { "$ref": "#/$defs/file" } }, "scripts": { "title": "User-defined installation scripts", "description": "User-defined scripts to run at different points of the installation", "type": "object", "additionalProperties": false, "properties": { "pre": { "title": "Pre-installation scripts", "description": "User-defined scripts to run before the installation starts", "type": "array", "items": { "$ref": "#/$defs/preScript" } }, "postPartitioning": { "title": "Post-partitioning scripts", "description": "User-defined scripts to run after the partitioning finishes", "type": "array", "items": { "$ref": "#/$defs/postPartitioning" } }, "post": { "title": "Post-installation scripts", "description": "User-defined scripts to run after the installation finishes", "type": "array", "items": { "$ref": "#/$defs/postScript" } }, "init": { "title": "Init scripts", "description": "User-defined scripts to run booting the installed system", "type": "array", "items": { "$ref": "#/$defs/initScript" } } } }, "bootloader": { "title": "Bootloader settings", "type": "object", "properties": { "stopOnBootMenu": { "title": "Specify if bootloader should stop on menu during boot.", "type": "boolean" }, "timeout": { "title": "Specify how long bootloader should wait on menu before going with default entry.", "type": "integer", "minimum": 0 }, "extraKernelParams": { "title": "Specify additional kernel parameters that are added beside ones added by the installer.", "type": "string" }, "updateNvram": { "title": "Specify if bootloader should update persistent RAM (NVRAM).", "type": "boolean" } }, "oneOf": [ { "required": ["stopOnBootMenu"] }, { "required": ["timeout"] }, { "not": { "anyOf": [ { "required": ["stopOnBootMenu"] }, { "required": ["timeout"] } ] } } ] }, "dasd": { "$ref": "dasd.schema.json" }, "zfcp": { "$ref": "zfcp.schema.json" }, "hostname": { "title": "Hostname settings", "type": "object", "properties": { "static": { "title": "System static hostname.", "type": "string" }, "transient": { "title": "System transient hostname.", "type": "string" } } }, "proxy": { "title": "Proxy settings", "type": "object", "properties": { "enabled": { "title": "Whether the proxy is enabled or not.", "type": "boolean" }, "httpProxy": { "description": "URL to be used for the HTTP proxy.", "type": "string", "examples": ["http://proxy.provider.de:3128/"] }, "httpsProxy": { "description": "URL to be used for the HTTPS proxy.", "type": "string" }, "ftpProxy": { "type": "string" }, "gopherProxy": { "description": "URL to be used for the Gopher proxy.", "type": "string" }, "socksProxy": { "description": "URL to be used for the SOCKS proxy.", "type": "string" }, "socks5Server": { "description": "SOCKS5 server address", "type": "string", "examples": ["office-proxy.example.com:8881"] }, "noProxy": { "title": "Hosts that do not need a proxy for being reach", "type": "string" } } }, "ntp": { "title": "NTP configuration", "type": "object", "properties": { "sources": { "title": "NTP sources", "type": "array", "items": { "$ref": "#/$defs/ntpSource" } } } }, "security": { "title": "Security settings", "type": "object", "properties": { "sslCertificates": { "title": "List of SSL certificates to add to system", "type": "array", "items": { "type": "object", "properties": { "fingerprint": { "title": "fingerprint of ssl certificate", "type": "string", "examples": [ "A8:DE:08:B1:57:52:FE:70:DF:D5:31:EA:E3:53:BB:39:EE:01:FF:B9" ] }, "algorithm": { "title": "Fingerprint algorithm used to compute it", "type": "string", "enum": ["SHA1", "SHA256"], "examples": ["SHA1"] } }, "required": ["fingerprint", "algorithm"] } } } }, "software": { "$ref": "software.schema.json" }, "questions": { "title": "How to handle Agama questions", "type": "object", "additionalProperties": false, "properties": { "policy": { "title": "Policy to answer questions", "description": "Ask questions to the user or select the default value", "type": "string", "enum": ["auto", "user"], "default": "user" }, "answers": { "title": "Pre-defined answer for a matching question", "type": "array", "items": { "$ref": "#/$defs/answer" } } } }, "product": { "title": "Product to install", "type": "object", "additionalProperties": false, "required": ["id"], "properties": { "id": { "title": "Product identifier", "description": "The id field from a products.d/foo.yaml file", "type": "string", "examples": [ "Kalpa", "MicroOS", "openSUSE_Leap_Micro", "openSUSE_Leap", "SLES_SAP", "SLES", "Slowroll", "Tumbleweed" ] }, "mode": { "description": "The mode from the products.d/foo.yaml file", "type": "string" }, "registrationCode": { "description": "Product registration code", "type": "string" }, "registrationEmail": { "description": "Product registration email", "type": "string" }, "registrationUrl": { "description": "URL of the registration server", "type": "string" }, "addons": { "title": "List of add-ons to activate", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["id"], "properties": { "id": { "title": "Add-on identifier", "type": "string", "examples": ["sle-ha"] }, "version": { "title": "Version of the add-on", "description": "It is mandatory if there are multiple available versions", "type": "string" }, "registrationCode": { "title": "Add-on registration code", "type": "string" } } } } } }, "network": { "title": "Network settings", "type": "object", "additionalProperties": false, "properties": { "state": { "title": "Network general settings", "type": "object", "properties": { "connectivity": { "title": "Network connectivity state", "type": "string", "enum": ["unknown", "none", "portal", "limited", "full"], "readOnly": true }, "copyNetwork": { "title": "Whether the network configuration should be copied to the target system", "type": "boolean" }, "networkingEnabled": { "title": "Whether the network should be enabled", "type": "boolean" }, "wirelessEnabled": { "title": "Whether the wireless should be enabled", "type": "boolean" } } }, "connections": { "title": "Network connections to be defined", "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["id"], "properties": { "id": { "title": "Connection ID", "type": "string" }, "interface": { "title": "The name of the network interface bound to this connection", "type": "string" }, "customMacAddress": { "title": "Custom MAC address to use", "description": "Can also be 'preserve', 'permanent', 'random' or 'stable'.", "type": "string" }, "macAddress": { "title": "The MAC address of the interface bound to this connection", "type": "string" }, "mtu": { "description": "Connection MTU", "type": "integer", "minimum": 0 }, "method4": { "title": "IPv4 configuration method", "type": "string", "enum": ["auto", "manual", "link-local", "disabled"] }, "method6": { "title": "IPv6 configuration method", "type": "string", "enum": [ "auto", "manual", "dhcp", "link-local", "shared", "disabled" ] }, "gateway4": { "title": "Connection gateway address", "type": "string", "examples": ["192.168.122.1"] }, "gateway6": { "title": "Connection gateway address", "type": "string", "examples": ["::ffff:c0a8:7a01"] }, "addresses": { "type": "array", "items": { "title": "Connection addresses", "type": "string" } }, "nameservers": { "type": "array", "items": { "title": "Nameservers", "description": "IPv4 and/or IPv6 are allowed.", "type": "string" } }, "dnsSearchList": { "type": "array", "items": { "description": "DNS search domains", "type": "string" } }, "dnsSearchlist": { "type": "array", "items": { "description": "DNS search domains", "type": "string" }, "deprecated": true }, "ignoreAutoDns": { "description": "Whether DNS options provided via DHCP are used or not", "type": "boolean" }, "status": { "title": "Connection status", "description": "The status of the connection", "type": "string", "enum": ["up", "down", "keep", "removed"] }, "autoconnect": { "title": "Auto-connected", "description": "Whether the connection should be automatically connected", "type": "boolean" }, "persistent": { "title": "Persistent", "description": "Whether the connection should be written to disk permanently", "type": "boolean" }, "wireless": { "type": "object", "title": "Wireless configuration", "additionalProperties": false, "properties": { "password": { "title": "Password of the wireless network", "type": "string" }, "security": { "title": "Security method/key management", "type": "string", "enum": [ "none", "owe", "ieee8021x", "wpa-psk", "sae", "wpa-eap", "wpa-eap-suite-b-192" ] }, "ssid": { "title": "SSID of the wireless network", "type": "string" }, "mode": { "title": "Wireless network mode", "type": "string", "enum": ["infrastructure", "adhoc", "mesh", "ap"] }, "hidden": { "title": "Indicates that the wireless network is not broadcasting its SSID", "type": "boolean" }, "band": { "title": "Frequency band of the wireless network", "type": "string", "enum": ["a", "bg"] }, "channel": { "title": "Wireless channel of the wireless network", "type": "integer", "minimum": 0 }, "bssid": { "title": "Only allow connection to this mac address", "type": "string" }, "groupAlgorithms": { "type": "array", "items": { "title": "A list of group/broadcast encryption algorithms", "type": "string", "enum": ["wep40", "wep104", "tkip", "ccmp"] } }, "pairwiseAlgorithms": { "type": "array", "items": { "title": "A list of pairwise encryption algorithms", "type": "string", "enum": ["tkip", "ccmp"] } }, "wpaProtocolVersions": { "type": "array", "items": { "title": "A list of allowed WPA protocol versions", "type": "string", "enum": ["wpa", "rsn"] } }, "pmf": { "title": "Indicates whether Protected Management Frames must be enabled for the connection", "type": "integer" } } }, "bond": { "type": "object", "title": "Bonding configuration", "additionalProperties": false, "properties": { "mode": { "type": "string", "enum": [ "balance-rr", "active-backup", "balance-xor", "broadcast", "802.3ad", "balance-tlb", "balance-alb" ] }, "options": { "type": "string" }, "ports": { "type": "array", "items": { "title": "A list of the interfaces or connections to be bonded", "type": "string" } } } }, "bridge": { "type": "object", "title": "Bridge configuration", "additionalProperties": false, "properties": { "stp": { "title": "whether the Spanning Tree Protocol is enabled or not", "type": "boolean" }, "forwardDelay": { "title": "Spanning Tree Protocol forward delay, in seconds", "type": "integer", "minimum": 0 }, "priority": { "title": "Spanning Tree Protocol priority (lower values are 'better')", "type": "integer", "minimum": 0 }, "maxAge": { "title": "Spanning Tree Protocol maximum message age, in seconds", "type": "integer", "minimum": 0 }, "helloTime": { "title": "Spanning Tree Protocol hello time, in seconds", "type": "integer", "minimum": 0 }, "ports": { "type": "array", "items": { "title": "A list of the interface(s) or connection(s) to be part of the bridge", "type": "string" } } } }, "match": { "type": "object", "title": "Match settings", "description": "Identifies the network interface to apply the connection settings to", "additionalProperties": false, "properties": { "kernel": { "type": "array", "items": { "title": "A list of kernel command line arguments to match", "type": "string" } }, "interface": { "type": "array", "items": { "title": "A list of interface names to match", "type": "string" } }, "driver": { "type": "array", "items": { "title": "A list of driver names to match", "type": "string" } }, "path": { "type": "array", "items": { "title": "A list of paths to match against the ID_PATH udev property of devices", "type": "string" } } } }, "ieee-8021x": { "type": "object", "title": "IEEE 802.1x (EAP) settings", "properties": { "eap": { "type": "array", "items": { "title": "List of EAP methods used", "type": "string", "enum": [ "leap", "md5", "tls", "peap", "ttls", "pwd", "fast" ] } }, "phase2Auth": { "title": "Phase 2 inner auth method", "type": "string", "enum": [ "pap", "chap", "mschap", "mschapv2", "gtc", "otp", "md5", "tls" ] }, "identity": { "title": "Identity string, often for example the user's login name", "type": "string" }, "password": { "title": "Password string used for EAP authentication", "type": "string" }, "caCert": { "title": "Path to CA certificate", "type": "string" }, "caCertPassword": { "title": "Password string for CA certificate if it is encrypted", "type": "string" }, "clientCert": { "title": "Path to client certificate", "type": "string" }, "clientCertPassword": { "title": "Password string for client certificate if it is encrypted", "type": "string" }, "privateKey": { "title": "Path to private key", "type": "string" }, "privateKeyPassword": { "title": "Password string for private key if it is encrypted", "type": "string" }, "anonymousIdentity": { "title": "Anonymous identity string for EAP authentication methods", "type": "string" }, "peapVersion": { "title": "Which PEAP version is used when PEAP is set as the EAP method in the 'eap' property", "type": "string", "enum": ["0", "1"] }, "peapLabel": { "title": "Force the use of the new PEAP label during key derivation", "type": "boolean" } } }, "vlan": { "type": "object", "title": "VLAN configuration", "additionalProperties": false, "required": ["id", "parent"], "properties": { "id": { "title": "VLAN Identifier", "type": "integer", "minimum": 0, "maximum": 4095 }, "parent": { "title": "Parent interface", "type": "string" }, "protocol": { "title": "VLAN protocol for encapsulation", "type": "string", "default": "802.1Q", "enum": ["802.1Q", "802.1ad"] }, "flags": { "title": "VLAN flags", "type": "array", "items": { "type": "string", "enum": ["reorder-headers", "gvrp", "loose-binding", "mvrp"] } } } } } } } } }, "user": { "title": "First user settings", "type": "object", "additionalProperties": false, "properties": { "fullName": { "title": "Full name", "type": "string", "examples": ["Jane Doe"] }, "userName": { "title": "User login name", "type": "string", "examples": ["jane.doe"] }, "password": { "title": "User password (plain text or hashed depending on the \"hashedPassword\" field)", "type": "string", "examples": ["nots3cr3t"] }, "hashedPassword": { "title": "Flag for hashed password (true) or plain text password (false or not defined)", "type": "boolean" }, "sshPublicKey": { "title": "One or more SSH keys", "anyOf": [ { "type": "string", "title": "Single SSH Key" }, { "type": "array", "items": { "type": "string" }, "title": "List of SSH Keys" } ] }, "sshPublicKeys": { "title": "One or more SSH keys", "anyOf": [ { "type": "string", "title": "Single SSH Key" }, { "type": "array", "items": { "type": "string" }, "title": "List of SSH Keys" } ] } }, "required": ["fullName", "userName", "password"] }, "root": { "title": "Root authentication settings", "type": "object", "additionalProperties": false, "properties": { "password": { "title": "Root password (plain text or hashed depending on the \"hashedPassword\" field)", "type": "string" }, "hashedPassword": { "title": "Flag for hashed password (true) or plain text password (false or not defined)", "type": "boolean" }, "sshPublicKey": { "title": "One or more SSH keys", "anyOf": [ { "type": "string", "title": "Single SSH Key" }, { "type": "array", "items": { "type": "string" }, "title": "List of SSH Keys" } ] }, "sshPublicKeys": { "title": "One or more SSH keys", "anyOf": [ { "type": "string", "title": "Single SSH Key" }, { "type": "array", "items": { "type": "string" }, "title": "List of SSH Keys" } ] } } }, "l10n": { "title": "Localization settings", "type": "object", "additionalProperties": false, "properties": { "locale": { "title": "Locale ID", "type": "string", "examples": ["en_US.UTF-8", "en_US"] }, "keymap": { "title": "Keymap ID", "type": "string", "examples": ["us", "en", "es"] }, "timezone": { "title": "Time zone ID", "type": "string", "examples": ["Europe/Berlin"] } } }, "localization": { "deprecated": true, "title": "Localization settings (old schema)", "type": "object", "additionalProperties": false, "properties": { "language": { "title": "System language ID", "type": "string", "examples": ["en_US.UTF-8", "en_US"] }, "keyboard": { "title": "Keyboard layout ID", "type": "string" }, "timezone": { "title": "Time zone identifier such as 'Europe/Berlin'", "type": "string", "examples": ["Europe/Berlin"] } } }, "storage": { "$ref": "storage.schema.json" }, "legacyAutoyastStorage": { "title": "Legacy AutoYaST storage settings", "description": "Accepts all options of the AutoYaST partitioning section (i.e., XML to JSON)", "type": "array", "items": { "type": "object" } }, "iscsi": { "$ref": "iscsi.schema.json" }, "access": { "description": "Allows to explicitly specify how machine has to be accessed after installation.", "type": "object", "additionalProperties": false, "properties": { "ssh": { "description": "Allows to specify if ssh access has to be enabled after installation or keep product defaults.", "type": "string", "enum": ["enabled", "default"] }, "webConsole": { "description": "Allows to specify if web console access has to be enabled after installation or keep product defaults.", "type": "string", "enum": ["enabled", "default"] } } } }, "$defs": { "ntpSource": { "title": "NTP source", "type": "object", "required": ["type", "address"], "properties": { "type": { "type": "string", "enum": ["pool", "server", "peer"], "title": "NTP source type", "description": "Type of NTP source: pool (pool of servers), server (single server), or peer (symmetric association)" }, "address": { "type": "string", "title": "NTP server address or pool name", "examples": ["0.opensuse.pool.ntp.org", "ntp.example.com"] }, "iburst": { "type": "boolean", "default": false, "title": "Enable iburst option", "description": "Send a burst of packets for faster initial synchronization" }, "offline": { "type": "boolean", "default": false, "title": "Mark source as offline initially", "description": "Start with the source marked as offline (can be activated later)" } } }, "preScript": { "title": "User-defined installation script that runs before the installation starts", "type": "object", "additionalProperties": false, "properties": { "name": { "description": "Script name, to be used as file name", "type": "string" }, "body": { "title": "Script content", "description": "Script content, starting with the shebang. DEPRECATED: replaced by 'content'", "type": "string", "deprecated": true }, "content": { "title": "Script content", "description": "Script content, starting with the shebang.", "type": "string" }, "url": { "title": "Script URL reference", "description": "Absolute or relative URL to fetch the script from" } }, "required": ["name"], "oneOf": [ { "required": ["body"] }, { "required": ["url"] }, { "required": ["content"] } ] }, "postPartitioning": { "title": "User-defined installation script that runs after the partitioning finishes", "type": "object", "additionalProperties": false, "properties": { "name": { "description": "Script name, to be used as file name", "type": "string" }, "body": { "title": "Script content", "description": "Script content, starting with the shebang. DEPRECATED: replaced by 'content'", "type": "string", "deprecated": true }, "content": { "title": "Script content", "description": "Script content, starting with the shebang.", "type": "string" }, "url": { "title": "Script URL reference", "description": "Absolute or relative URL to fetch the script from." } }, "required": ["name"], "oneOf": [ { "required": ["body"] }, { "required": ["url"] }, { "required": ["content"] } ] }, "postScript": { "title": "User-defined installation script that runs after the installation finishes", "type": "object", "additionalProperties": false, "properties": { "name": { "description": "Script name, to be used as file name", "type": "string" }, "body": { "title": "Script content", "description": "Script content, starting with the shebang. DEPRECATED: replaced by 'content'", "type": "string", "deprecated": true }, "content": { "title": "Script content", "description": "Script content, starting with the shebang.", "type": "string" }, "url": { "title": "Script URL reference", "description": "Absolute or relative URL to fetch the script from." }, "chroot": { "title": "Whether it should run in the installed system using a chroot environment", "description": "whether to chroot to the target system (default: yes) or not", "type": "boolean" } }, "required": ["name"], "oneOf": [ { "required": ["body"] }, { "required": ["url"] }, { "required": ["content"] } ] }, "initScript": { "title": "User-defined installation script that runs during the first boot of the target system, once the installation is finished", "type": "object", "additionalProperties": false, "properties": { "name": { "description": "Script name, to be used as file name", "type": "string" }, "body": { "title": "Script content", "description": "Script content, starting with the shebang. DEPRECATED: replaced by 'content'", "type": "string", "deprecated": true }, "content": { "title": "Script content", "description": "Script content, starting with the shebang.", "type": "string" }, "url": { "title": "Script URL reference", "description": "Absolute or relative URL to fetch the script from." } }, "required": ["name"], "oneOf": [ { "required": ["body"] }, { "required": ["url"] }, { "required": ["content"] } ] }, "file": { "title": "User-defined file to deploy", "type": "object", "additionalProperties": false, "properties": { "destination": { "description": "path where file should be deployed", "type": "string" }, "content": { "title": "File content", "description": "File content", "type": "string" }, "url": { "title": "File URL reference", "description": "Absolute or relative URL to fetch the file from." }, "permissions": { "title": "File permissions", "description": "file permissions on installed system", "type": "string" }, "user": { "title": "File owner user", "description": "User owning the file on installed system. User has to already exist", "type": "string" }, "group": { "title": "File owner group", "description": "Group owning the file on installed system. User has to already exist", "type": "string" } }, "required": ["destination"], "oneOf": [{ "required": ["url"] }, { "required": ["content"] }] }, "answer": { "title": "Automatic answer to questions", "type": "object", "additionalProperties": false, "properties": { "class": { "title": "Question class", "description": "Each question has a \"class\" which works as an identifier.", "type": "string", "examples": ["storage.activate_multipath"] }, "text": { "title": "Question text", "description": "Question full text", "type": "string" }, "password": { "title": "Password provided as response to a password-based question", "type": "string" }, "data": { "title": "Additional data for matching questions", "description": "Additional data for matching questions and answers", "type": "object", "examples": [ { "device": "/dev/sda" } ] }, "action": { "title": "Predefined question action", "description": "Action to use for the question.", "type": "string" }, "answer": { "description": "Action to use for the question. Prefer using \"action\" instead.", "type": "string", "deprecated": true }, "value": { "title": "Predefined question value", "description": "Value to use for the question (depending on the type of the question).", "type": "string" } } } } }