diff --git a/deploy/az/create-resources.cmd b/deploy/az/linux-vm/create-resources.cmd similarity index 100% rename from deploy/az/create-resources.cmd rename to deploy/az/linux-vm/create-resources.cmd diff --git a/deploy/az/mvparams.json b/deploy/az/linux-vm/mvparams.json similarity index 100% rename from deploy/az/mvparams.json rename to deploy/az/linux-vm/mvparams.json diff --git a/deploy/az/win-vm/azuredeploy.json b/deploy/az/win-vm/azuredeploy.json new file mode 100644 index 000000000..89bf54785 --- /dev/null +++ b/deploy/az/win-vm/azuredeploy.json @@ -0,0 +1,289 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + + "VMName": { + "type": "string", + "metadata": { + "description": "This name will also be used to prefix the network security group, storage, virtual network, network card, subnet and public IP address name." + } + }, + + "adminUsername": { + "type": "string", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + + "dnsNameForPublicIP": { + "type": "string", + "metadata": { + "description": "Unique DNS Name for the Public IP used to access the Virtual Machine." + } + }, + + "newStorageAccountName": { + "type": "string", + "metadata": { + "description": "Storage name for the Virtual Machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_D1", + "metadata": { + "description": "VM Size" + } + } + }, + + "variables": { + "windowsOSVersion": "2016-Datacenter", + "imagePublisher": "MicrosoftWindowsServer", + "imageOffer": "WindowsServer", + "OSDiskName": "[concat(parameters('VMName'),'_osdisk')]", + "nicName": "[concat(parameters('VMName'),'_nic')]", + "addressPrefix": "10.0.0.0/16", + "subnetName": "[concat(parameters('VMName'),'_subnet')]", + "subnetPrefix": "10.0.0.0/24", + "networkSecurityGroupName": "[concat(parameters('VMName'),'_nsg')]", + "storageAccountType": "Standard_LRS", + "publicIPAddressName": "[concat(parameters('VMName'),'_pubip')]", + "publicIPAddressType": "Dynamic", + "vmStorageAccountContainerName": "vhds", + "apiVersion": "2015-05-01-preview", + "virtualNetworkName": "[concat(parameters('VMName'),'_vnet')]", + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", + "subnetRef": "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]" + }, + "resources": [ + + { + "type": "Microsoft.Network/networkSecurityGroups", + "name": "[variables('networkSecurityGroupName')]", + "apiVersion": "[variables('apiVersion')]", + "location": "[resourceGroup().location]", + "properties": { + "securityRules": [ + { + "name": "HTTP", + "properties": { + "description": "HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 100, + "direction": "Inbound" + } + }, + + { + "name": "RDP", + "properties": { + "description": "RDP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "3389", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 200, + "direction": "Inbound" + } + }, + + { + "name": "Docker", + "properties": { + "description": "Docker", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "2375", + "sourceAddressPrefix": "*", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 300, + "direction": "Inbound" + } + } + + ] + } + }, + + { + "type": "Microsoft.Storage/storageAccounts", + "name": "[parameters('newStorageAccountName')]", + "apiVersion": "[variables('apiVersion')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "StorageAccount" + }, + "properties": { + "accountType": "[variables('storageAccountType')]" + } + }, + + { + "apiVersion": "[variables('apiVersion')]", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "PublicIPAddress" + }, + "properties": { + "publicIPAllocationMethod": "[variables('publicIPAddressType')]", + "dnsSettings": { + "domainNameLabel": "[tolower(parameters('dnsNameForPublicIP'))]" + } + } + }, + + { + "apiVersion": "[variables('apiVersion')]", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Network/networkSecurityGroups/', variables('networkSecurityGroupName'))]" + ], + "tags": { + "displayName": "VirtualNetwork" + }, + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('addressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[variables('subnetName')]", + "properties": { + "addressPrefix": "[variables('subnetPrefix')]", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]" + } + } + } + ] + } + }, + + { + "apiVersion": "[variables('apiVersion')]", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "NetworkInterface" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetRef')]" + } + } + } + ] + } + }, + + { + "apiVersion": "[variables('apiVersion')]", + "type": "Microsoft.Compute/virtualMachines", + "name": "[parameters('VMName')]", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "VirtualMachine" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', parameters('newStorageAccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "[parameters('vmSize')]" + }, + "osProfile": { + "computername": "[parameters('VMName')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]" + }, + "storageProfile": { + "imageReference": { + "publisher": "[variables('imagePublisher')]", + "offer": "[variables('imageOffer')]", + "sku": "[variables('windowsOSVersion')]", + "version": "latest" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', parameters('newStorageAccountName')), variables('apiVersion')).primaryEndpoints.blob, variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" + } + ] + } + }, + "resources": [ + { + "name": "containerConfiguration", + "type": "extensions", + "location": "[resourceGroup().location]", + "apiVersion": "2015-06-15", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]" + ], + "tags": { + "displayName": "containerConfiguration" + }, + "properties": { + "publisher": "Microsoft.Compute", + "type": "CustomScriptExtension", + "typeHandlerVersion": "1.2", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [ + "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/windows-server-containers-preview/azure-containers.ps1" + ], + "commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -File azure-containers.ps1 -adminuser ',parameters('adminUsername'))]" + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/deploy/az/win-vm/create-resources.cmd b/deploy/az/win-vm/create-resources.cmd new file mode 100644 index 000000000..b35de9431 --- /dev/null +++ b/deploy/az/win-vm/create-resources.cmd @@ -0,0 +1,3 @@ +REM az group create --name eShopOnAzureDevWin --location westus +az group deployment create --resource-group eShopOnAzureDevWin --parameters @mvparams.json --template-file azuredeploy.json + diff --git a/deploy/az/win-vm/mvparams.json b/deploy/az/win-vm/mvparams.json new file mode 100644 index 000000000..7a2773a54 --- /dev/null +++ b/deploy/az/win-vm/mvparams.json @@ -0,0 +1,7 @@ +{ + "newStorageAccountName": { "value": "eshopsrvmvstoragewin" }, + "adminUsername": { "value": "eshop" }, + "adminPassword": { "value": "Pass@word" }, + "dnsNameForPublicIP": { "value": "eshop-srv-win" }, + "VMName": {"value": "eshop-srv-win"} +}