diff --git a/src/vfxt/azuredeploy-auto.json b/src/vfxt/azuredeploy-auto.json index 0d173fc2..c83c204b 100644 --- a/src/vfxt/azuredeploy-auto.json +++ b/src/vfxt/azuredeploy-auto.json @@ -1,506 +1,510 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "createVirtualNetwork": { - "type": "bool", - "defaultValue": true, - "allowedValues": [ - true, - false - ], - "metadata": { - "description": "If true, create the VNET based on the virtual network resource group, virtual network name, and subnet name provided, otherwise use the virtual network based on those names." - } - }, - "virtualNetworkResourceGroup": { - "type": "string", - "defaultValue": "", - "minLength": 0, - "metadata": { - "description": "The resource group name for the VNET. If createVirtualNetwork is set to true, the current resource group must be specified, otherwise the value should be blank." - } - }, - "virtualNetworkName": { - "type": "string", - "metadata": { - "description": "The name used for the virtual network. If createVirtualNetwork is set to true, you may reuse the unique name above." - } - }, - "virtualNetworkSubnetName": { - "type": "string", - "metadata": { - "description": "The unique name used for the virtual network subnet. If createVirtualNetwork is set to true, you may reuse the unique name above." - } - }, - "vnetAddressSpacePrefix":{ - "type": "string", - "metadata": { - "description": "Virtual network address space prefix used when creating a virtual network with this deployment. E.g. 192.168.0.0/16" - }, - "defaultValue": "10.0.0.0/16" - }, - "subnetAddressRangePrefix":{ - "type": "string", - "metadata": { - "description": "Subnet address range prefix used when creating a virtual network/subnet with this deployment. E.g. 192.168.0.0/24" - }, - "defaultValue": "10.0.0.0/24" - }, - "useAvereBackedStorageAccount": { - "type": "bool", - "defaultValue": true, - "allowedValues": [ - true, - false - ], - "metadata": { - "description": "If true, create the storage account and use that for the backing storage account. If false, the minimal Avere vFXT cluster will be created." - } - }, - "avereBackedStorageAccountName": { - "type": "string", - "metadata": { - "description": "A unique storage account to be created for backing the Avere vFXT. If 'useAvereBackedStorageAccount' is set to false, this field is unused." - } - }, - "controllerName": { - "type": "string", - "metadata": { - "description": "The unique name used for resource names associated with the controller" - } - }, - "controllerAdminUsername": { - "type": "string", - "defaultValue": "azureuser", - "metadata": { - "description": "The controller admin username." - } - }, - "controllerAuthenticationType": { - "type": "string", - "defaultValue": "sshPublicKey", - "allowedValues": [ - "sshPublicKey", - "password" - ], - "metadata": { - "description": "The controller may be configured with a password or public SSH key." - } - }, - "controllerPassword": { - "type": "securestring", - "defaultValue": "", - "minLength": 0, - "metadata": { - "description": "If controllerAuthenticationType is 'password', the admin password used for the controller." - } - }, - "controllerSSHKeyData": { - "type": "string", - "defaultValue": "", - "minLength": 0, - "metadata": { - "description": "If controllerAuthenticationType is 'sshPublicKey', the controller public SSH key." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "The admin password used for the Avere vFXT cluster." - } - }, - "avereCreateClusterRoleId": { - "type": "string", - "defaultValue": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635", - "metadata": { - "description": "The AAD role id used for creation of the vFXT cluster. The default GUID is the Owner built-in role. However, we recommend you create your own role as described in https://github.com/Azure/Avere/tree/master/src/vfxt#managed-identity-and-roles. After role creation, obtain the ID by using the following az command: az role definition list --query '[*].{roleName:roleName, name:name}' -o table --name 'Avere Contributor'. Microsoft employees use 'a7b1b19a-0e83-4fe5-935c-faaefbfd18c3'." - } - }, - "avereClusterRole": { - "type": "string", - "defaultValue": "avere-cluster", - "metadata": { - "description": "The AAD role used by the running vFXT cluster." - } - }, - "avereClusterName": { - "type": "string", - "defaultValue": "avere-cluster", - "metadata": { - "description": "The cluster name should be unique within the resource group." - } - }, - "avereInstanceType": { - "type": "string", - "defaultValue": "Standard_D16s_v3", - "allowedValues": [ - "Standard_D16s_v3", - "Standard_E32s_v3" - ], - "metadata": { - "description": "The SKU for the Avere vFXT VM." - } - }, - "avereNodeCount": { - "type": "int", - "defaultValue": 3, - "minValue": 3, - "maxValue": 12, - "metadata": { - "description": "The number of vFXT nodes in the Avere vFXT cluster" - } - }, - "avereCacheSizeGB": { - "type": "int", - "defaultValue": 1024, - "allowedValues": [ - 1024, - 4096 - ], - "metadata": { - "description": "The cache size in GB to use for each Avere vFXT VM." - } - }, - "enableCloudTraceDebugging": { - "type": "bool", - "defaultValue": false, - "metadata": { - "description": "When working with Azure Support, set this value to true, otherwise keep as false." - } - } - }, - "variables": { - "controllerName": "[parameters('controllerName')]", - "controllerAdminUsername": "[parameters('controllerAdminUsername')]", - "controllerAuthenticationType": "[parameters('controllerAuthenticationType')]", - "controllerPassword": "[parameters('controllerPassword')]", - "controllerSSHKeyData": "[parameters('controllerSSHKeyData')]", - "adminPassword": "[parameters('adminPassword')]", - "nicName": "[concat('vmnic-',variables('controllerName'))]", - "createVirtualNetwork": "[parameters('createVirtualNetwork')]", - "virtualNetworkResourceGroup": "[if(variables('createVirtualNetwork'), resourceGroup().name, parameters('virtualNetworkResourceGroup'))]", - "virtualNetworkName": "[parameters('virtualNetworkName')]", - "virtualNetworkSubnetName": "[parameters('virtualNetworkSubnetName')]", - "addressPrefix": "[parameters('vnetAddressSpacePrefix')]", - "subnetPrefix": "[parameters('subnetAddressRangePrefix')]", - "avereCreateClusterRoleFullyQualifiedId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', parameters('avereCreateClusterRoleId'))]", - "createRoleAssignmentId": "[guid(concat(variables('vmName'), '-createrole'))]", - "userAdminClusterRoleFullyQualifiedId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9')]", - "userAdminRoleAssignmentId": "[guid(concat(variables('vmName'), '-useradmin'))]", - "createVNETRoleAssignmentId": "[guid(concat(variables('vmName'), '-createvnetrole'))]", - "vnetAssignRoleName": "vnetAssignRole", - "avereClusterRole": "[parameters('avereClusterRole')]", - "useAvereBackedStorageAccount": "[parameters('useAvereBackedStorageAccount')]", - "avereBackedStorageAccountName": "[parameters('avereBackedStorageAccountName')]", - "avereClusterName": "[parameters('avereClusterName')]", - "avereInstanceType": "[parameters('avereInstanceType')]", - "avereCacheSizeGB": "[parameters('avereCacheSizeGB')]", - "enableCloudTraceDebugging": "[parameters('enableCloudTraceDebugging')]", - "additionalVFXTParameters": "[concat(' --nodes ', parameters('avereNodeCount'), ' --debug')]", - "controllerVMSize": "Standard_A1_v2", - "publicIPAddressName": "[concat('publicip-',variables('controllerName'))]", - "networkSecurityGroupName": "[concat('nsg-',variables('controllerName'))]", - "vnetID": "[resourceId(variables('virtualNetworkResourceGroup'),'Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "subnetId": "[concat(variables('vnetID'),'/subnets/',variables('virtualNetworkSubnetName'))]", - "vmName": "[concat('vm-',variables('controllerName'))]", - "pipObject": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" - }, - "createNic?": true, - "useExtension?": true, - "storageAccountType": "Standard_LRS", - "storageAccountKind": "StorageV2", - "environmentVariables": "[concat(' RESOURCE_GROUP=', resourceGroup().name, ' LOCATION=', resourceGroup().location, ' NETWORK_RESOURCE_GROUP=', variables('virtualNetworkResourceGroup'), ' NETWORK=', variables('virtualNetworkName'),' SUBNET=', variables('virtualNetworkSubnetName'), ' AVERE_CLUSTER_ROLE=\"', variables('avereClusterRole'), '\" CREATE_CLOUD_BACKED_CLUSTER=', variables('useAvereBackedStorageAccount'), ' STORAGE_ACCOUNT=', variables('avereBackedStorageAccountName'), ' CACHE_SIZE=', variables('avereCacheSizeGB'), ' CLUSTER_NAME=', variables('avereClusterName'), ' INSTANCE_TYPE=', variables('avereInstanceType'), ' CONTROLLER_ADMIN_USER_NAME=', variables('controllerAdminUsername'),' ENABLE_CLOUD_TRACE_DEBUG=', variables('enableCloudTraceDebugging'), ' DEBUG=\"', variables('additionalVFXTParameters'), '\"')]", - "sshKeyPath": "[concat('/home/',variables('controllerAdminUsername'),'/.ssh/authorized_keys')]", - "controllerOSProfilePassword": { - "computerName": "[variables('vmName')]", - "adminUsername": "[variables('controllerAdminUsername')]", - "adminPassword": "[variables('controllerPassword')]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/avere/installvfxt.sh\n permissions: \"0744\"\n - encoding: gzip\n content: !!binary |\n H4sIAAAAAAAC/81XW1PbRhR+1684EcpgDxibZPpQGD+4YIhnjM0Yp2lLqGYtrawdpJWiXWFS1/+9Z1drSb5QOun0Ih6Qzp7rd27rgzftGePtGRGhZR18+2PhH3wi0gvhKXiWJ1EyB8J9oJzMIgpelOQ+yIx4FEggaQYypIAiMeFkTmPKJQxugQnIqEfZE/WPtbjPxH55FFUahJexVEJIBASMMxFS/wRgiidpnqWJoJAEG8JoAUWDJAPi+0yyhJMIfDrL53PG58A4HsVE0cHPs4IkJIkiTTvRYfa5yDP0KYnTiGrW2VcQMklTzR9oz0oUAob++wnVhnkiQYTJAvIU0AfDWzexDknpEwUIKFdq02SYUWUpT30iMWDl1N/IHKrPaJpkEtAHiBinxi59ZhLQI5plSWYJKqH1bGngEUXj5oKhTIjcGKQSZ1IU/KhDJBg3P8RYlChFSfNi9X75OOm7H8Y3ffdyMOm2wySmbediPJpOxsNhf+L2Lm8GI/fjHb6Oejd968ern6bucHztXg2G/a6zKd9eo2N96g2m7l0fFV3edU/fdazJ7YXbH/V+QCG7KEVb0y4HdwXRFJhtWUHOvSIBlPvI02jC0gJ8WIqlklEhus7pORDN1HXeWcVhAPdgOwXVhm4XPyqjNjzAuUoxB82tngOYji/H0DLpQwRlCCiyr1WwxLBBsBcyKvOMY/nw1m80S5TZgGBh+aVa6oUJ2Mp3cJaFOyuQCX6U/q/skhs/80h2O5pAo5eiMDBVYbwexb6O/bfCEHRLT38yGU/OYEZ8k7cd0VNNCFiRTeOfUxxaq1pVeCH1Ht2QRNhxriq4sj54sug6DY3C0VvRNAojGksWUzzB3saq9+Dtz+Bs1HHB6rMgoBnlnuJtOKit5ZTizWa9yipWG1pziZR6we/JUoHCVW/aG57pSVMOJGe54cpKj9AiugojPQBKhOpoLAiTGgUXNZZIeEnOcTabfCxCZege3kAr2IocHs5xNJR2RERpagzV9SAe5hWO4NRgUeLhrM9ac4ynjoRSv4FDhYUO/nA7+kPMgq+HM0lTSjKzo5xlXesKJ4OXcF/Ym3orkAxQOqsJp7uIVdvOZWkJWwHUmZGrgqzmToPOcUSD/eua0rjvtL5/WJ4ev199Pmku36+qb3s3t78DWTzC4TJW+7nhdI7bmv3o88n+/+3mOVqHLoh8JmSmJCZ3095kejwZ9kfX0w94nuJylMi1OtxKi+0sD2q9WhRqRxVnyfdCbvb3uHpmGSWP2xDrStnuyr01tT8ZZn9TN0aDmJZX8xGAzkKr9SVnuMhsZe9sMLpSY/DCKNtF/8VSVOK67daO+BsXgX8WgWLZuHpKu3pK7913VuWuzL6qSwfO4j2Lyrb+DDl1wUBxde2iT9hX2LYsggVFMsELoxpM8TxW1aQuRRu3J33fqafAbGdwSjehtnDhRbTXciL3PBR6Bd2/DO93Fbw1rOrQFGjhVK3Db7bkt+G/b8X+9wkwd4X/YQYMXlspiAnjJeaFkBoL+reBbs1yVyLkxVooXN7YfYXNm+ubqTu4xUG9O+abxq2dhgPHiFmV2u2ZZJkrgnhZGGNSofwBi9+Vw8kNAAA=\n path: /opt/avere/enablecloudtrace.sh\n permissions: \"0744\"\n\n')]" - }, - "controllerOSProfileSSHKey": { - "computername": "[variables('vmName')]", - "adminUsername": "[variables('controllerAdminUsername')]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/avere/installvfxt.sh\n permissions: \"0744\"\n - encoding: gzip\n content: !!binary |\n H4sIAAAAAAAC/81XW1PbRhR+1684EcpgDxibZPpQGD+4YIhnjM0Yp2lLqGYtrawdpJWiXWFS1/+9Z1drSb5QOun0Ih6Qzp7rd27rgzftGePtGRGhZR18+2PhH3wi0gvhKXiWJ1EyB8J9oJzMIgpelOQ+yIx4FEggaQYypIAiMeFkTmPKJQxugQnIqEfZE/WPtbjPxH55FFUahJexVEJIBASMMxFS/wRgiidpnqWJoJAEG8JoAUWDJAPi+0yyhJMIfDrL53PG58A4HsVE0cHPs4IkJIkiTTvRYfa5yDP0KYnTiGrW2VcQMklTzR9oz0oUAob++wnVhnkiQYTJAvIU0AfDWzexDknpEwUIKFdq02SYUWUpT30iMWDl1N/IHKrPaJpkEtAHiBinxi59ZhLQI5plSWYJKqH1bGngEUXj5oKhTIjcGKQSZ1IU/KhDJBg3P8RYlChFSfNi9X75OOm7H8Y3ffdyMOm2wySmbediPJpOxsNhf+L2Lm8GI/fjHb6Oejd968ern6bucHztXg2G/a6zKd9eo2N96g2m7l0fFV3edU/fdazJ7YXbH/V+QCG7KEVb0y4HdwXRFJhtWUHOvSIBlPvI02jC0gJ8WIqlklEhus7pORDN1HXeWcVhAPdgOwXVhm4XPyqjNjzAuUoxB82tngOYji/H0DLpQwRlCCiyr1WwxLBBsBcyKvOMY/nw1m80S5TZgGBh+aVa6oUJ2Mp3cJaFOyuQCX6U/q/skhs/80h2O5pAo5eiMDBVYbwexb6O/bfCEHRLT38yGU/OYEZ8k7cd0VNNCFiRTeOfUxxaq1pVeCH1Ht2QRNhxriq4sj54sug6DY3C0VvRNAojGksWUzzB3saq9+Dtz+Bs1HHB6rMgoBnlnuJtOKit5ZTizWa9yipWG1pziZR6we/JUoHCVW/aG57pSVMOJGe54cpKj9AiugojPQBKhOpoLAiTGgUXNZZIeEnOcTabfCxCZege3kAr2IocHs5xNJR2RERpagzV9SAe5hWO4NRgUeLhrM9ac4ynjoRSv4FDhYUO/nA7+kPMgq+HM0lTSjKzo5xlXesKJ4OXcF/Ym3orkAxQOqsJp7uIVdvOZWkJWwHUmZGrgqzmToPOcUSD/eua0rjvtL5/WJ4ev199Pmku36+qb3s3t78DWTzC4TJW+7nhdI7bmv3o88n+/+3mOVqHLoh8JmSmJCZ3095kejwZ9kfX0w94nuJylMi1OtxKi+0sD2q9WhRqRxVnyfdCbvb3uHpmGSWP2xDrStnuyr01tT8ZZn9TN0aDmJZX8xGAzkKr9SVnuMhsZe9sMLpSY/DCKNtF/8VSVOK67daO+BsXgX8WgWLZuHpKu3pK7913VuWuzL6qSwfO4j2Lyrb+DDl1wUBxde2iT9hX2LYsggVFMsELoxpM8TxW1aQuRRu3J33fqafAbGdwSjehtnDhRbTXciL3PBR6Bd2/DO93Fbw1rOrQFGjhVK3Db7bkt+G/b8X+9wkwd4X/YQYMXlspiAnjJeaFkBoL+reBbs1yVyLkxVooXN7YfYXNm+ubqTu4xUG9O+abxq2dhgPHiFmV2u2ZZJkrgnhZGGNSofwBi9+Vw8kNAAA=\n path: /opt/avere/enablecloudtrace.sh\n permissions: \"0744\"\n\n')]", - "linuxConfiguration": { - "disablePasswordAuthentication": "true", - "ssh": { - "publicKeys": [ - { - "path": "[variables('sshKeyPath')]", - "keyData": "[variables('controllerSSHKeyData')]" - } - ] - } - } - }, - "controllerOSProfile": "[if(equals(variables('controllerAuthenticationType'),'password'),variables('controllerOSProfilePassword'),variables('controllerOSProfileSSHKey'))]", - "controllerStorageProfile": { - "imageReference": { - "publisher": "microsoft-avere", - "offer": "vfxt", - "sku": "avere-vfxt-controller", - "version": "latest" - } - }, - "vsip": "VSERVER_IPS=", - "mip": "MGMT_IP=" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "pid-7a86fa6c-a5c7-4f21-b9fa-efa3dcbfbb86", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "condition": "[variables('createVirtualNetwork')]", - "apiVersion": "2017-10-01", - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('publicIPAddressName')]", - "location": "[resourceGroup().location]", - "properties": { - "publicIPAllocationMethod": "Static" - } - }, - { - "condition": "[variables('createVirtualNetwork')]", - "apiVersion": "2017-10-01", - "type": "Microsoft.Network/networkSecurityGroups", - "name": "[variables('networkSecurityGroupName')]", - "location": "[resourceGroup().location]", - "properties": { - "securityRules": [ - { - "name": "default-allow-ssh", - "properties": { - "priority": 1000, - "sourceAddressPrefix": "*", - "protocol": "Tcp", - "destinationPortRange": "22", - "access": "Allow", - "direction": "Inbound", - "sourcePortRange": "*", - "destinationAddressPrefix": "*" - } - } - ] - } - }, - { - "condition": "[variables('createVirtualNetwork')]", - "apiVersion": "2017-10-01", - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[resourceGroup().location]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('virtualNetworkSubnetName')]", - "properties": { - "addressPrefix": "[variables('subnetPrefix')]" - } - } - ] - } - }, - { - "condition": "[variables('createNic?')]", - "apiVersion": "2017-10-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicName')]", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Network/networkSecurityGroups/', variables('networkSecurityGroupName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "publicIPAddress": "[if(variables('createVirtualNetwork'), variables('pipObject'), json('null'))]", - "subnet": { - "id": "[variables('subnetId')]" - } - } - } - ] - } - }, - { - "apiVersion": "2017-12-01", - "tags": { - "averevfxt": "server" - }, - "type": "Microsoft.Compute/virtualMachines", - "identity": { - "type": "SystemAssigned" - }, - "name": "[variables('vmName')]", - "location": "[resourceGroup().location]", - "plan": { - "name": "avere-vfxt-controller", - "publisher": "microsoft-avere", - "product": "vfxt" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" - ], - "properties": { - "hardwareProfile": { - "vmSize": "[variables('controllerVMSize')]" - }, - "osProfile": "[variables('controllerOSProfile')]", - "storageProfile": "[variables('controllerStorageProfile')]", - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" - } - ] - } - } - }, - { - "apiVersion": "2017-09-01", - "name": "[variables('createRoleAssignmentId')]", - "type": "Microsoft.Authorization/roleAssignments", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" - ], - "properties": { - "roleDefinitionId": "[variables('avereCreateClusterRoleFullyQualifiedId')]", - "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-12-01', 'Full').identity.principalId]", - "scope": "[resourceGroup().id]" - } - }, - { - "apiVersion": "2017-09-01", - "name": "[variables('userAdminRoleAssignmentId')]", - "type": "Microsoft.Authorization/roleAssignments", - "dependsOn": [ - "[concat('Microsoft.Authorization/roleAssignments/', variables('createRoleAssignmentId'))]" - ], - "properties": { - "roleDefinitionId": "[variables('userAdminClusterRoleFullyQualifiedId')]", - "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-12-01', 'Full').identity.principalId]", - "scope": "[resourceGroup().id]" - } - }, - { - "condition": "[not(variables('createVirtualNetwork'))]", - "apiVersion": "2018-05-01", - "name": "[variables('vnetAssignRoleName')]", - "type": "Microsoft.Resources/deployments", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" - ], - "resourceGroup": "[variables('virtualNetworkResourceGroup')]", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [ - { - "name": "[variables('createVNETRoleAssignmentId')]", - "type": "Microsoft.Authorization/roleAssignments", - "apiVersion": "2017-09-01", - "properties": { - "roleDefinitionId": "[variables('avereCreateClusterRoleFullyQualifiedId')]", - "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-12-01', 'Full').identity.principalId]", - "scope": "[concat(subscription().id, '/resourceGroups/', parameters('virtualNetworkResourceGroup'))]" - } - } - ] - } - } - }, - { - "condition": "[variables('useExtension?')]", - "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(variables('vmName'), '/configureagent')]", - "apiVersion": "2017-12-01", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[resourceId('Microsoft.Authorization/roleAssignments', variables('userAdminRoleAssignmentId'))]", - "[concat('Microsoft.Resources/deployments/', variables('vnetAssignRoleName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('avereBackedStorageAccountName'))]" - ], - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": true, - "protectedSettings": { - "commandToExecute": "[concat(' ADMIN_PASSWORD=', variables('adminPassword'), variables('environmentVariables'), ' /bin/bash /opt/avere/installvfxt.sh')]" - } - } - }, - { - "condition": "[variables('useAvereBackedStorageAccount')]", - "name": "[variables('avereBackedStorageAccountName')]", - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2017-10-01", - "sku": { - "name": "[variables('storageAccountType')]" - }, - "kind": "[variables('storageAccountKind')]", - "location": "[resourceGroup().location]" - } - ], - "outputs": { - "ssh_string": { - "type": "string", - "value": "[if(variables('createVirtualNetwork'), concat(variables('controllerAdminUsername'), '@', reference(resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))).ipAddress), concat(variables('controllerAdminUsername'), '@', reference(resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))).ipConfigurations[0].properties.privateIPAddress))]" - }, - "resource_group": { - "type": "string", - "value": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "value": "[resourceGroup().location]" - }, - "network_resource_group": { - "type": "string", - "value": "[variables('virtualNetworkResourceGroup')]" - }, - "network": { - "type": "string", - "value": "[variables('virtualNetworkName')]" - }, - "subnet": { - "type": "string", - "value": "[variables('virtualNetworkSubnetName')]" - }, - "subnet_id": { - "type": "string", - "value": "[variables('subnetId')]" - }, - "vserver_ips": { - "type": "string", - "value": "[substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('vsip')),length(variables('vsip'))),indexOf(substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('vsip')),length(variables('vsip')))),'\n'))]" - }, - "mgmt_ip": { - "type": "string", - "value": "[substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('mip')),length(variables('mip'))),indexOf(substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('mip')),length(variables('mip')))),'\n'))]" - } - } -} +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "createVirtualNetwork": { + "type": "bool", + "defaultValue": true, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "If true, create the VNET based on the virtual network resource group, virtual network name, and subnet name provided, otherwise use the virtual network based on those names." + } + }, + "virtualNetworkResourceGroup": { + "type": "string", + "defaultValue": "", + "minLength": 0, + "metadata": { + "description": "The resource group name for the VNET. If createVirtualNetwork is set to true, the current resource group must be specified, otherwise the value should be blank." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "The name used for the virtual network. If createVirtualNetwork is set to true, you may reuse the unique name above." + } + }, + "virtualNetworkSubnetName": { + "type": "string", + "metadata": { + "description": "The unique name used for the virtual network subnet. If createVirtualNetwork is set to true, you may reuse the unique name above." + } + }, + "vnetAddressSpacePrefix":{ + "type": "string", + "metadata": { + "description": "Virtual network address space prefix used when creating a virtual network with this deployment. E.g. 192.168.0.0/16" + }, + "defaultValue": "10.0.0.0/16" + }, + "subnetAddressRangePrefix":{ + "type": "string", + "metadata": { + "description": "Subnet address range prefix used when creating a virtual network/subnet with this deployment. E.g. 192.168.0.0/24" + }, + "defaultValue": "10.0.0.0/24" + }, + "useAvereBackedStorageAccount": { + "type": "bool", + "defaultValue": true, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "If true, create the storage account and use that for the backing storage account. If false, the minimal Avere vFXT cluster will be created." + } + }, + "avereBackedStorageAccountName": { + "type": "string", + "metadata": { + "description": "A unique storage account to be created for backing the Avere vFXT. If 'useAvereBackedStorageAccount' is set to false, this field is unused." + } + }, + "controllerName": { + "type": "string", + "metadata": { + "description": "The unique name used for resource names associated with the controller" + } + }, + "controllerAdminUsername": { + "type": "string", + "defaultValue": "azureuser", + "metadata": { + "description": "The controller admin username." + } + }, + "controllerAuthenticationType": { + "type": "string", + "defaultValue": "sshPublicKey", + "allowedValues": [ + "sshPublicKey", + "password" + ], + "metadata": { + "description": "The controller may be configured with a password or public SSH key." + } + }, + "controllerPassword": { + "type": "securestring", + "defaultValue": "", + "minLength": 0, + "metadata": { + "description": "If controllerAuthenticationType is 'password', the admin password used for the controller." + } + }, + "controllerSSHKeyData": { + "type": "string", + "defaultValue": "", + "minLength": 0, + "metadata": { + "description": "If controllerAuthenticationType is 'sshPublicKey', the controller public SSH key." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "The admin password used for the Avere vFXT cluster." + } + }, + "avereCreateClusterRoleId": { + "type": "string", + "defaultValue": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635", + "metadata": { + "description": "The AAD role id used for creation of the vFXT cluster. The default GUID is the Owner built-in role. However, we recommend you create your own role as described in https://github.com/Azure/Avere/tree/master/src/vfxt#managed-identity-and-roles. After role creation, obtain the ID by using the following az command: az role definition list --query '[*].{roleName:roleName, name:name}' -o table --name 'Avere Contributor'. Microsoft employees use 'a7b1b19a-0e83-4fe5-935c-faaefbfd18c3'." + } + }, + "avereClusterRole": { + "type": "string", + "defaultValue": "avere-cluster", + "metadata": { + "description": "The AAD role used by the running vFXT cluster." + } + }, + "avereClusterName": { + "type": "string", + "defaultValue": "avere-cluster", + "metadata": { + "description": "The cluster name should be unique within the resource group." + } + }, + "avereInstanceType": { + "type": "string", + "defaultValue": "Standard_D16s_v3", + "allowedValues": [ + "Standard_D16s_v3", + "Standard_E32s_v3" + ], + "metadata": { + "description": "The SKU for the Avere vFXT VM." + } + }, + "avereNodeCount": { + "type": "int", + "defaultValue": 3, + "minValue": 3, + "maxValue": 12, + "metadata": { + "description": "The number of vFXT nodes in the Avere vFXT cluster" + } + }, + "avereCacheSizeGB": { + "type": "int", + "defaultValue": 1024, + "allowedValues": [ + 1024, + 4096 + ], + "metadata": { + "description": "The cache size in GB to use for each Avere vFXT VM." + } + }, + "enableCloudTraceDebugging": { + "type": "bool", + "defaultValue": false, + "allowedValues": [ + true, + false + ], + "metadata": { + "description": "When working with Azure Support, set this value to true, otherwise keep as false." + } + } + }, + "variables": { + "controllerName": "[parameters('controllerName')]", + "controllerAdminUsername": "[parameters('controllerAdminUsername')]", + "controllerAuthenticationType": "[parameters('controllerAuthenticationType')]", + "controllerPassword": "[parameters('controllerPassword')]", + "controllerSSHKeyData": "[parameters('controllerSSHKeyData')]", + "adminPassword": "[parameters('adminPassword')]", + "nicName": "[concat('vmnic-',variables('controllerName'))]", + "createVirtualNetwork": "[parameters('createVirtualNetwork')]", + "virtualNetworkResourceGroup": "[if(variables('createVirtualNetwork'), resourceGroup().name, parameters('virtualNetworkResourceGroup'))]", + "virtualNetworkName": "[parameters('virtualNetworkName')]", + "virtualNetworkSubnetName": "[parameters('virtualNetworkSubnetName')]", + "addressPrefix": "[parameters('vnetAddressSpacePrefix')]", + "subnetPrefix": "[parameters('subnetAddressRangePrefix')]", + "avereCreateClusterRoleFullyQualifiedId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', parameters('avereCreateClusterRoleId'))]", + "createRoleAssignmentId": "[guid(concat(variables('vmName'), '-createrole'))]", + "userAdminClusterRoleFullyQualifiedId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9')]", + "userAdminRoleAssignmentId": "[guid(concat(variables('vmName'), '-useradmin'))]", + "createVNETRoleAssignmentId": "[guid(concat(variables('vmName'), '-createvnetrole'))]", + "vnetAssignRoleName": "vnetAssignRole", + "avereClusterRole": "[parameters('avereClusterRole')]", + "useAvereBackedStorageAccount": "[parameters('useAvereBackedStorageAccount')]", + "avereBackedStorageAccountName": "[parameters('avereBackedStorageAccountName')]", + "avereClusterName": "[parameters('avereClusterName')]", + "avereInstanceType": "[parameters('avereInstanceType')]", + "avereCacheSizeGB": "[parameters('avereCacheSizeGB')]", + "enableCloudTraceDebugging": "[parameters('enableCloudTraceDebugging')]", + "additionalVFXTParameters": "[concat(' --nodes ', parameters('avereNodeCount'), ' --debug')]", + "controllerVMSize": "Standard_A1_v2", + "publicIPAddressName": "[concat('publicip-',variables('controllerName'))]", + "networkSecurityGroupName": "[concat('nsg-',variables('controllerName'))]", + "vnetID": "[resourceId(variables('virtualNetworkResourceGroup'),'Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", + "subnetId": "[concat(variables('vnetID'),'/subnets/',variables('virtualNetworkSubnetName'))]", + "vmName": "[concat('vm-',variables('controllerName'))]", + "pipObject": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "createNic?": true, + "useExtension?": true, + "storageAccountType": "Standard_LRS", + "storageAccountKind": "StorageV2", + "environmentVariables": "[concat(' RESOURCE_GROUP=', resourceGroup().name, ' LOCATION=', resourceGroup().location, ' NETWORK_RESOURCE_GROUP=', variables('virtualNetworkResourceGroup'), ' NETWORK=', variables('virtualNetworkName'),' SUBNET=', variables('virtualNetworkSubnetName'), ' AVERE_CLUSTER_ROLE=\"', variables('avereClusterRole'), '\" CREATE_CLOUD_BACKED_CLUSTER=', variables('useAvereBackedStorageAccount'), ' STORAGE_ACCOUNT=', variables('avereBackedStorageAccountName'), ' CACHE_SIZE=', variables('avereCacheSizeGB'), ' CLUSTER_NAME=', variables('avereClusterName'), ' INSTANCE_TYPE=', variables('avereInstanceType'), ' CONTROLLER_ADMIN_USER_NAME=', variables('controllerAdminUsername'),' ENABLE_CLOUD_TRACE_DEBUG=', variables('enableCloudTraceDebugging'), ' DEBUG=\"', variables('additionalVFXTParameters'), '\"')]", + "sshKeyPath": "[concat('/home/',variables('controllerAdminUsername'),'/.ssh/authorized_keys')]", + "controllerOSProfilePassword": { + "computerName": "[variables('vmName')]", + "adminUsername": "[variables('controllerAdminUsername')]", + "adminPassword": "[variables('controllerPassword')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/avere/installvfxt.sh\n permissions: \"0744\"\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/avere/enablecloudtrace.sh\n permissions: \"0744\"\n\n')]" + }, + "controllerOSProfileSSHKey": { + "computername": "[variables('vmName')]", + "adminUsername": "[variables('controllerAdminUsername')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/avere/installvfxt.sh\n permissions: \"0744\"\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/avere/enablecloudtrace.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "path": "[variables('sshKeyPath')]", + "keyData": "[variables('controllerSSHKeyData')]" + } + ] + } + } + }, + "controllerOSProfile": "[if(equals(variables('controllerAuthenticationType'),'password'),variables('controllerOSProfilePassword'),variables('controllerOSProfileSSHKey'))]", + "controllerStorageProfile": { + "imageReference": { + "publisher": "microsoft-avere", + "offer": "vfxt", + "sku": "avere-vfxt-controller", + "version": "latest" + } + }, + "vsip": "VSERVER_IPS=", + "mip": "MGMT_IP=" + }, + "resources": [ + { + "apiVersion": "2018-02-01", + "name": "pid-7a86fa6c-a5c7-4f21-b9fa-efa3dcbfbb86", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "condition": "[variables('createVirtualNetwork')]", + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "location": "[resourceGroup().location]", + "properties": { + "publicIPAllocationMethod": "Static" + } + }, + { + "condition": "[variables('createVirtualNetwork')]", + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('networkSecurityGroupName')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "default-allow-ssh", + "properties": { + "priority": 1000, + "sourceAddressPrefix": "*", + "protocol": "Tcp", + "destinationPortRange": "22", + "access": "Allow", + "direction": "Inbound", + "sourcePortRange": "*", + "destinationAddressPrefix": "*" + } + } + ] + } + }, + { + "condition": "[variables('createVirtualNetwork')]", + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('addressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[variables('virtualNetworkSubnetName')]", + "properties": { + "addressPrefix": "[variables('subnetPrefix')]" + } + } + ] + } + }, + { + "condition": "[variables('createNic?')]", + "apiVersion": "2017-10-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[concat('Microsoft.Network/networkSecurityGroups/', variables('networkSecurityGroupName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": "[if(variables('createVirtualNetwork'), variables('pipObject'), json('null'))]", + "subnet": { + "id": "[variables('subnetId')]" + } + } + } + ] + } + }, + { + "apiVersion": "2017-12-01", + "tags": { + "averevfxt": "server" + }, + "type": "Microsoft.Compute/virtualMachines", + "identity": { + "type": "SystemAssigned" + }, + "name": "[variables('vmName')]", + "location": "[resourceGroup().location]", + "plan": { + "name": "avere-vfxt-controller", + "publisher": "microsoft-avere", + "product": "vfxt" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "[variables('controllerVMSize')]" + }, + "osProfile": "[variables('controllerOSProfile')]", + "storageProfile": "[variables('controllerStorageProfile')]", + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" + } + ] + } + } + }, + { + "apiVersion": "2017-09-01", + "name": "[variables('createRoleAssignmentId')]", + "type": "Microsoft.Authorization/roleAssignments", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" + ], + "properties": { + "roleDefinitionId": "[variables('avereCreateClusterRoleFullyQualifiedId')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-12-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]" + } + }, + { + "apiVersion": "2017-09-01", + "name": "[variables('userAdminRoleAssignmentId')]", + "type": "Microsoft.Authorization/roleAssignments", + "dependsOn": [ + "[concat('Microsoft.Authorization/roleAssignments/', variables('createRoleAssignmentId'))]" + ], + "properties": { + "roleDefinitionId": "[variables('userAdminClusterRoleFullyQualifiedId')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-12-01', 'Full').identity.principalId]", + "scope": "[resourceGroup().id]" + } + }, + { + "condition": "[not(variables('createVirtualNetwork'))]", + "apiVersion": "2018-05-01", + "name": "[variables('vnetAssignRoleName')]", + "type": "Microsoft.Resources/deployments", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" + ], + "resourceGroup": "[variables('virtualNetworkResourceGroup')]", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [ + { + "name": "[variables('createVNETRoleAssignmentId')]", + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2017-09-01", + "properties": { + "roleDefinitionId": "[variables('avereCreateClusterRoleFullyQualifiedId')]", + "principalId": "[reference(resourceId('Microsoft.Compute/virtualMachines/', variables('vmName')), '2017-12-01', 'Full').identity.principalId]", + "scope": "[concat(subscription().id, '/resourceGroups/', parameters('virtualNetworkResourceGroup'))]" + } + } + ] + } + } + }, + { + "condition": "[variables('useExtension?')]", + "type": "Microsoft.Compute/virtualMachines/extensions", + "name": "[concat(variables('vmName'), '/configureagent')]", + "apiVersion": "2017-12-01", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Authorization/roleAssignments', variables('userAdminRoleAssignmentId'))]", + "[concat('Microsoft.Resources/deployments/', variables('vnetAssignRoleName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('avereBackedStorageAccountName'))]" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "commandToExecute": "[concat(' ADMIN_PASSWORD=', variables('adminPassword'), variables('environmentVariables'), ' /bin/bash /opt/avere/installvfxt.sh')]" + } + } + }, + { + "condition": "[variables('useAvereBackedStorageAccount')]", + "name": "[variables('avereBackedStorageAccountName')]", + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2017-10-01", + "sku": { + "name": "[variables('storageAccountType')]" + }, + "kind": "[variables('storageAccountKind')]", + "location": "[resourceGroup().location]" + } + ], + "outputs": { + "ssh_string": { + "type": "string", + "value": "[if(variables('createVirtualNetwork'), concat(variables('controllerAdminUsername'), '@', reference(resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))).ipAddress), concat(variables('controllerAdminUsername'), '@', reference(resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))).ipConfigurations[0].properties.privateIPAddress))]" + }, + "resource_group": { + "type": "string", + "value": "[resourceGroup().name]" + }, + "location": { + "type": "string", + "value": "[resourceGroup().location]" + }, + "network_resource_group": { + "type": "string", + "value": "[variables('virtualNetworkResourceGroup')]" + }, + "network": { + "type": "string", + "value": "[variables('virtualNetworkName')]" + }, + "subnet": { + "type": "string", + "value": "[variables('virtualNetworkSubnetName')]" + }, + "subnet_id": { + "type": "string", + "value": "[variables('subnetId')]" + }, + "vserver_ips": { + "type": "string", + "value": "[substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('vsip')),length(variables('vsip'))),indexOf(substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('vsip')),length(variables('vsip')))),'\n'))]" + }, + "mgmt_ip": { + "type": "string", + "value": "[substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('mip')),length(variables('mip'))),indexOf(substring(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,add(indexOf(reference(concat('Microsoft.Compute/virtualMachines/',variables('vmName'),'/extensions/configureagent')).instanceView.statuses[0].message,variables('mip')),length(variables('mip')))),'\n'))]" + } + } +} diff --git a/src/vfxt/src/base-template.json b/src/vfxt/src/base-template.json index 6cf1904b..7c170d41 100644 --- a/src/vfxt/src/base-template.json +++ b/src/vfxt/src/base-template.json @@ -165,6 +165,10 @@ "enableCloudTraceDebugging": { "type": "bool", "defaultValue": false, + "allowedValues": [ + true, + false + ], "metadata": { "description": "When working with Azure Support, set this value to true, otherwise keep as false." } @@ -347,7 +351,7 @@ "apiVersion": "2017-12-01", "tags": { "averevfxt": "server" - }, + }, "type": "Microsoft.Compute/virtualMachines", "identity": { "type": "SystemAssigned" diff --git a/src/vfxt/src/marketplace.zip b/src/vfxt/src/marketplace.zip index 62146ab2..04a3b5c8 100644 Binary files a/src/vfxt/src/marketplace.zip and b/src/vfxt/src/marketplace.zip differ