Ćwiczenie — tworzenie zasobu platformy Azure za pomocą skryptów w programie Azure PowerShell

Ukończone

Przypomnij sobie nasz oryginalny scenariusz: tworzenie maszyn wirtualnych w celu przetestowania oprogramowania CRM. Po udostępnieniu nowej kompilacji chcemy uruchomić nową maszynę wirtualną, aby przetestować środowisko pełnej instalacji za pomocą czystego obrazu. Po zakończeniu chcemy usunąć maszynę wirtualną.

Wypróbujmy polecenia, aby utworzyć maszynę wirtualną.

Tworzenie maszyny wirtualnej z systemem Linux przy użyciu programu Azure PowerShell

Ponieważ używamy piaskownicy platformy Azure, nie musisz tworzyć grupy zasobów. Zamiast tego użyj grupy zasobów [nazwa grupy zasobów piaskownicy]. Ponadto pamiętaj o ograniczeniach dotyczących lokalizacji.

Utwórzmy nową maszynę wirtualną platformy Azure przy użyciu programu PowerShell.

  1. Użyj polecenia cmdlet New-AzVm, aby utworzyć maszynę wirtualną.

    • Użyj grupy zasobów [nazwa grupy zasobów piaskownicy].

    • Nazwij maszynę wirtualną. Zazwyczaj chcesz użyć czegoś znaczącego, który identyfikuje cele maszyny wirtualnej, lokalizacji i (jeśli istnieje więcej niż jeden) numer wystąpienia. Używamy polecenia "testvm-eus-01" dla maszyny wirtualnej testowej w regionie Wschodnie stany USA, wystąpienie 1. Wprowadź własną nazwę na podstawie miejsca, w którym umieszczasz maszynę wirtualną.

    • Wybierz lokalizację znajdującą się blisko Ciebie z poniższej listy, która jest dostępna w piaskownicy platformy Azure. Pamiętaj, aby zmienić wartość w poniższym przykładowym poleceniu, jeśli używasz funkcji kopiowania i wklejania.

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Użyj polecenia "Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest" dla obrazu. Ten obraz to Ubuntu Linux.

    • Użyj polecenia cmdlet Get-Credential i przekaż wyniki do parametru Credential.

      Ważne

      Zobacz Często zadawane pytania dotyczące maszyny wirtualnej z systemem Linux, aby uzyskać informacje o ograniczeniach nazwy użytkownika i hasła. Hasła muszą mieć długość od 12 do 123 znaków i spełniać trzy z następujących czterech wymagań dotyczących złożoności:

      • Ma małe litery
      • Mają wielkie litery
      • Musi zawierać cyfrę
      • Musi zawierać znak specjalny (zgodność wyrażenia regularnego [\W_])
    • -OpenPorts Dodaj parametr i przekaż wartość "22" jako port. Ten port umożliwia połączenie SSH z maszyną.

    • Utwórz nazwę publicznego adresu IP. Ta nazwa służy do tworzenia i znajdowania statycznego adresu IP w celu zalogowania się na maszynie.

    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"
    

    Napiwek

    Do kopiowania poleceń do schowka możesz używać przycisku Kopiuj. Aby wkleić, kliknij prawym przyciskiem myszy nowy wiersz w terminalu usługi Cloud Shell i wybierz polecenie Wklej lub użyj skrótu klawiaturowego Shift+Insert (⌘+V w systemie macOS).

  2. Utwórz nazwę użytkownika i hasło, a następnie naciśnij klawisz Enter. Program PowerShell rozpoczyna tworzenie maszyny wirtualnej.

  3. Tworzenie maszyny wirtualnej trwa kilka minut. Gdy wszystko będzie gotowe, możesz wysłać do niego zapytanie i przypisać obiekt maszyny wirtualnej do zmiennej ($vm).

    $vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
    
  4. Wykonaj zapytanie o wartość, aby zrzucić informacje o maszynie wirtualnej.

    $vm
    

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

    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}
    
  5. Możesz uzyskać dostęp do złożonych obiektów za pomocą notacji kropkowej (.). Aby na przykład wyświetlić właściwości obiektu skojarzonego VMSize z sekcją HardwareProfile, uruchom następujące polecenie:

    $vm.HardwareProfile
    
  6. Aby uzyskać informacje na jednym z dysków, uruchom następujące polecenie:

    $vm.StorageProfile.OsDisk
    
  7. Można nawet przekazać obiekt maszyny wirtualnej do innych poleceń cmdlet. Na przykład uruchomienie następującego polecenia pokazuje wszystkie dostępne rozmiary maszyny wirtualnej:

    $vm | Get-AzVMSize
    
  8. Teraz uruchom następujące polecenie, aby uzyskać publiczny adres IP:

    az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
    
  9. Za pomocą adresu IP możesz połączyć się z maszyną wirtualną przy użyciu protokołu SSH. Jeśli na przykład użyto nazwy użytkownika bob, a adres IP to 205.22.16.5, uruchomienie tego polecenia spowoduje nawiązanie połączenia z maszyną z systemem Linux:

    ssh bob@205.22.16.5
    

    Wyloguj się, wprowadzając polecenie exit.

Usuwanie maszyny wirtualnej

Aby wypróbować więcej poleceń, usuńmy maszynę wirtualną. Najpierw musimy go zamknąć (wprowadź Y , jeśli zostanie wyświetlony monit o kontynuowanie):

Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Po zatrzymaniu maszyny wirtualnej usuń maszynę wirtualną, uruchamiając Remove-AzVM polecenie cmdlet (wprowadź Y , jeśli zostanie wyświetlony monit o kontynuowanie):

Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Uruchom to polecenie, aby wyświetlić listę wszystkich zasobów w grupie zasobów:

Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table

Powinno zostać wyświetlonych kilka zasobów (dysków, sieci wirtualnych itd.), które nadal istnieją.

Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks

Polecenie Remove-AzVMpo prostu usuwa maszynę wirtualną. Nie usuwa żadnych innych zasobów. W tym momencie prawdopodobnie usuniemy samą grupę zasobów i zrobimy z nią. Przejdźmy jednak przez kolejne etapy ćwiczenia, aby ręcznie wyczyścić zasoby. Polecenia powinny być zgodne z pewnym wzorcem.

  1. Usuń interfejs sieciowy:

    $vm | Remove-AzNetworkInterface –Force
    
  2. Usuń dyski zarządzanego systemu operacyjnego:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
    
  3. Następnie usuń sieć wirtualną:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
    
  4. Usuń sieciowa grupa zabezpieczeń:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
    
  5. Na koniec usuń publiczny adres IP:

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress -Force
    

Powinniśmy przechwycić wszystkie utworzone zasoby. Sprawdź grupę zasobów, aby mieć pewność. Wykonaliśmy tutaj wiele poleceń ręcznych, ale lepszym rozwiązaniem byłoby napisanie skryptu. Następnie możemy ponownie użyć tej logiki później, aby utworzyć lub usunąć maszynę wirtualną. Przyjrzyjmy się wykonywaniu skryptów przy użyciu programu PowerShell.