Exercício – Criar um Recurso do Azure usando scripts do Azure PowerShell
Lembre-se de nosso cenário original: a criação de VMs para testar nosso software de CRM. Quando houver um novo build disponível, criaremos uma VM para testar a experiência de instalação completa de uma imagem limpa. Quando terminarmos, queremos excluir a VM.
Vamos experimentar os comandos para criar uma VM.
Criar uma VM do Linux com o Azure PowerShell
Como estamos utilizando a Área Restrita do Azure, não é necessário criar um grupo de recursos. Em vez disso, utilize o grupo de recursos
Vamos criar uma nova VM do Azure com o PowerShell.
Use o cmdlet
New-AzVm
para criar uma VM.Usar o grupo de recursos
[nome do grupo de recursos da Área Restrita] .Dê um nome à VM. No geral, é interessante usar algo significativo que identifique a finalidade da VM, a localização e o número da instância (se houver mais de uma). Utilizamos "testvm-eus-01" para a "VM de teste no leste dos EUA, instância 1". Crie seu próprio nome com base no local em que você coloca a VM.
Selecione uma localização perto de você na lista a seguir disponível na área restrita do Azure. Altere o valor no comando de exemplo a seguir se estiver usando a opção copiar e colar.
- westus2
- southcentralus
- centralus
- eastus
- westeurope
- southeastasia
- japaneast
- brazilsouth
- australiasoutheast
- centralindia
Use "Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest" para a imagem. Esta imagem é Ubuntu Linux.
Use o cmdlet
Get-Credential
e insira os resultados no parâmetroCredential
.Importante
Confira as Perguntas frequentes sobre a VM do Linux para conhecer as restrições de nome de usuário e senha. As senhas precisam ter de 12 a 123 caracteres e atender a três dos quatro requisitos de complexidade abaixo:
- Ter caracteres minúsculos
- Ter caracteres maiúsculos
- Ter um dígito
- Ter um caractere especial (Correspondência de regex [\W_])
Adicione o parâmetro
-OpenPorts
e passe "22" como a porta. Essa porta nos permite acessar o computador por SSH.Crie um nome de endereço IP público. Utilize esse nome para criar e encontrar seu endereço IP estático para entrar no computador.
New-AzVm -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "testvm-eus-01" -Credential (Get-Credential) -Location "eastus" -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest -OpenPorts 22 -PublicIpAddressName "testvm-eus-01"
Dica
Use o botão Copiar para copiar os comandos para a área de transferência. Para colar o conteúdo, clique com o botão direito do mouse em uma nova linha no terminal do Cloud Shell e selecione Colar ou use o atalho de teclado Shift + Insert (⌘ + V no macOS).
Crie um nome de usuário e uma senha e pressione Enter. O PowerShell começa a criar sua VM.
A criação da VM leva alguns minutos para ser concluída. Quando terminar, você poderá consultá-lo e atribuir o objeto da VM a uma variável (
$vm
).$vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
Consulte o valor para despejar as informações sobre a VM.
$vm
Você deve ver algo semelhante à seguinte saída:
ResourceGroupName : <rgn>[sandbox resource group name]</rgn> Id : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01 VmId : 00000000-0000-0000-0000-000000000000 Name : testvm-eus-01 Type : Microsoft.Compute/virtualMachines Location : eastus Tags : {} HardwareProfile : {VmSize} NetworkProfile : {NetworkInterfaces} OSProfile : {ComputerName, AdminUsername, LinuxConfiguration, Secrets} ProvisioningState : Succeeded StorageProfile : {ImageReference, OsDisk, DataDisks}
Você pode acessar objetos complexos por meio de uma notação de ponto (
.
). Por exemplo, para ver as propriedades no objetoVMSize
associado à seção HardwareProfile, execute o seguinte comando:$vm.HardwareProfile
Ou, para obter informações sobre um dos discos, execute o seguinte comando:
$vm.StorageProfile.OsDisk
Você também pode passar o objeto de VM para outros cmdlets. Por exemplo, a execução do comando a seguir mostra todos os tamanhos disponíveis para sua VM:
$vm | Get-AzVMSize
Agora, execute o seguinte comando para obter o endereço IP público:
az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
Com o endereço IP, você pode se conectar à VM com SSH. Por exemplo, se você utilizou o nome de usuário
bob
e o endereço IP é205.22.16.5
, a execução desse comando conectará o computador Linux:ssh bob@205.22.16.5
Para sair, digite
exit
.
Excluir uma VM
Para testar mais alguns comandos, excluiremos a VM. Primeiro, precisamos desligar o sistema (insira Y se for solicitado a continuar):
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Quando a VM tiver parada, exclua a VM executando o cmdlet Remove-AzVM
(insira Y se for solicitado a continuar):
Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Execute este comando para listar todos os recursos em seu grupo de recursos:
Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table
Você deverá ver vários recursos (discos, redes virtuais, etc.) que ainda existem.
Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks
O comando Remove-AzVM
apenas exclui a VM. Ele não limpa nenhum outro recurso. Neste ponto, bastaria apenas excluir o grupo de recursos e pronto. No entanto, vamos executar as etapas de limpeza manual como um exercício. Você deverá observar um padrão nos comandos.
Exclua o adaptador de rede:
$vm | Remove-AzNetworkInterface –Force
Exclua os discos do sistema operacional gerenciado:
Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
Em seguida, exclua a rede virtual:
Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
Exclua o grupo de segurança de rede:
Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
Exclua o endereço IP público:
Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress -Force
Devemos ter capturado todos os recursos criados. Verifique o grupo de recursos apenas para ter certeza. Realizamos muitos comandos manuais aqui, mas uma abordagem melhor seria escrever um script. Em seguida, podemos reutilizar essa lógica posteriormente para criar ou excluir uma VM. Vamos analisar o script com o PowerShell.