Como provisionar máquinas virtuais do SQL Server com o Azure PowerShellHow to provision SQL Server virtual machines with Azure PowerShell

Este guia explica as opções para criar VMs do SQL Server do Windows com o Azure PowerShell.This guide explains your options to create Windows SQL Server VMs with Azure PowerShell. Para obter um exemplo do PowerShell do Azure simplificado com mais valores padrão, consulte o início rápido da VM do SQL do Azure PowerShell.For a streamlined Azure PowerShell example with more default values, see the SQL VM Azure PowerShell quickstart.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Observação

Este artigo foi atualizado para usar o novo módulo Az do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Você ainda pode usar o módulo AzureRM, que continuará a receber as correções de bugs até pelo menos dezembro de 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para saber mais sobre o novo módulo Az e a compatibilidade com o AzureRM, confira Apresentação do novo módulo Az do Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obter instruções de instalação do módulo Az, confira Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Configurar sua assinaturaConfigure your subscription

  1. Abra o PowerShell e estabeleça o acesso à sua conta do Azure executando o comando Connect-AzAccount.Open PowerShell and establish access to your Azure account by running the Connect-AzAccount command.

    Connect-AzAccount
    
  2. Você deve ver uma tela para inserir suas credenciais.You should see a screen to enter your credentials. Use o mesmo email e senha usados para entrar no Portal do Azure.Use the same email and password that you use to sign in to the Azure portal.

Definir variáveis de imagemDefine image variables

Para reutilizar valores e simplificar a criação do script, comece definindo um número de variáveis.To reuse values and simplify script creation, start by defining a number of variables. Altere os valores de parâmetro como desejar, mas lembre-se das restrições de nomenclatura relacionadas a tamanhos de nome e a caracteres especiais ao modificar os valores fornecidos.Change the parameter values as you want, but be aware of naming restrictions related to name lengths and special characters when modifying the values provided.

Local e grupo de recursosLocation and resource group

Defina a região de dados e o grupo de recursos no qual você cria os outros recursos da VM.Define the data region and the resource group into which you create the other VM resources.

Modifique conforme desejado e, em seguida, execute estes cmdlets para iniciar essas variáveis.Modify as you want and then run these cmdlets to initialize these variables.

$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"

Propriedades de armazenamentoStorage properties

Defina a conta de armazenamento e o tipo de armazenamento a usar na máquina virtual.Define the storage account and the type of storage to be used by the virtual machine.

Modifique conforme desejado e, então, execute o cmdlet a seguir para iniciar essas variáveis.Modify as you want and then run the following cmdlet to initialize these variables. É recomendável utilizar os SSDs Premium para cargas de trabalho de produção.We recommend using premium SSDs for production workloads.

$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"

Propriedades da redeNetwork properties

Defina as propriedades a usadas pela rede na máquina virtual.Define the properties to be used by the network in the virtual machine.

  • interface de redeNetwork interface
  • Método de alocação de TCP/IPTCP/IP allocation method
  • Nome da rede virtualVirtual network name
  • Nome da sub-rede virtualVirtual subnet name
  • Intervalo de endereços IP para a rede virtualRange of IP addresses for the virtual network
  • Intervalo de endereços IP para a sub-redeRange of IP addresses for the subnet
  • Rótulo do nome de domínio públicoPublic domain name label

Modifique conforme desejado e, em seguida, execute este cmdlet para iniciar essas variáveis.Modify as you want and then run this cmdlet to initialize these variables.

$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$TCPIPAllocationMethod = "Dynamic"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$DomainName = $ResourceGroupName

Propriedades de máquina virtualVirtual machine properties

Defina o nome da máquina virtual, o nome do computador, o tamanho da máquina virtual e o nome do disco do sistema operacional da máquina virtual.Define the virtual machine name, the computer name, the virtual machine size, and the operating system disk name for the virtual machine.

Modifique conforme desejado e, em seguida, execute este cmdlet para iniciar essas variáveis.Modify as you want and then run this cmdlet to initialize these variables.

$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"

Escolha uma imagem do SQL ServerChoose a SQL Server image

Use as seguintes variáveis para definir a imagem do SQL Server a ser usada para a máquina virtual.Use the following variables to define the SQL Server image to use for the virtual machine.

  1. Primeiro, liste todas as ofertas de imagem do SQL Server com o comando Get-AzVMImageOffer.First, list out all of the SQL Server image offerings with the Get-AzVMImageOffer command. Este comando lista as imagens atuais que estão disponíveis no Portal do Azure e as imagens mais antigas que só podem ser instaladas com o PowerShell:This command lists current images that are available in the Azure Portal and also older images that can only be installed with PowerShell:

    Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
    
  2. Para este tutorial, uso as seguintes variáveis para especificar o SQL Server 2017 no Windows Server 2016.For this tutorial, use the following variables to specify SQL Server 2017 on Windows Server 2016.

    $OfferName = "SQL2017-WS2016"
    $PublisherName = "MicrosoftSQLServer"
    $Version = "latest"
    
  3. Em seguida, liste as edições disponíveis para a sua oferta.Next, list the available editions for your offer.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. Para este tutorial, use o edição do Desenvolvedor do SQL Server 2017 (SQLDEV).For this tutorial, use the SQL Server 2017 Developer edition (SQLDEV). A edição Developer é licenciada livremente para teste e desenvolvimento, e você só paga o custo da execução da VM.The Developer edition is freely licensed for testing and development, and you only pay for the cost of running the VM.

    $Sku = "SQLDEV"
    

Criar um grupo de recursosCreate a resource group

Com o modelo de implantação do Gerenciador de Recursos, o primeiro objeto criado por você é o grupo de recursos.With the Resource Manager deployment model, the first object that you create is the resource group. Use o cmdlet New-AzResourceGroup para criar um grupo de recursos do Azure e seus recursos.Use the New-AzResourceGroup cmdlet to create an Azure resource group and its resources. Especifique as variáveis iniciadas anteriormente para o nome e o local do grupo de recursos.Specify the variables that you previously initialized for the resource group name and location.

Execute este cmdlet para criar um novo grupo de recursos.Run this cmdlet to create your new resource group.

New-AzResourceGroup -Name $ResourceGroupName -Location $Location

Criar uma conta de armazenamentoCreate a storage account

A máquina virtual exige recursos de armazenamento para o disco do sistema operacional para os arquivos de log de dados do SQL Server.The virtual machine requires storage resources for the operating system disk and for the SQL Server data and log files. Para simplificar, você criará um único disco para ambos.For simplicity, you'll create a single disk for both. É possível anexar discos adicionais posteriormente usando o cmdlet Add-Azure Disk para colocar seus dados do SQL Server e os arquivo de log em discos dedicados.You can attach additional disks later using the Add-Azure Disk cmdlet to place your SQL Server data and log files on dedicated disks. Use o cmdlet New-AzStorageAccount para criar uma conta de Armazenamento Standard em seu novo grupo de recursos.Use the New-AzStorageAccount cmdlet to create a standard storage account in your new resource group. Especifique as variáveis iniciadas anteriormente para o nome de conta de armazenamento, nome da SKU de armazenamento e local.Specify the variables that you previously initialized for the storage account name, storage Sku name, and location.

Execute este cmdlet para criar sua nova conta de armazenamento.Run this cmdlet to create your new storage account.

$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
   -Name $StorageName -SkuName $StorageSku `
   -Kind "Storage" -Location $Location

Dica

Criar uma conta de armazenamento pode demorar alguns minutos.Creating the storage account can take a few minutes.

Criar recursos da redeCreate network resources

A máquina virtual requer um número de recursos de rede para conectividade de rede.The virtual machine requires a number of network resources for network connectivity.

  • Cada máquina virtual exige um rede virtual.Each virtual machine requires a virtual network.
  • Uma rede virtual deve ter pelo menos uma sub-rede definida.A virtual network must have at least one subnet defined.
  • Uma interface de rede deve ser definida com um público ou um endereço IP privado.A network interface must be defined with either a public or a private IP address.

Criar uma configuração de sub-rede da rede virtualCreate a virtual network subnet configuration

Comece criando uma configuração de sub-rede para a sua rede virtual.Start by creating a subnet configuration for your virtual network. Para este tutorial, crie uma sub-rede padrão usando o cmdlet New-AzVirtualNetworkSubnetConfig.For this tutorial, create a default subnet using the New-AzVirtualNetworkSubnetConfig cmdlet. Especifique as variáveis iniciadas anteriormente para o nome de sub-rede e o prefixo de endereço.Specify the variables that you previously initialized for the subnet name and address prefix.

Observação

Você pode definir propriedades adicionais da configuração de sub-rede da rede virtual usando esse cmdlet, mas isso está além do escopo deste tutorial.You can define additional properties of the virtual network subnet configuration using this cmdlet, but that is beyond the scope of this tutorial.

Execute este cmdlet para criar a configuração de sub-rede virtual.Run this cmdlet to create your virtual subnet configuration.

$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix

Criar uma rede virtualCreate a virtual network

Em seguida, crie sua rede virtual no grupo de recursos usando o cmdlet New-AzVirtualNetwork.Next, create your virtual network in your new resource group using the New-AzVirtualNetwork cmdlet. Especifique as variáveis iniciadas anteriormente para nome, local e prefixo de endereço.Specify the variables that you previously initialized for the name, location, and address prefix. Use a configuração de sub-rede definida na etapa anterior.Use the subnet configuration that you defined in the previous step.

Execute este cmdlet para criar sua rede virtual.Run this cmdlet to create your virtual network.

$VNet = New-AzVirtualNetwork -Name $VNetName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig

Criar um endereço IP públicoCreate the public IP address

Agora que a sua rede virtual está definida, é preciso configurar um endereço IP para a conectividade com a máquina virtual.Now that your virtual network is defined, you must configure an IP address for connectivity to the virtual machine. Para este tutorial, crie um endereço IP público usando o endereçamento IP dinâmico para dar suporte à conectividade de Internet.For this tutorial, create a public IP address using dynamic IP addressing to support Internet connectivity. Use o cmdlet New-AzPublicIpAddress para criar o endereço IP público em seu novo grupo de recursos.Use the New-AzPublicIpAddress cmdlet to create the public IP address in your new resource group. Especifique as variáveis iniciadas anteriormente para nome, local, método de alocação e rótulo do nome de domínio DNS.Specify the variables that you previously initialized for the name, location, allocation method, and DNS domain name label.

Observação

Você pode definir propriedades adicionais do endereço IP público usando esse cmdlet, mas isso está além do escopo deste tutorial.You can define additional properties of the public IP address using this cmdlet, but that is beyond the scope of this initial tutorial. Você também pode criar um endereço particular ou um endereço com um endereço estático, mas isso também está além do escopo deste tutorial.You could also create a private address or an address with a static address, but that is also beyond the scope of this tutorial.

Execute este cmdlet para criar seu endereço IP público.Run this cmdlet to create your public IP address.

$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName

Crie o grupo de segurança de redeCreate the network security group

Para proteger o tráfego do SQL Server e da VM, cria um grupo de segurança de rede.To secure the VM and SQL Server traffic, create a network security group.

  1. Primeiro, crie uma regra de grupo de segurança de rede para RDP para permitir conexões à área de trabalho remota.First, create a network security group rule for RDP to allow remote desktop connections.

    $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
       -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
  2. Configure uma regra de grupo de segurança de rede que permita tráfego na porta TCP 1433.Configure a network security group rule that allows traffic on TCP port 1433. Fazer isso habilita as conexões ao SQL Server pela Internet.Doing so enables connections to SQL Server over the internet.

    $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
       -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  3. Crie o grupo de segurança de rede.Create the network security group.

    $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName `
       -Location $Location -Name $NsgName `
       -SecurityRules $NsgRuleRDP,$NsgRuleSQL
    

Criar a interface de redeCreate the network interface

Agora está tudo pronto para criar a interface de rede para a sua máquina virtual.You're now ready to create the network interface for your virtual machine. Use o cmdlet New-AzNetworkInterface para criar o adaptador de rede no novo grupo de recursos.Use the New-AzNetworkInterface cmdlet to create your network interface in your new resource group. Especifique o nome, o local, a sub-rede e o endereço IP público definidos anteriormente.Specify the name, location, subnet, and public IP address previously defined.

Execute este cmdlet para criar a interface de rede.Run this cmdlet to create your network interface.

$Interface = New-AzNetworkInterface -Name $InterfaceName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
   -NetworkSecurityGroupId $Nsg.Id

Configurar um objeto da VMConfigure a VM object

Agora que os recursos de rede e de armazenamento estão definidos, está tudo pronto para definir os recursos de computação para a máquina virtual.Now that storage and network resources are defined, you're ready to define compute resources for the virtual machine.

  • Especifique o tamanho da máquina virtual e as várias propriedades do sistema operacional.Specify the virtual machine size and various operating system properties.
  • Especifique a interface de rede criada anteriormente.Specify the network interface that you previously created.
  • Defina o armazenamento de blob.Define blob storage.
  • Especifique o disco do sistema operacional.Specify the operating system disk.

Criar o objeto da VMCreate the VM object

Começamos especificando o tamanho da máquina virtual.Start by specifying the virtual machine size. Para este tutorial, especifique uma DS13.For this tutorial, specify a DS13. Use o cmdlet New-AzVMConfig para criar um objeto de máquina virtual configurável.Use the New-AzVMConfig cmdlet to create a configurable virtual machine object. Especifique as variáveis iniciadas anteriormente para nome e tamanho.Specify the variables that you previously initialized for the name and size.

Execute este cmdlet para criar o objeto da máquina virtual.Run this cmdlet to create the virtual machine object.

$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize

Criar um objeto de credencial para armazenar o nome e a senha para as credenciais de administrador localCreate a credential object to hold the name and password for the local administrator credentials

Antes de definir as propriedades de sistema operacional da máquina virtual, é preciso fornecer as credenciais da conta de administrador local como uma cadeia de caracteres segura.Before you can set the operating system properties for the virtual machine, you must supply the credentials for the local administrator account as a secure string. Para fazer isso, usamos o cmdlet Get-Credential.To accomplish this, use the Get-Credential cmdlet.

Execute o cmdlet a seguir e, na janela de solicitação de credenciais do PowerShell, digite o nome e a senha a usar para a conta de administrador local na máquina virtual.Run the following cmdlet and, in the PowerShell credential request window, type the name and password to use for the local administrator account in the virtual machine.

$Credential = Get-Credential -Message "Type the name and password of the local administrator account."

Definir as propriedades de sistema operacional da máquina virtualSet the operating system properties for the virtual machine

Agora, está tudo pronto para definir as propriedades do sistema operacional da máquina virtual com o cmdlet Set-AzVMOperatingSystem.Now you're ready to set the virtual machine's operating system properties with the Set-AzVMOperatingSystem cmdlet.

  • Defina o tipo de sistema operacional como Windows.Set the type of operating system as Windows.
  • Exija que o agente de máquina virtual seja instalado.Require the virtual machine agent to be installed.
  • Especifique que o cmdlet habilite a atualização automática.Specify that the cmdlet enables auto update.
  • Especifique as variáveis iniciadas anteriormente para o nome da máquina virtual, o nome do computador e a credencial.Specify the variables that you previously initialized for the virtual machine name, the computer name, and the credential.

Execute este cmdlet para definir as propriedades do sistema operacional de sua máquina virtual.Run this cmdlet to set the operating system properties for your virtual machine.

$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine `
   -Windows -ComputerName $ComputerName -Credential $Credential `
   -ProvisionVMAgent -EnableAutoUpdate

Adicionar a interface de rede à máquina virtualAdd the network interface to the virtual machine

Em seguida, use o cmdlet Add-AzVMNetworkInterface para adicionar o adaptador de rede usando a variável definida anteriormente.Next, use the Add-AzVMNetworkInterface cmdlet to add the network interface using the variable that you defined earlier.

Execute este cmdlet para definir a interface de rede de sua máquina virtual.Run this cmdlet to set the network interface for your virtual machine.

$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id

Definir o local de armazenamento de blobs para o disco a ser usado pela máquina virtualSet the blob storage location for the disk to be used by the virtual machine

Em seguida, defina o local de armazenamento de blobs para o disco da VM usando as variáveis definidas anteriormente.Next, set the blob storage location for the VM's disk using the variables that you defined earlier.

Execute este cmdlet para definir o local de armazenamento de blobs.Run this cmdlet to set the blob storage location.

$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"

Definir as propriedades de disco do sistema operacional para a máquina virtualSet the operating system disk properties for the virtual machine

Em seguida, defina as propriedades de disco do sistema operacional da máquina virtual usando o cmdlet Set-AzVMOSDisk.Next, set the operating system disk properties for the virtual machine using the Set-AzVMOSDisk cmdlet.

  • Especifique que o sistema operacional da máquina virtual virá de uma imagem.Specify that the operating system for the virtual machine will come from an image.
  • Defina o cache para somente leitura (pois o SQL Server está sendo instalado no mesmo disco).Set caching to read only (because SQL Server is being installed on the same disk).
  • Especifique as variáveis iniciadas anteriormente para o nome da VM e o disco do sistema operacional.Specify the variables that you previously initialized for the VM name and the operating system disk.

Execute este cmdlet para definir as propriedades de disco do sistema operacional da sua máquina virtual.Run this cmdlet to set the operating system disk properties for your virtual machine.

$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name `
   $OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage

Especificar a imagem da plataforma para a máquina virtualSpecify the platform image for the virtual machine

A última etapa da configuração é especificar a imagem da plataforma da sua máquina virtual.The last configuration step is to specify the platform image for your virtual machine. Neste tutorial, use a imagem mais recente do SQL Server 2016 CTP.For this tutorial, use the latest SQL Server 2016 CTP image. Use o cmdlet Set-AzVMSourceImage para usar essa imagem com as variáveis definidas anteriormente.Use the Set-AzVMSourceImage cmdlet to use this image with the variables that you defined earlier.

Execute este cmdlet para especificar a imagem da plataforma da sua máquina virtual.Run this cmdlet to specify the platform image for your virtual machine.

$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine `
   -PublisherName $PublisherName -Offer $OfferName `
   -Skus $Sku -Version $Version

Criar a VM de SQLCreate the SQL VM

Agora que você concluiu as etapas de configuração, está tudo pronto para criar a máquina virtual.Now that you've finished the configuration steps, you're ready to create the virtual machine. Use o cmdlet New-AzVM para criar a máquina virtual usando as variáveis definidas.Use the New-AzVM cmdlet to create the virtual machine using the variables that you defined.

Dica

A criação da VM pode levar alguns minutos.Creating the VM can take a few minutes.

Execute este cmdlet para criar a sua máquina virtual.Run this cmdlet to create your virtual machine.

New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine

A máquina virtual é criada.The virtual machine is created.

Observação

Se você receber um erro sobre o diagnóstico de inicialização, ignore-o.If you get an error about boot diagnostics, you can ignore it. Uma conta de armazenamento padrão é criada para o diagnóstico de inicialização, pois a conta de armazenamento especificada para o disco da máquina virtual é uma conta de armazenamento premium.A standard storage account is created for boot diagnostics because the specified storage account for the virtual machine's disk is a premium storage account.

Instalar o SQL IaaS AgentInstall the SQL Iaas Agent

As máquinas virtuais do SQL Server suportam funcionalidades de gerenciamento automático com a Extensão SQL Server IaaS Agent.SQL Server virtual machines support automated management features with the SQL Server IaaS Agent Extension. Para instalar o agente na nova VM, execute o seguinte comando após sua criação.To install the agent on the new VM, run the following command after it's created.

Set-AzVMSqlServerExtension -ResourceGroupName $ResourceGroupName -VMName $VMName -name "SQLIaasExtension" -version "1.2" -Location $Location

Parar ou remover uma máquina virtualStop or remove a VM

Caso não precise que a VM seja executada continuamente, é possível evitar encargos desnecessários interrompendo-a quando não estiver em uso.If you don't need the VM to run continuously, you can avoid unnecessary charges by stopping it when not in use. O comando a seguir interrompe a VM, mas a deixa disponível para uso futuro.The following command stops the VM but leaves it available for future use.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

Também é possível excluir permanentemente todos os recursos associados à máquina virtual com o comando Remove-AzResourceGroup.You can also permanently delete all resources associated with the virtual machine with the Remove-AzResourceGroup command. Essa ação também excluirá a máquina virtual permanentemente; portanto, use esse comando com cuidado.Doing so permanently deletes the virtual machine as well, so use this command with care.

Script de exemploExample script

O script a seguir contém o script completo do PowerShell para este tutorial.The following script contains the complete PowerShell script for this tutorial. Ele pressupõe que você já configurou a assinatura do Azure para uso com os comandos Connect-AzAccount e Select-AzSubscription.It assumes that you have already set up the Azure subscription to use with the Connect-AzAccount and Select-AzSubscription commands.

# Variables

## Global
$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"

## Storage
$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"

## Network
$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$TCPIPAllocationMethod = "Dynamic"
$DomainName = $ResourceGroupName

##Compute
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"

##Image
$PublisherName = "MicrosoftSQLServer"
$OfferName = "SQL2017-WS2016"
$Sku = "SQLDEV"
$Version = "latest"

# Resource Group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location

# Storage
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageName -SkuName $StorageSku -Kind "Storage" -Location $Location

# Network
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
$VNet = New-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
$NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
$NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
$Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $Location -Name $NsgName -SecurityRules $NsgRuleRDP,$NsgRuleSQL
$Interface = New-AzNetworkInterface -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id -NetworkSecurityGroupId $Nsg.Id

# Compute
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
$Credential = Get-Credential -Message "Type the name and password of the local administrator account."
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate #-TimeZone = $TimeZone
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage

# Image
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version

# Create the VM in Azure
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine

# Add the SQL IaaS Extension
Set-AzVMSqlServerExtension -ResourceGroupName $ResourceGroupName -VMName $VMName -name "SQLIaasExtension" -version "1.2" -Location $Location

Próximas etapasNext steps

Depois que a máquina virtual for criada, você pode:After the virtual machine is created, you can: