Resources/Schema/New-CmAzIaasVm.Schema.json
{
"$schema": "http://json-schema.org/draft-07/schema", "$id": "New-CmAzIaasVm", "type": "object", "title": "New-CmAzIaasVm", "description": "Settings Root.", "required": [ "location", "service", "diskEncryptionKey", "groups" ], "properties": { "component": { "$id": "#/component", "type": ["string", "null"], "title": "Component", "description": "Value to determine what cmdlet should be dynamically loaded for these settings." }, "location": { "$id": "#/location", "type": "string", "title": "Location", "description": "Default location for all deployed resources." }, "dscConfigNode": { "$id": "#/dscConfigNode", "type": ["string", "null"], "title": "DSCConfigNode", "description": "Name of the compiled configuration node in automation account." }, "service": { "$id": "#/service", "type": "object", "title": "Service", "description": "Contains dependency and publish details for service location.", "required": [ "dependencies" ], "properties": { "dependencies": { "$id": "#/service/dependencies", "type": "object", "title": "Dependencies", "description": "Contains dependency details for service location.", "required": [ "automation", "keyvault", "workspace" ], "properties": { "automation": { "$id": "#/service/dependencies/automation", "type": "string", "title": "Automation", "description": "Dependency value to fetch existing resource type." }, "keyvault": { "$id": "#/service/dependencies/keyvault", "type": "string", "title": "Keyvault", "description": "Dependency value to fetch existing resource type." }, "vnet": { "$id": "#/service/dependencies/vnet", "type": ["string", "null"], "title": "VNet", "description": "Global default dependency value to fetch existing resource type." }, "workspace": { "$id": "#/service/dependencies/workspace", "type": "string", "title": "Workspace", "description": "Dependency value to fetch existing resource type." } }, "additionalProperties": false }, "publish": { "$id": "#/service/publish", "type": ["object", "null"], "title": "Publish", "description": "Contains publish details for service location.", "properties": { "resourceGroup": { "$id": "#/service/publish/resourceGroup", "type": ["string", "null"], "title": "ResourceGroup", "description": "Global default value to publish on deployed resource type." }, "vm": { "$id": "#/service/publish/vm", "type": ["string", "null"], "title": "VM", "description": "Global default value to publish on deployed resource type." }, "nic": { "$id": "#/service/publish/nic", "type": ["string", "null"], "title": "NIC", "description": "Global default value to publish on deployed resource type." }, "proximityPlacementGroup": { "$id": "#/service/publish/proximityPlacementGroup", "type": ["string", "null"], "title": "proximityPlacementGroup", "description": "Global default value to publish on deployed resource type." }, "availabilitySet": { "$id": "#/service/publish/availabilitySet", "type": ["string", "null"], "title": "availabilitySet", "description": "Global default value to publish on deployed resource type." } }, "additionalProperties": false } }, "additionalProperties": false }, "diskEncryptionKey": { "$id": "#/diskEncryptionKey", "type": "string", "title": "DiskEncryptionKey", "description": "Name of key encryption key in the existing key vault." }, "groups": { "$id": "#/groups", "type": "array", "title": "Groups", "description": "Contains list of details required to deploy resource groups, vm's and associated resources.", "items": { "$id": "#/groups/items", "minItems": 1, "allOf": [ { "$id": "#/groups/items/allOf", "type": "object", "required": [ "name", "virtualMachines" ], "properties": { "name": { "$id": "#/groups/items/allOf/name", "type": "string", "title": "Name", "description": "Becomes part of the generated resource group's name." }, "location": { "$id": "#/groups/items/allOf/location", "type": ["string", "null"], "title": "Location", "description": "Resource group deployment location" }, "service": { "$id": "#/groups/items/allOf/service", "type": ["object", "null"], "title": "Service", "description": "Contains dependency and publish details for service location.", "properties": { "publish": { "$id": "#/groups/items/allOf/service/publish", "type": ["object", "null"], "title": "Publish", "description": "Contains publish details for service location.", "properties": { "resourceGroup": { "$id": "#/groups/items/allOf/service/publish/resourceGroup", "type": ["string", "null"], "title": "ResourceGroup", "description": "Local overriding value to publish on deployed existing resource type." } }, "additionalProperties": false } }, "additionalProperties": false }, "proximityPlacementGroups": { "$id": "#/groups/items/allOf/proximityPlacementGroups", "type": ["array", "null"], "title": "proximityPlacementGroups", "description": "Contains list of details required to deploy proximityPlacementGroups.", "items": { "$id": "#/groups/items/allOf/proximityPlacementGroups/items", "minLength" : 1, "allOf": [ { "$id": "#/groups/items/allOf/proximityPlacementGroups/items/allOf", "type": "object", "required": [ "name" ], "properties": { "name": { "$id": "#/groups/items/allOf/proximityPlacementGroups/items/allOf/name", "type": "string", "title": "Name", "description": "Becomes part of the generated proximityPlacementGroups name." }, "location": { "$id": "#/groups/items/allOf/proximityPlacementGroups/items/allOf/location", "type": ["string", "null"], "title": "Location", "description": "ProximityPlacementGroup's location" }, "service": { "$id": "#/groups/items/allOf/proximityPlacementGroups/items/allOf/service", "type": ["object", "null"], "title": "Service", "description": "Contains dependency and publish details for service location.", "properties": { "publish": { "$id": "#/groups/items/allOf/proximityPlacementGroups/items/allOf/service/publish", "type": ["object", "null"], "title": "Publish", "description": "Contains publish details for service location.", "properties": { "proximityPlacementGroup": { "$id": "#/groups/items/allOf/proximityPlacementGroups/items/allOf/service/publish/proximityPlacementGroup", "type": ["string", "null"], "title": "proximityPlacementGroup", "description": "Local overriding value to publish on deployed existing resource type." } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": false } ] } }, "availabilitySets": { "$id": "#/groups/items/allOf/availabilitySets", "type": ["array", "null"], "title": "availabilitySets", "description": "Contains list of details required to deploy availabilitySets.", "items": { "$id": "#/groups/items/allOf/availabilitySets/items", "minLength" : 1, "allOf": [ { "$id": "#/groups/items/allOf/availabilitySets/items/allOf", "type": "object", "required": [ "name", "platformUpdateDomainCount", "platformFaultDomainCount", "sku" ], "properties": { "name": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/name", "type": "string", "title": "Name", "description": "Becomes part of the generated availabilitySets name." }, "location": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/location", "type": ["string", "null"], "title": "Location", "description": "availabilitySets location" }, "platformUpdateDomainCount": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/platformUpdateDomainCount", "type": ["integer", "null"], "title": "platformUpdateDomainCount", "description": "Provide total number of Update Domains in Availability set." }, "platformFaultDomainCount": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/platformFaultDomainCount", "type": ["integer", "null"], "title": "platformFaultDomainCount", "description": "Provide total number of Fault Domains in availability set." }, "proximityPlacementGroup": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/proximityPlacementGroup", "type": ["string", "null"], "title": "proximityPlacementGroup", "description": "Specifies proximity placement group to attach with availability set." }, "sku": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/sku", "type": ["object", "null"], "title": "sku", "description": "sku details.", "required": [ "name" ], "properties": { "name": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/sku/name", "type": "string", "title": "name", "description": "The sku name.", "enum": ["Classic", "Aligned", "classic", "aligned"] }, "tier": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/sku/tier", "type": ["string", "null"], "title": "tier", "enum": ["Standard", "Basic", "standard", "basic", null], "description": "Specifies the tier of virtual machines in a scale set." }, "capacity": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/sku/capacity", "type": ["integer", "null"], "title": "capacity", "description": "Specifies the number of virtual machines in the scale set." } }, "additionalProperties": false }, "service": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/service", "type": ["object", "null"], "title": "Service", "description": "Contains dependency and publish details for service location.", "properties": { "publish": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/service/publish", "type": ["object", "null"], "title": "Publish", "description": "Contains publish details for service location.", "properties": { "availabilitySet": { "$id": "#/groups/items/allOf/availabilitySets/items/allOf/service/publish/availabilitySet", "type": ["string", "null"], "title": "availabilitySet", "description": "Local overriding value to publish on deployed existing resource type." } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": false } ] } }, "virtualMachines": { "$id": "#/groups/items/allOf/virtualMachines", "type": "array", "title": "VirtualMachines", "description": "Contains list of details required to deploy vm's and associated resources.", "items": { "$id": "#/groups/items/allOf/virtualMachines/items", "minItems" : 1, "allOf": [ { "$id": "#/groups/items/allOf/virtualMachines/items/allOf", "type": "object", "anyOf": [ { "required" : [ "name", "size", "imageReference", "osDisk", "networking" ] }, { "required" : [ "name", "size", "imageReference", "osDisk", "networking", "availabilitySet" ] }, { "required" : [ "name", "size", "imageReference", "osDisk", "networking", "zone" ] } ], "properties": { "name": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/name", "type": "string", "title": "Name", "description": "Becomes part of the generated virtual machine's name." }, "size": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/size", "type": "string", "title": "Size", "description": "Preset vm hardware configuration option (predefined in azure)." }, "updateGroup": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/updateGroup", "type": ["string", "null"], "title": "UpdateGroup", "description": "Pre-defined group of azure defined vm update bundles.", "enum": ["Critical", "CriticalSecurity", "Recommended", "All", "critical", "criticalsecurity", "recommended", "all", null] }, "updateFrequency": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/updateFrequency", "type": ["string", "null"], "title": "UpdateFrequency", "description": "The frequency of the updates applied to the vm.", "enum": ["Monthly", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Daily", "monthly", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday", "daily", null] }, "imageReference": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/imageReference", "type": "object", "title": "ImageReference", "description": "Container of details in regards to the vm image used.", "required": [ "publisher", "offer", "sku", "version" ], "properties": { "publisher": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/imageReference/publisher", "type": "string", "title": "Publisher", "description": "Publisher source of the image." }, "offer": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/imageReference/offer", "type": "string", "title": "Offer", "description": "Platform or marketplace image product." }, "sku": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/imageReference/sku", "type": "string", "title": "Sku used", "description": "Image sku." }, "version": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/imageReference/version", "type": "string", "title": "Version", "description": "Platform or marketplace image version, (Major.Minor.Build) or latest." } }, "additionalProperties": false }, "location": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/location", "type": ["string", "null"], "title": "Location", "description": "Virtual machine deployment location" }, "zone": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/zone", "type": ["integer", "null"], "title": "Zone", "description": "Virtual machine deployment zone.", "enum": [ 1, 2, 3, null] }, "availabilitySet": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/availabilitySet", "type": ["string","null"], "title": "AvailabilitySet", "description": "Becomes part of the generated virtual machine's availability set name." }, "service": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/service", "type": ["object", "null"], "title": "Service", "description": "Contains dependency and publish details for service location.", "properties": { "publish": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/service/publish", "type": ["object", "null"], "title": "Publish", "description": "Contains publish details for service location.", "properties": { "vm": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/service/publish/vm", "type": ["string", "null"], "title": "VM", "description": "Local overriding value to publish on deployed existing resource type." }, "nic": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/service/publish/nic", "type": ["string", "null"], "title": "NIC", "description": "Local overriding value to publish on deployed existing resource type." } }, "additionalProperties": false } }, "additionalProperties": false }, "osDisk": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/osDisk", "type": "object", "title": "OSDisk", "description": "Container of details in regards to vm's operating system disk.", "required": [ "osType", "expandableDiskSizeGB" ], "default": { "caching": "None" }, "properties": { "osType": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/osDisk/osType", "type": "string", "title": "OSType", "description": "The over arching type of OS to use.", "enum": ["Windows", "Linux", "windows", "linux"] }, "expandableDiskSizeGB": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/osDisk/expandableDiskSizeGB", "type": "integer", "title": "ExpandableDiskSizeGB", "description": "The size of the disk in gigabytes. (Overwrites disk size in vm image).", "minimum": 1 }, "caching": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/osDisk/caching", "type": "string", "title": "caching", "description": "Defines disk caching strategy", "enum": ["None", "ReadOnly", "ReadWrite", "none", "readonly", "readwrite"] } }, "additionalProperties": false }, "dataDisks": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/dataDisks", "type": ["array", "null"], "title": "DataDiskSizes", "description": "List of details specifiying the size of and how many data disks will be deployed with the vm.", "items": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/dataDisks/items", "allOf": [ { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/dataDisks/items/allOf", "type": "object", "required": [ "diskSizeGB" ], "default": { "caching": "None" }, "properties": { "diskSizeGB": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/dataDisks/items/allOf/diskSizeGB", "type": "integer", "title": "diskSizeGB", "description": "The size of the disk in gigabytes.", "minimum": 1 }, "caching": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/dataDisks/items/allOf/caching", "type": "string", "title": "Caching", "description": "Defines disk caching strategy", "enum": ["None", "ReadOnly", "ReadWrite", "none", "readonly", "readwrite"] } }, "additionalProperties": false } ] } }, "plan": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/plan", "type": ["object", "null"], "title": "Plan", "description": "Container of details in regards to what vm marketplace image to use for the vm.", "required": [ "name", "publisher", "product" ], "properties": { "name": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/osDisk/osType", "type": "string", "title": "Name", "description": "Plan id." }, "publisher": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/osDisk/expandableDiskSizeGB", "type": "string", "title": "Publisher", "description": "Publisher id source of the image.." }, "product": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/osDisk/expandableDiskSizeGB", "type": "string", "title": "Product", "description": "Marketplace image product." } }, "additionalProperties": false }, "networking": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/networking", "type": "object", "title": "Networking", "description": "Container of details in regards to network dependency values.", "required": [ "subnetName" ], "properties": { "service": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/networking/service", "type": ["object", "null"], "title": "Service", "description": "Contains dependency and publish details for service location.", "properties": { "dependencies": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/networking/service/dependencies", "type": ["object", "null"], "title": "Dependencies", "description": "Contains dependency details for service location.", "properties": { "vnet": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/networking/service/dependencies/vnet", "type": ["string", "null"], "title": "Vnet", "description": "Local overriding dependency value to fetch existing resource type." } }, "additionalProperties": false } }, "additionalProperties": false }, "ipAddress": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/networking/ipAddress", "type": ["string", "null"], "title": "IPAddress", "description": "Private ip address for the network interface card.", "format": "ipv4" }, "subnetName": { "$id": "#/groups/items/allOf/virtualMachines/items/allOf/networking/subnetName", "type": "string", "title": "SubnetName", "description": "Name of subnet to use in existing vnet." } }, "additionalProperties": false } }, "additionalProperties": false } ] } } }, "additionalProperties": false } ] } } }, "additionalProperties": false } |