Post

[Azure-To] #2 Deploy de Máquina Virtual [PowerShell]

Fala galera! Seis tão baum?

Seguindo com nossa série Azure-To no post anterior você aprendeu como criar uma máquina virtual via Portal Azure. Agora, vamos fazer o mesmo deploy utilizando o Azure PowerShell.

A princípio pode parecer uma pouco complicado, especialmente se você está começando agora e ainda não é familiarizado com o PowerShell, mas se você pretente trabalhar com Azure no dia a dia, você realmente precisa começar a usar o PowerShell.

Objetivo

Implantar uma VM executando Windows Server 2016 Datacenter via PowerShell.

Para o deploy de nossa VM vamos:

  • Criar um resource group
  • Criar uma virtual network e uma subnet
  • Criar um network security group e as regras para acesso a nossa VM.
  • Criar uma virtual machine com o sistema operacional Windows Server 2016

Vou apresentar a vocês os comandos em forma de script, eu prefiro trabalhar desta maneira, pois posso guardar as variáveis e dependendo da minha necessidade eu só modifico os parâmetros, não é necessário alterar os comandos e isso automatiza e agilza demais meu dia a dia.

Mas claro, nada lhe impede de utilizar os comandos de forma direta e sem variáveis.

Para o deploy você pode utilizar o Cloud Shell direto do Portal da azure ou diretamente da sua máquina utilizando o Power Shell com os modulos da Azure instalado.

Vamos lá!

1.1 Definindo as variáveis de rede

1
2
3
4
5
6
7
$ResourceGroup  = "lab01-RG"
$Location       = "EastUS"
$vNetName       = "lab01-RG-vnet"
$AddressSpace   = "10.0.0.0/16"
$SubnetIPRange  = "10.0.0.0/24" 
$SubnetName     = "subnet0"
$nsgName        = "lab01-RG-nsg"

2.1 Criando o Resource Groups

1
New-AzResourceGroup -Name $ResourceGroup -Location $Location

3.1 Criando a Virtual Network

1
$vNetwork = New-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName -AddressPrefix $AddressSpace -Location $location

3.2 Criando a Subnet

1
Add-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNetwork -AddressPrefix $SubnetIPRange

3.3 Setando as configurações

1
Set-AzVirtualNetwork -VirtualNetwork $vNetwork

4.1 Criando o Network Security Group

1
2
$nsgRuleVMAccess = New-AzNetworkSecurityRuleConfig -Name 'allow-vm-access' -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Location $location -Name $nsgName -SecurityRules $nsgRuleVMAccess

Perceba que neste comando já estamos criando uma regra de inbound com a priority 100 e destino a porta 3389. Assim já teremos o acesso remoto habilitado na criação da VM.

5.1 Definindo as variáveis da máquina virtual

1
2
3
4
5
6
7
8
9
10
11
12
$vNet   = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$nsg    = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NsgName
$vmName = "lab01-vm0"
$pubName    = "MicrosoftWindowsServer"
$offerName  = "WindowsServer"
$skuName    = "2016-Datacenter"
$vmSize     = "Standard_DS2_v2"
$pipName    = "$vmName-pip" 
$nicName    = "$vmName-nic"
$osDiskName = "$vmName-OsDisk"
$osDiskType = "Standard_LRS"

6.1 Definindo as credinciais de administrador

1
2
3
$adminUsername = 'labuser'
$adminPassword = 'Jn77a.lb1234'
$adminCreds    = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force)

7.1 Criando IP público e interface de rede NIC

1
2
$pip = New-AzPublicIpAddress -Name $pipName -ResourceGroupName $ResourceGroup -Location $location -AllocationMethod Static 
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Subnet.Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

8.1 Adicionando as configurações da máquina virtual

1
2
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id

9.1 Setando os parâmetros do sistema operacional

1
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCredsd

10.1 Setando a imagem utilizada na máquina virtual

1
Set-AzVMSourceImage -VM $vmConfig -PublisherName $pubName -Offer $offerName -Skus $skuName -Version 'latest'

11.1 Setando as configurações de disco

1
Set-AzVMOSDisk -VM $vmConfig -Name $osDiskName -StorageAccountType $osDiskType -CreateOption fromImage

12.1 Desabilitando o diagnóstico de boot

1
Set-AzVMBootDiagnostic -VM $vmConfig -Disable

13.1 Criando a máquina virtual

1
New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $vmConfig

É isso, agora é só aguardar o provisionamento de sua VM.

Você pode juntar todos os comandos em um único arquivo e ir alterando as variáveis de acordo com suas necessidades.

Você também consegue utilizar este mesmo script para o deploy de máquinas virtuais Linux, porém é necessário alguns ajustes.

Caso seja de interesse, postem nos comentários que disponibilizo um script já modificado.

Espero que gostem!

Forte Abraço

Este post está licenciado sob CC BY 4.0 e pelo autor.