Usar o PowerShell para criar uma VM do SQL Server no Azure
Aplica-se a:Instância Gerenciada de SQL do Azure
Este exemplo de script do PowerShell cria uma VM (máquina virtual) do Windows SQL Server no Azure.
Usar o Azure Cloud Shell
O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção | Exemplo/Link |
---|---|
Selecione Experimente no canto superior direito de um bloco de código. Selecionar Experimente não copia automaticamente o código para o Cloud Shell. | |
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. | |
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. |
Para executar o código neste artigo no Azure Cloud Shell:
Inicie o Cloud Shell.
Clique no botão Copiar no bloco de código para copiá-lo.
Cole o código na sessão do Cloud Shell pressionando Ctrl+Shift+V no Windows e no Linux ou selecionando Cmd+Shift+V no macOS.
Pressione Enter para executar o código.
Quando você opta por instalar e usar o PowerShell localmente, este tutorial exige o Azure PowerShell 1.4.0 ou posterior. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount
para criar uma conexão com o Azure.
Definir variáveis
$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"
$StorageName = "sqlvm" + "storage"
$StorageSku = "Premium_LRS"
$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
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
$OfferName = "SQL2022-WS2022"
$PublisherName = "MicrosoftSQLServer"
$Version = "latest"
$Sku = "SQLDEV-GEN2"
$License = 'PAYG'
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Exemplo de script
# Set subscription context
Connect-AzAccount
$subscriptionContextParams = @{
SubscriptionId = $SubscriptionId
}
Set-AzContext @subscriptionContextParams
# Create a resource group
$resourceGroupParams = @{
Name = $resourceGroupName
Location = $Location
Tag = @{Owner="SQLDocs-Samples"}
}
$resourceGroup = New-AzResourceGroup @resourceGroupParams
# Create storage account
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
-Name $StorageName -SkuName $StorageSku `
-Kind "Storage" -Location $Location
# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
# Create a network security group rule
$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
# Create a network security group
$Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName `
-Location $Location -Name $NsgName `
-SecurityRules $NsgRuleRDP,$NsgRuleSQL
# Create a network interface
$Interface = New-AzNetworkInterface -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
-NetworkSecurityGroupId $Nsg.Id
# Create a virtual machine configuration
$VMName = $ResourceGroupName + "VM"
$VMConfig = New-AzVMConfig -VMName $VMName -VMSize $VMSize |
Set-AzVMOperatingSystem -Windows -ComputerName $VMName -Credential $Cred -ProvisionVMAgent -EnableAutoUpdate |
Set-AzVMSourceImage -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version |
Add-AzVMNetworkInterface -Id $Interface.Id
# Create the VM
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VMConfig
# Register the SQL IaaS Agent extension to your subscription
Register-AzResourceProvider -ProviderNamespace Microsoft.SqlVirtualMachine
# Register SQL Server VM with the extension
New-AzSqlVM -Name $VMName -ResourceGroupName $ResourceGroupName -Location $Location `
-LicenseType $License
Limpar a implantação
Use o comando a seguir para remover o grupo de recursos e todos os recursos associados a ele.
# Clean up deployment
# Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName
# Remove-AzResourceGroup -ResourceGroupName $ResourceGroupName
Explicação sobre o script
O script neste artigo usa os seguintes comandos:
Comando | Observações |
---|---|
Get-AzVMImageOffer | Lista todas as imagens de VM do Azure. |
Get-AzVMImageSku | Lista os SKUs para uma oferta específica. |
New-AzResourceGroup | Cria um grupo de recursos no qual todos os recursos são armazenados. |
New-AzStorageAccount | Cria uma nova conta de armazenamento do Azure. |
New-AzVirtualNetworkSubnetConfig | Cria e configura uma nova sub-rede. |
New-AzVirtualNetwork | Cria uma rede virtual. |
New-AzPublicIpAddress | Cria um endereço IP público. |
New-AzNetworkSecurityGroup | Cria um novo grupo de segurança. |
New-AzNetworkInterface | Cria um adaptador de rede. |
New-AzVMConfig | Cria um objeto de máquina virtual configurável. |
Add-AzVMNetworkInterface | Adiciona uma interface de rede a uma máquina virtual. |
Register-AzResourceProvider | Registra um provedor de recursos. |
New-AzSqlVM | Cria ou atualiza um recurso de máquina virtual do SQL. |
Stop-AzVM | Interrompe uma máquina virtual do Azure. |
Remove-AzResourceGroup | Remove um grupo de recursos no Azure. |
Conteúdo relacionado
Para obter mais informações sobre o Azure PowerShell, confira a Documentação do Azure PowerShell.