instance-kvm-cluster-input-schema.json 16.5 KB
Newer Older
1 2 3 4 5 6
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-04/schema",
  "title": "Input Parameters",
  "properties": {
    "frontend": {
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
      "title": "KVM frontend (web socket)",
      "description": "Front end used to provide VNC.",
      "properties": {
        "frontend-instance-guid": {
          "title": "Frontend Instance ID",
          "description": "Unique identifier of the frontend instance, like \"SOFTINST-11031\".",
          "type": "string",
          "default": ""
        },
        "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",
27
          "default": "https://lab.nexedi.com/nexedi/slapos/raw/slapos-0.92/software/kvm/software.cfg"
28
        }
29 30 31
      },
      "type": "object"
    },
32
    "slave-frontend": {
33 34 35 36 37 38 39 40 41 42 43 44 45
      "title": "Web frontend",
      "description": "Front end used to provide web access for internal services at the kvm.",
      "properties": {
        "instance-guid": {
          "title": "Main Frontend Instance ID",
          "description": "Unique identifier of the frontend instance, like \"SOFTINST-11031\".",
          "type": "string",
          "default": ""
        },
        "frontend-software-type": {
          "title": "Frontend Software Type",
          "description": "Type of the frontend instance, like \"frontend\".",
          "type": "string",
46
          "default": "custom-personal"
47 48 49 50 51 52
        },
        "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",
53
          "default": "http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg"
54 55 56 57 58 59
        },
        "slave-frontend-dict": {
          "title": "Slave Front end definition",
          "description": "Slave Front end definition",
          "patternProperties": {
            ".*": {
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
              "properties": {
                "domain": {
                  "title": "Name of the domain to be used",
                  "description": "Name of the domain to be used (example: mydomain.com). Subdomains of this domain will be used for the slave instances (example: instance12345.mydomain.com).",
                  "type": "string",
                  "default": ""
                },
                "url": {
                  "title": "URL of backend to use.",
                  "description": "URL of backend to use. This URL will be used to request frontend if parameter 'kvm-partition-name' is not set.",
                  "format": "uri",
                  "type": "string",
                  "default": ""
                },
                "enable-cache": {
75
                  "title": "Use cache for this slave frontend.",
76 77 78 79 80 81 82 83 84 85 86
                  "description": "Specify if slave frontend should use a squid to connect to backend.",
                  "type": "boolean",
                  "default": false
                },
                "type": {
                  "title": "Specify if slave frontend will redirect to a zope backend.",
                  "description": "If specified, Apache RewriteRule will use Zope's Virtual Host Daemon. Possible values: 'zope', 'default'.",
                  "type": "string",
                  "default": "default"
                },
                "zope-path": {
87
                  "title": "Path to the VirtualHostRoot of the zope.",
88 89 90 91 92
                  "description": "Only used if type is 'zope'. Will append the specified path to the VirtualHostRoot of the zope's VirtualHostMonster.",
                  "type": "string",
                  "default": ""
                },
                "https-only": {
93
                  "title": "Access website with https url only.",
94 95 96 97
                  "description": "Specify if website should be accessed using https only. If so, the frontend will redirect the user to https if accessed from http.",
                  "type": "boolean",
                  "default": false
                },
98
                "kvm-partition-name": {
99 100
                  "title": "Reference name in kvm instance definition to get url from.",
                  "description": "Compose url from kvm definition. Only work if 'use-nat' is true and 'service-port' is set. This will allow to get URL from defined nat-rules. Play the same as url, but help if you don't know kvm ipv6 yet.",
101 102 103 104
                  "type": "string",
                  "default": ""
                },
                "service-port": {
105 106
                  "title": "Port of service into the VM (require: kvm-name).",
                  "description": "This will allow to get URL from defined nat-rules. The port should exist in nat-rules of KVM you have referenced by 'kvm-partition-name'",
107
                  "type": "integer"
108 109
                },
                "url-scheme": {
110 111
                  "title": "Scheme of HTTP service into the VM (require: kvm-name).",
                  "description": "Say If HTTP service to run/or running into the Virtual Machine will use http or https. Possible values: http, https.",
112
                  "type": "string",
113
                  "enum": ["http", "https"],
114 115 116
                  "default": "http"
                }
              },
117 118 119 120 121
              "type": "object"
            }
          },
         "type": "object"
        }
122 123 124
      },
      "type": "object"
    },
125 126 127 128 129 130 131 132
    "fw-restricted-access": {
      "title": "Restrict all access to VM with firewall.",
      "description": "When Firewall is enabled, this parameter define if only vm of this cluster and authorized sources ip should have access to cluster.",
      "type": "string",
      "enum": ["on", "off"],
      "default": "off"
    },
    "fw-authorized-sources": {
133
        "title": "List of IP/Network address authorized to cluster.",
134 135 136 137 138 139 140 141 142 143
        "description": "When Firewall is enabled, this contain the list of IP address to authorize for access to all VM of this cluster.",
        "type": "array",
        "optional": true
    },
    "fw-reject-sources": {
        "title": "List of IP/Network address rejected, if 'Restrict all access' is off.",
        "description": "When Firewall is enabled, this contain the list of IP address which should not access to all VM of this cluster.",
        "type": "array",
        "optional": true
    },
144
    "authorized-keys": {
145 146 147
      "title": "Public keys for virtual machines.",
      "description": "Set the list of 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": "array"
148
    },
149 150 151 152 153
    "cluster-data": {
      "title": "Text content to share with virtual machines.",
      "description": "Text content which will be written in a file data of cluster http server. All VM will be able to download that file via the static URL of cluster HTTP server: https://10.0.2.101/FOLDER_HASH/data.",
      "type": "string"
    },
154 155 156 157 158 159 160 161 162 163 164 165
    "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",
        "format": "uri"
    },
    "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",
        "default": ""
    },
166
    "kvm-partition-dict": {
167
      "title": "kvm instances definition",
168 169 170
      "description": "kvm instances definition",
      "patternProperties": {
        ".*": {
171
          "properties": {
172 173 174 175 176 177
            "computer-guid": {
              "title": "ID of the computer where to deploy this VM.",
              "description": "Unique identifier of the computer, like \"COMP-1234\". By default, let Master choose a computer.",
              "type": "string",
              "default": ""
            },
178 179 180 181 182 183 184
            "state": {
              "title": "State of this Virtual Machine",
              "description": "Define if SlapOS should start or stop this VM.",
              "type": "string",
              "default": "started",
              "enum": ["started", "stopped"]
            },
185 186 187 188 189 190
            "ram-size": {
              "title": "RAM size",
              "description": "RAM size, in MB.",
              "type": "integer",
              "default": 1024,
              "minimum": 128,
191
              "multipleOf": 128
192 193 194 195 196 197 198
            },
            "disk-size": {
              "title": "Disk size",
              "description": "Disk size, in GB.",
              "type": "integer",
              "default": 10,
              "minimum": 1,
199
              "maximum": 1000
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
            },
            "disk-type": {
              "title": "Disk type",
              "description": "Type of QEMU disk drive.",
              "type": "string",
              "default": "virtio",
              "enum": [
                "ide",
                "scsi",
                "sd",
                "mtd",
                "floppy",
                "pflash",
                "virtio"
              ]
            },
            "cpu-count": {
              "title": "CPU count",
              "description": "Number of CPU cores.",
              "type": "integer",
220
              "minimum": 1
221
            },
222
            "cpu-options": {
223 224
              "title": "CPU Additional options: cores, threads, sockets, maxcpus.",
              "description": "Additional options to use with cpu-count. Options are separated by coma: [cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus]. Set this option if you know what you're doing.",
225 226 227
              "type": "string"
            },
            "numa": {
228 229
              "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.",
230 231
              "type": "string"
            },
232 233 234 235
            "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",
236 237
              "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"],
              "default": "fr"
238
            },
239
            "nbd-host": {
240
              "title": "NBD hostname or IP",
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
              "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
            },
            "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",
              "type": "string"
            },
            "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.",
              "type": "string"
            },
            "virtual-hard-drive-gzipped": {
270
              "title": "Virtual hard drive to download is gzipped",
271 272 273 274
              "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
            },
275 276 277 278 279 280
            "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
            },
281 282 283 284 285 286 287 288
            "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": {
289
              "title": "Size of additional disk to create for virtual machine, in Gigabytes",
290
              "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.",
291 292
              "type": "integer",
              "minimum": 10,
293
              "maximum": 1000,
294 295
              "default": 20
            },
296 297 298 299 300
            "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",
301
              "enum": ["qcow2", "raw", "vdi", "vmdk", "cloop", "qed"]
302
            },
303 304 305 306
            "use-tap": {
              "title": "Use QEMU TAP network interface",
              "description": "Use QEMU TAP network interface, might require a bridge on SlapOS Node.",
              "type": "boolean",
307
              "default": true
308 309
            },
            "use-nat": {
310
              "title": "Use QEMU USER Mode interface (NAT)",
311 312 313
              "description": "Use QEMU user-mode network stack (NAT).",
              "type": "boolean",
              "default": true
314
            },
315 316
            "nat-rules": {
              "title": "List of rules for NAT of QEMU user mode network stack.",
317
              "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\".",
318
              "type": "array",
319 320 321 322 323 324 325
              "default": []
            },
            "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",
              "default": true
326
            },
327 328 329 330 331 332
            "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
            },
333 334 335 336
            "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.",
              "type": "string"
Alain Takoudjou's avatar
Alain Takoudjou committed
337 338 339 340 341 342
            },
            "enable-monitor": {
              "title": "Deploy monitoring tools",
              "description": "Deploy monitor instance to this kvm instance. It help to check instance status, log and promise results.",
              "type": "boolean",
              "default": true
343 344
            }
          },
345 346 347 348 349 350
          "type": "object"
        }
      },
      "type": "object"
    }
  }
351
}