instance-kvm-input-schema.json 12.3 KB
Newer Older
1
{
2 3 4 5
  "type": "object",
  "$schema": "http://json-schema.org/draft-04/schema",

  "title": "Input Parameters",
6
  "properties": {
7 8 9 10 11 12
    "enable-device-hotplug": {
      "title": "Enable device hotplug mode",
      "description": "If yes, this will allow to Create devices like CPU and Memory in hotplug mode without restart the VM. Operatin System should be configured to Online new created devices.",
      "type": "boolean",
      "default": false
    },
13 14 15 16 17
    "ram-size": {
      "title": "RAM size",
      "description": "RAM size, in MB.",
      "type": "integer",
      "default": 1024,
18 19 20 21 22 23 24 25 26 27
      "minimum": 1024,
      "multipleOf": 512
    },
    "ram-max-size": {
      "title": "Maximum RAM size, in MB",
      "description": "Define the maximum size of the memory. The size is in MB and should be a multiple of 512.",
      "type": "integer",
      "default": 51200,
      "minimum": 1024,
      "multipleOf": 512
28
    },
29
    "ram-hotplug-slot-size": {
30 31 32 33
      "title": "Size of Hotpluggable RAM slot, in MB",
      "description": "Define the RAM size to plug on one hotpluggable slot in MB, understand the size of one RAM bar. The RAM hotplugged on each slot will always have the same RAM size.",
      "type": "integer",
      "default": 512,
34 35
      "minimum": 512,
      "multipleOf": 512
36
    },
37 38 39 40 41 42
    "auto-ballooning": {
      "title": "Enable qemu auto ballooning.",
      "description": "Enable virtio balloon device to allows KVM guests to reduce/re-increase their memory size.",
      "type": "boolean",
      "default": true
    },
43 44 45 46 47 48
    "disk-size": {
      "title": "Disk size",
      "description": "Disk size, in GB.",
      "type": "integer",
      "default": 10,
      "minimum": 1,
49
      "maximum": 1000
50
    },
51 52 53 54 55 56 57
    "disk-type": {
      "title": "Disk type",
      "description": "Type of QEMU disk drive.",
      "type": "string",
      "default": "virtio",
      "enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio"]
    },
58 59 60 61 62 63 64 65
    "disk-format": {
      "title": "Type of disk drive to create by QEMU.",
      "description": "Type of QEMU disk drive, to create.",
      "type": "string",
      "default": "qcow2",
      "enum": ["qcow2", "raw", "vdi", "vmdk", "cloop", "qed"]
    },

66 67 68 69 70 71 72 73 74 75 76 77 78 79
    "disk-cache": {
      "title": "Cache option to use with Disk.",
      "description": "Disk cache controls how the host cache is used to access block data.",
      "type": "string",
      "default": "writeback",
      "enum": ["none", "writeback", "unsafe", "directsync", "writethrough"]
    },
    "disk-aio": {
      "title": "Disk aio to use.",
      "description": "Selects between pthread based disk I/O and native Linux AIO.",
      "type": "string",
      "default": "threads",
      "enum": ["threads", "native"]
    },
80 81 82 83 84

    "cpu-count": {
      "title": "CPU count",
      "description": "Number of CPU cores.",
      "type": "integer",
85
      "minimum": 1
86
    },
87 88 89 90 91 92 93 94
    "cpu-max-count": {
      "title": "Maximum CPU amount",
      "description": "Specifies the maximum number of CPUs.",
      "type": "integer",
      "default": 24,
      "minimum": 1,
      "maximum": 64
    },
95
    "numa": {
96 97
      "title": "Simulate a multi node NUMA system.",
      "description": "Simulate a multi node NUMA system. If mem and cpus are omitted, resources are split equally. Each numa option are separated by space: node,nodeid=4,cpus=40-49,mem=64g node,nodeid=1,cpus=10-19,mem=128g. Set this option if you know what you're doing.",
98 99
      "type": "string"
    },
100 101 102 103 104 105 106 107 108 109 110
    "machine-options": {
      "title": "Machine options.",
      "description": "Select the emulated machine by name. Ex: pc-i440fx-2.4,accel=kvm",
      "type": "string"
    },
    "cpu-model": {
      "title": "CPU model.",
      "description": "Select the emulated CPU model. Ex: SandyBridge,+erms,+smep,+smx,+vmx",
      "type": "string"
    },

111 112 113 114 115 116
    "keyboard-layout-language": {
      "title": "Use keyboard layout language",
      "description": "Use keyboard layout language (for example fr for French). Can be usefull with VNC display",
      "type": "string",
      "enum": ["ar", "da", "de", "de-ch", "en-gb", "en-us", "es", "et", "fi", "fo", "fr", "fr-be", "fr-ca", "fr-ch", "hr", "hu", "is", "it", "ja", "lt", "lv", "mk", "nl", "nl-be", "no", "pl", "pt", "pt-br", "ru", "sl", "sv", "th", "tr"]
    },
117

118
    "nbd-host": {
119 120 121 122 123 124 125 126 127 128 129 130 131 132
      "title": "NBD hostname",
      "description": "hostname (or IP) of the NBD server containing the boot image.",
      "type": "string",
      "format": ["host-name", "ip-address", "ipv6"],
      "default": "debian.nbd.vifib.net"
    },
    "nbd-port": {
      "title": "NBD port",
      "description": "Port of the NBD server containing the boot image.",
      "type": "integer",
      "default": 1024,
      "minimum": 1,
      "maximum": 65535
    },
133

Cédric de Saint Martin's avatar
Cédric de Saint Martin committed
134 135 136 137
    "nbd2-host": {
      "title": "Second NBD hostname",
      "description": "hostname (or IP) of the second NBD server (containing drivers for example).",
      "type": "string",
Cédric de Saint Martin's avatar
Cédric de Saint Martin committed
138
      "format": ["host-name", "ip-address", "ipv6"]
Cédric de Saint Martin's avatar
Cédric de Saint Martin committed
139 140 141 142 143 144 145 146 147
    },
    "nbd2-port": {
      "title": "Second NBD port",
      "description": "Port of the second NBD server containing the boot image.",
      "type": "integer",
      "minimum": 1,
      "maximum": 65535
    },

148 149 150 151
    "virtual-hard-drive-url": {
      "title": "Existing disk image URL",
      "description": "If specified, will download an existing disk image (qcow2, raw, ...), and will use it as main virtual hard drive. Can be used to download and use an already installed and customized virtual hard drive.",
      "format": "uri",
152
      "type": "string"
153
    },
154 155 156
    "virtual-hard-drive-md5sum": {
      "title": "Checksum of virtual hard drive",
      "description": "MD5 checksum of virtual hard drive, used if virtual-hard-drive-url is specified.",
157
      "type": "string"
158
    },
159 160 161 162 163 164
    "virtual-hard-drive-gzipped": {
      "title": "Define if virtual hard drive to download is gzipped",
      "description": "Define if virtual hard drive to download is gzipped using gzip. This help to reduce size of file to download.",
      "type": "boolean",
      "default": false
    },
165 166 167 168 169 170
    "hard-drive-url-check-certificate": {
      "title": "Check certificate when downloading virtual hard drive from https.",
      "description": "Define if certificate should be checked when downloading virtual hard drive from https url.",
      "type": "boolean",
      "default": true
    },
171 172 173 174 175 176 177 178 179

    "external-disk-number": {
      "title": "Number of additional disk to create for virtual machine",
      "description": "Specify the number of additional disk to create for virtual machine in data folder of SlapOS Node. Requires instance_storage_home to be configured on SlapOS Node.",
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "external-disk-size": {
180 181
      "title": "Size of additional disk to create for virtual machine, in Gigabytes",
      "description": "Specify the size of additional disk to create for virtual machine in data folder of SlapOS Node. Requires instance_storage_home to be configured on SlapOS Node.",
182
      "type": "integer",
183
      "minimum": 10,
184
      "maximum": 1000,
185 186
      "default": 20
    },
187 188 189 190 191
    "external-disk-format": {
      "title": "Type of external disk drive to create by QEMU.",
      "description": "Type of QEMU disk drive, to create.",
      "type": "string",
      "default": "qcow2",
192
      "enum": ["qcow2", "raw", "vdi", "vmdk", "cloop", "qed"]
193
    },
194

195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
    "wipe-disk-ondestroy": {
      "title": "Wipe disks when destroy the VM",
      "description": "Say if disks should be wiped by writing new data over every single bit before delete them. This option is used to securely delete VM disks",
      "type": "boolean",
      "default": false
    },
    "wipe-disk-iterations": {
      "title": "Wipe disk iterations",
      "description": "Number of disk overwrite iterations with random data. Default is 1. WARNING: Increase this value will slow down partition destruction and increase IO.",
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "maximum": 5
    },

210 211
    "use-tap": {
      "title": "Use QEMU TAP network interface",
212
      "description": "Use QEMU TAP network interface, might require a bridge on SlapOS Node.",
213 214 215
      "type": "boolean",
      "default": false
    },
216
    "use-nat": {
217
      "title": "Use QEMU USER Mode interface (NAT)",
218 219 220 221
      "description": "Use QEMU user-mode network stack (NAT).",
      "type": "boolean",
      "default": true
    },
222 223 224
    "nat-rules": {
      "title": "List of rules for NAT of QEMU user mode network stack.",
      "description": "List of rules for NAT of QEMU user mode network stack, as comma-separated list of ports. For each port specified, it will redirect port x of the VM (example: 80) to the port x + 10000 of the public IPv6 (example: 10080). Defaults to \"22 80 443\". Ignored if \"use-tap\" parameter is enabled.",
225
      "type": "string"
226
    },
227 228 229 230
    "nat-restrict-mode": {
      "title": "Isolate the NAT Interface (No Internet access)",
      "description": "If this option is enabled, the NAT interface will be isolated, i.e. it will not be able to contact the host and no guest IP packets will be routed over the host to the outside. This option does not affect any explicitly set nat rules.",
      "type": "boolean",
231
      "default": false
232
    },
233 234 235 236 237 238
    "enable-vhost": {
      "title": "Use vhost-net to improve network performance of tap interface",
      "description": "The vhost-net provides much improved network performance for your VM. Only work if the vhost-net kernel module is loaded and available on host machine, please keep this option off if you're not shure.",
      "type": "boolean",
      "default": false
    },
239 240 241 242
    "monitor-interface-url": {
        "title": "Monitor Web Interface URL",
        "description": "Give Url of HTML web interface that will be used to render this monitor instance.",
        "type": "string",
243
        "format": "uri",
244
        "default": "https://monitor.app.officejs.com"
245 246 247 248 249
    },
    "monitor-cors-domains": {
        "title": "Monitor CORS domains",
        "description": "List of cors domains separated with space. Needed for ajax query on this monitor instance from a different domain.",
        "type": "string",
250
        "default": "monitor.app.officejs.com"
251
    },
252 253 254 255 256 257 258 259 260 261 262 263 264 265
    "enable-http-server": {
      "title": "Enable local http server",
      "description": "Set if local http server which serve files to the vm should be deployed. If set to true, get file into the vm with URL: http://10.0.2.100/FILE.",
      "type": "boolean",
      "default": false
    },
    "httpd-port": {
      "title": "Local http server port",
      "description": "Port of the local http server used to share files.",
      "type": "integer",
      "default": 8081,
      "minimum": 1,
      "maximum": 65535
    },
266
    "authorized-key": {
267
      "title": "Public keys to get from all virtual machines.",
268 269 270
      "description": "Set the public keys to add in your virtual machine. The public key file will be available in the VM via url http://10.0.2.100/authorized_keys if you keep the NAT interface enabled",
      "type": "string"
    },
271 272 273
    "bootstrap-script-url": {
      "title": "VM bootstrap script URL.",
      "description": "If dedicaced disk image is used, this script will be downloaded and run at first boot of the virtual machine. Set md5sum to URL like: http://example.com/file#MD5SUM. Get file in vm at http://10.0.2.100/vm-bootstrap.",
274 275
      "type": "string",
      "format": "uri"
276
    },
277 278 279
    "data-to-vm": {
      "title": "Text content to send to this virtual machine.",
      "description": "Text content which will be written in a file 'data' of http server of this virtual machine instance. The file will be available via URL: http://10.0.2.100/data in the VM.",
280 281
      "type": "string"
    },
282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298
    "frontend-instance-guid": {
      "title": "Frontend Instance ID",
      "description": "Unique identifier of the frontend instance, like \"SOFTINST-11031\".",
      "type": "string",
      "default": "SOFTINST-11031"
    },
    "frontend-software-type": {
      "title": "Frontend Software Type",
      "description": "Type of the frontend instance, like \"frontend\".",
      "type": "string",
      "default": "frontend"
    },
    "frontend-software-url": {
      "title": "Frontend Software URL",
      "description": "Software Release URL of the frontend instance, like \"http://example.com/path/to/software.cfg\".",
      "type": "string",
      "format": "uri",
299
      "default": "https://lab.nexedi.com/nexedi/slapos/raw/slapos-0.92/software/kvm/software.cfg"
300 301 302
    }
  }
}