Ćwiczenie — kontrolowanie kolejności wdrażania zasobów

Ukończone

W tej części rozpoczniesz od wykonania kilku podstawowych zadań konfiguracyjnych. W programie Visual Studio Code połączysz sesję terminalową z subskrypcją platformy Azure dostarczaną przez bezpłatne środowisko piaskownicy platformy Azure. Umożliwi Ci to uwierzytelnianie poleceń na platformie Azure.

Następnie uruchomisz podstawowy szablon usługi ARM, który ustanawia maszynę wirtualną z systemem Linux. Po zakończeniu wdrażania upewnisz się, że maszyna wirtualna działa i można się z nią łączyć.

Chociaż praca z maszynami wirtualnymi jest typowym zadaniem, zobaczysz, że zasób maszyny wirtualnej wymaga składników sieci i magazynu, które muszą istnieć, aby można było utworzyć maszynę wirtualną. Zobaczysz, jak dependsOn konstrukcja umożliwia ustawienie kolejności aprowizacji zasobów.

Ustawienia

Tutaj otworzysz program Visual Studio Code, utworzysz sesję programu PowerShell i nawiążesz połączenie z subskrypcją platformy Azure dostarczaną przez bezpłatne środowisko piaskownicy platformy Azure.

Te zadania konfiguracyjne trzeba wykonać jeden raz w tym module. Możesz odwoływać się z powrotem do tych kroków, jeśli wylogujesz się lub rozłączysz w późniejszym ćwiczeniu.

Otwieranie programu PowerShell w programie Visual Studio Code

  1. Otwórz Visual Studio Code.

  2. Otwórz okno terminalu przy użyciu menu Terminal.

  3. Jeśli w menu rozwijanym po prawej stronie okna terminalu widać pozycję pwsh, oznacza to, że pracujesz w prawidłowej powłoce i możesz pominąć dalsze kroki, przechodząc do następnej sekcji.

    Screenshot of Terminal window, terminal type.

  4. W przeciwnym razie na liście rozwijanej wybierz pozycję Select Default Shell (Wybierz powłokę domyślną).

  5. Wybierz pozycję pwsh.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. W terminalu wybierz pozycję +, aby utworzyć nowy terminal z powłoką pwsh.

Logowanie się do platformy Azure

  1. Uruchom polecenie Connect-AzAccount, aby zalogować się do swojego konta.

    Connect-AzAccount
    

    Pojawi się okno przeglądarki.

  2. Wybierz konto, które zostało użyte do uaktywnienia piaskownicy, a następnie zamknij okno przeglądarki po wyświetleniu monitu.

Ustawianie aktywnej subskrypcji

  1. Uruchom polecenie Get-AzSubscription, aby uzyskać identyfikator subskrypcji dla środowiska piaskownicy.

    Get-AzSubscription
    

    Poszukaj subskrypcji Concierge Subscription i skopiuj wartość z drugiej kolumny. Identyfikator wygląda podobnie do następującego: cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

  2. Uruchom polecenie Set-AzContext, aby zmienić aktywną subskrypcję na subskrypcję Concierge.

    Uwaga

    Pamiętaj, aby zastąpić ciąg {Identyfikator subskrypcji} identyfikatorem subskrypcji Concierge, uzyskanym w poprzednim poleceniu.

    $subscription = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $subscription
    

Ustawianie domyślnej grupy zasobów

Zwykle w przypadku uruchamiania polecenia interfejsu wiersza polecenia platformy Azure należy określić grupę zasobów.

Piaskownica udostępnia domyślną grupę zasobów do użycia. Aby ułatwić uruchamianie poleceń interfejsu wiersza polecenia platformy Azure, ustawisz w tym miejscu domyślną grupę zasobów.

Uruchom polecenie cmdlet Set-AzDefault, aby ustawić domyślną grupę zasobów.

Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>

Uwaga

Zwykle podczas zasobów na platformie Azure przy użyciu programu PowerShell trzeba określić grupę zasobów. W celu pominięcia tego wymagania kontekst wdrożenia jest ustawiany przy użyciu polecenia Set-AzDefault.

Zawartość typowego wdrożenia maszyny wirtualnej

Podczas wdrażania maszyny wirtualnej należy pamiętać, że istnieje kilka zasobów, które należy wdrożyć wraz z nią, aby maszyna wirtualna mogła działać.

Poniżej przedstawiono krótkie podsumowanie typów zasobów, które zwykle muszą zostać wdrożone wraz z maszyną wirtualną:

  • Microsoft.Storage/storageAccounts. Konto magazynu zapewnia miejsce na dysku dla systemu operacyjnego i plików.
  • Microsoft.Network/publicIPAddresses. Publiczny adres IP umożliwia nawiązanie połączenia z maszyną wirtualną z Internetu.
  • Microsoft.Network/networkSecurityGroups. Sieciowa grupa zabezpieczeń zawiera reguły do obsługi ruchu przychodzącego i wychodzącego do sieci wirtualnej.
  • Microsoft.Network/virtualNetworks. Maszynę wirtualną trzeba umieścić w sieci wirtualnej. Ten zasób wymaga wcześniejszego wdrożenia sieciowej grupy zabezpieczeń.
  • Microsoft.Network/networkInterfaces. Ten zasób zależy od dwóch innych zasobów: publicznego adresu IP i sieci wirtualnej.
  • Microsoft.Compute/virtualMachines. Maszyna wirtualna jest zasobem podstawowym, który chcesz wdrożyć. Jest ona zależna od dwóch różnych zasobów: konta magazynu i interfejsów sieciowych.

Wdrażanie maszyny wirtualnej z systemem Linux

Tutaj pobierzesz dostarczony przez nas szablon usługi ARM z repozytorium GitHub. Szablon ustanawia maszynę wirtualną z systemem Linux i wszystkie zasoby niezbędne do jej uruchomienia.

  1. Uruchom następujące polecenie curl, aby pobrać szablon usługi ARM:

    curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
    
  2. Uruchom polecenie cmdlet ConvertTo-SecureString i przypisz wyniki do zmiennej programu PowerShell o nazwie $secure:

    $secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
    

    Teraz masz zaszyfrowaną wersję hasła, którą możesz następnie przekazać przy użyciu skryptu wdrażania.

  3. Uruchom polecenie New-AzResourceGroupDeployment, aby wdrożyć szablon:

    New-AzResourceGroupDeployment `
      -TemplateFile "./azuredeploy.json" `
      -adminUsername "azureuser" `
      -vmName "vm1" `
      -adminPasswordOrKey $secure
    

    Wykonanie polecenia może potrwać kilka minut. W czasie wykonywania polecenia możesz przeanalizować szablon usługi ARM na osobnej karcie przeglądarki, jeśli chcesz.

    Wyszukaj klucz dependsOn, aby zauważyć zależności zasobów. Na przykład zasób maszyny wirtualnej zależy od interfejsu sieciowego:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

Weryfikowanie wdrożenia

Sprawdź, czy maszyna wirtualna została ustanowiona i czy można połączyć się z nią za pośrednictwem protokołu SSH. Aby to zrobić:

  1. Uruchom polecenie Invoke-Expression, aby połączyć się z maszyną wirtualną za pośrednictwem protokołu SSH:

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    Po wyświetleniu monitu wprowadź , yes aby kontynuować nawiązywanie połączenia. Następnie wprowadź hasło administratora. insecurepassword123!

    Ważne

    W praktyce stosuj bezpieczne hasła. Ponadto można użyć uwierzytelniania przy użyciu klucza publicznego, które jest zwykle bezpieczniejsze niż używanie haseł.

  2. Z poziomu połączenia SSH z maszyną wirtualną uruchom polecenie hostname, aby wyświetlić nazwę hosta maszyny wirtualnej:

    hostname
    

    Zostanie wyświetlona wewnętrzna nazwa hosta maszyny wirtualnej: vm1

    vm1
    
  3. Uruchom polecenie exit, aby opuścić sesję SSH.

    exit
    

Gratulacje, udało Ci się pomyślnie wdrożyć maszynę wirtualną z systemem Linux przy użyciu szablonu usługi ARM. Maszyna wirtualna jest wspólnym typem zasobu, który obejmuje zasoby zależne.

Ustawienia

Tutaj otworzysz program Visual Studio Code, utworzysz sesję terminalową i nawiążesz połączenie z subskrypcją platformy Azure dostarczaną przez bezpłatne środowisko piaskownicy platformy Azure.

Te zadania konfiguracyjne trzeba wykonać jeden raz w tym module. Możesz odwoływać się z powrotem do tych kroków, jeśli wylogujesz się lub rozłączysz w późniejszym ćwiczeniu.

Otwieranie powłoki w programie Visual Studio Code

  1. Otwórz Visual Studio Code.

  2. Otwórz okno terminalu przy użyciu menu Terminal.

  3. Jeśli menu rozwijane zawiera preferowaną powłokę (na przykład bash lub zsh), możesz przejść do następnej sekcji.

  4. W przeciwnym razie na liście rozwijanej wybierz pozycję Select Default Shell (Wybierz powłokę domyślną).

  5. Wybierz odpowiedni typ powłoki.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. W terminalu wybierz pozycję +, aby utworzyć nowy terminal z wybranym typem powłoki.

Logowanie się do platformy Azure

  1. W terminalu uruchom polecenie az login:

    az login
    

    Pojawi się okno przeglądarki.

  2. Wybierz konto, które zostało użyte do uaktywnienia piaskownicy, a następnie zamknij okno przeglądarki po wyświetleniu monitu.

Ustawianie aktywnej subskrypcji

Uruchom następujące polecenie az account set, aby ustawić środowisko piaskownicy platformy Azure jako aktywną subskrypcję:

az account set -s "Concierge Subscription"

Uwaga

W przypadku niepowodzenia uruchom polecenie az account list --refresh --all, a następnie ponownie uruchom polecenie az account set.

Ustawianie domyślnej grupy zasobów

Zwykle w przypadku uruchamiania polecenia interfejsu wiersza polecenia platformy Azure należy określić grupę zasobów.

Piaskownica udostępnia domyślną grupę zasobów do użycia. Aby ułatwić uruchamianie poleceń interfejsu wiersza polecenia platformy Azure, ustawisz w tym miejscu domyślną grupę zasobów.

Uruchom następujące polecenie az configure, aby ustawić domyślną grupę zasobów:

az configure --defaults group=<rgn>resource group name</rgn>

Zawartość typowego wdrożenia maszyny wirtualnej

Podczas wdrażania maszyny wirtualnej należy pamiętać, że istnieje kilka zasobów, które należy wdrożyć wraz z nią, aby maszyna wirtualna mogła działać.

Poniżej przedstawiono krótkie podsumowanie typów zasobów, które zwykle muszą zostać wdrożone wraz z maszyną wirtualną:

  • Microsoft.Storage/storageAccounts. Konto magazynu zapewnia miejsce na dysku dla systemu operacyjnego i plików.
  • Microsoft.Network/publicIPAddresses. Publiczny adres IP umożliwia nawiązanie połączenia z maszyną wirtualną z Internetu.
  • Microsoft.Network/networkSecurityGroups. Sieciowa grupa zabezpieczeń zawiera reguły do obsługi ruchu przychodzącego i wychodzącego do sieci wirtualnej.
  • Microsoft.Network/virtualNetworks. Maszynę wirtualną trzeba umieścić w sieci wirtualnej. Ten zasób wymaga wcześniejszego wdrożenia sieciowej grupy zabezpieczeń.
  • Microsoft.Network/networkInterfaces. Ten zasób zależy od dwóch innych zasobów: publicznego adresu IP i sieci wirtualnej.
  • Microsoft.Compute/virtualMachines. Maszyna wirtualna jest zasobem podstawowym, który chcesz wdrożyć. Jest ona zależna od dwóch różnych zasobów: konta magazynu i interfejsów sieciowych.

Wdrażanie maszyny wirtualnej z systemem Linux

Tutaj pobierzesz dostarczony przez nas szablon usługi Azure Resource Manager (ARM) z repozytorium GitHub. Szablon ustanawia maszynę wirtualną z systemem Linux i wszystkie zasoby niezbędne do jej uruchomienia.

  1. Uruchom następujące polecenie wget, aby pobrać szablon usługi ARM:

    wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
    

    Jeśli nie masz zainstalowanego programu wget, możesz uruchomić to polecenie curl:

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. Uruchom polecenie az deployment group create, aby wdrożyć szablon:

    az deployment group create \
      --template-file azuredeploy.json \
      --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
    

    Wykonanie polecenia może potrwać kilka minut. W czasie wykonywania polecenia możesz przeanalizować szablon usługi ARM na osobnej karcie przeglądarki, jeśli chcesz.

    Wyszukaj klucz dependsOn, aby zauważyć zależności zasobów. Na przykład zasób maszyny wirtualnej zależy od interfejsu sieciowego:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

Weryfikowanie wdrożenia

Sprawdź, czy maszyna wirtualna została ustanowiona i czy można połączyć się z nią za pośrednictwem protokołu SSH. Aby to zrobić:

  1. Uruchom następujące polecenie az deployment group list, aby wyświetlić listę grup wdrożenia w ramach subskrypcji:

    az deployment group list --output table
    

    Zobaczysz jedną grupę wdrożenia o nazwie azuredeploy:

    Name         ResourceGroup                               State      Timestamp                         Mode
    -----------  ------------------------------------------  ---------  --------------------------------  -----------
    azuredeploy  learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8  Succeeded  2020-11-24T17:55:39.762517+00:00  Incremental
    
  2. Uruchom następujące polecenie az deployment group show, aby wyświetlić polecenie SSH, którego można użyć do nawiązania połączenia z maszyną wirtualną:

    az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv
    

    Szablon usługi ARM definiuje tę właściwość w sekcji output. Oto przykład:

    ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
    
  3. Uruchom polecenie ponownie, tym razem używając składni $(), aby wykonać polecenie SSH:

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    Po wyświetleniu monitu wprowadź , yes aby kontynuować nawiązywanie połączenia. Następnie wprowadź hasło administratora. insecurepassword123!

    Ważne

    W praktyce stosuj bezpieczne hasła. Ponadto można użyć uwierzytelniania przy użyciu klucza publicznego, które jest zwykle bezpieczniejsze niż używanie haseł.

  4. Z poziomu połączenia SSH z maszyną wirtualną uruchom polecenie hostname, aby wyświetlić nazwę hosta maszyny wirtualnej:

    hostname
    

    Zostanie wyświetlona wewnętrzna nazwa hosta maszyny wirtualnej: vm1

    vm1
    
  5. Uruchom polecenie exit, aby opuścić sesję SSH.

    exit
    

Gratulacje, udało Ci się pomyślnie wdrożyć maszynę wirtualną z systemem Linux przy użyciu szablonu usługi ARM. Maszyna wirtualna jest wspólnym typem zasobu, który obejmuje zasoby zależne.