Ćwiczenie — definiowanie zasobów podrzędnych

Ukończone

Uwaga

Po pierwszym aktywowaniu piaskownicy i zaakceptowaniu warunków twoje konto Microsoft jest skojarzone z nowym katalogiem platformy Azure o nazwie Microsoft Learn Sandbox. Dodano cię również do specjalnej subskrypcji o nazwie Subskrypcja Concierge.

Zaczynasz pracować nad żądaniami zespołu ds. badań i badań i podejmowania decyzji o rozpoczęciu tworzenia bazy danych usługi Azure Cosmos DB na potrzeby danych testowych drona toy. W tym ćwiczeniu utworzysz konto usługi Azure Cosmos DB i dwa zasoby podrzędne, jedno przy użyciu parent właściwości i drugiego jako zagnieżdżonego zasobu.

Podczas tego procesu wykonasz następujące czynności:

  • Utwórz plik Bicep, który wdraża konto usługi Cosmos DB.
  • Dodaj bazę danych i kontener, które są zasobami podrzędnym konta usługi Cosmos DB.
  • Wdróż szablon i zweryfikuj wdrożenie.

W tym ćwiczeniu jest używane rozszerzenie Bicep dla programu Visual Studio Code. Pamiętaj, aby zainstalować to rozszerzenie w programie Visual Studio Code.

Tworzenie szablonu Bicep zawierającego konto usługi Azure Cosmos DB

Najpierw należy utworzyć nowy szablon Bicep przy użyciu konta usługi Azure Cosmos DB. Aby to zrobić:

  1. Otwórz Visual Studio Code.

  2. Utwórz nowy plik o nazwie main.bicep.

  3. Zapisz pusty plik, aby program Visual Studio Code ładował narzędzia Bicep.

    Możesz wybrać pozycję Plik>Zapisz jako lub nacisnąć klawisze Ctrl+S w systemie Windows (⌘+S w systemie macOS). Pamiętaj, gdzie zapisano plik. Na przykład możesz utworzyć folder scripts , aby go zapisać.

  4. Dodaj następującą zawartość do pliku. Dobrym pomysłem jest ręczne wprowadzenie go zamiast kopiować i wklejać. Dzięki temu możesz zobaczyć, jak narzędzia ułatwiają pisanie plików Bicep.

    param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}'
    param location string = resourceGroup().location
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    

    Napiwek

    Bicep jest ściśle o tym, gdzie umieszczasz podziały wierszy, więc pamiętaj, aby dodać podziały wierszy tylko tam, gdzie pokazano tutaj.

    Ten szablon Bicep wdraża konto usługi Azure Cosmos DB, które jest zasobem nadrzędnym, na którym opierasz się w następnej sekcji.

  5. Zapisz zmiany w pliku.

Dodawanie bazy danych

Następnie utworzysz bazę danych, która jest zasobem podrzędnym konta usługi Azure Cosmos DB.

  1. W górnej części pliku między dwoma istniejącymi parametrami dodaj następujący parametr:

    param cosmosDBDatabaseThroughput int = 400
    
  2. W obszarze deklaracji parametrów dodaj następującą zmienną:

    var cosmosDBDatabaseName = 'FlightTests'
    
  3. Dodaj następującą definicję zasobu w dolnej części pliku poniżej definicji zasobu konta usługi Azure Cosmos DB.

    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = {
      parent: cosmosDBAccount
      name: cosmosDBDatabaseName
      properties: {
        resource: {
          id: cosmosDBDatabaseName
        }
        options: {
          throughput: cosmosDBDatabaseThroughput
        }
      }
    }
    

    Zwróć uwagę, że ten kod wdraża bazę danych, która jest zasobem podrzędnym, przy użyciu parent właściwości . Zwróć również uwagę, że kod używa w pełni kwalifikowanego typu zasobu z określoną jawnie wersją interfejsu API.

  4. Zapisz zmiany w pliku.

Dodawanie kontenera

Teraz dodasz kolejny zasób podrzędny. Tym razem należy dodać go jako zagnieżdżony zasób zamiast używać parent właściwości .

  1. W górnej części pliku poniżej cosmosDBDatabaseName definicji zmiennej dodaj następujące zmienne:

    var cosmosDBContainerName = 'FlightTests'
    var cosmosDBContainerPartitionKey = '/droneId'
    
  2. W dolnej części pliku w definicji zasobu bazy danych i przed zamknięciem nawiasu klamrowego (}) dodaj następującą definicję zagnieżdżonego zasobu:

    resource container 'containers' = {
      name: cosmosDBContainerName
      properties: {
        resource: {
          id: cosmosDBContainerName
          partitionKey: {
            kind: 'Hash'
            paths: [
              cosmosDBContainerPartitionKey
            ]
          }
        }
        options: {}
      }
    }
    

    Zwróć uwagę, że użyto krótkiego typu zasobu , containersponieważ Bicep rozumie, że należy on do typu zasobu nadrzędnego. Bicep wie, że w pełni kwalifikowany typ zasobu to Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers. Nie określono wersji interfejsu API, więc Bicep używa wersji z zasobu nadrzędnego . 2020-04-01

    Po zakończeniu kompletny szablon Bicep powinien wyglądać następująco:

    param cosmosDBAccountName string = 'toyrnd-${uniqueString(resourceGroup().id)}'
    param cosmosDBDatabaseThroughput int = 400
    param location string = resourceGroup().location
    
    var cosmosDBDatabaseName = 'FlightTests'
    var cosmosDBContainerName = 'FlightTests'
    var cosmosDBContainerPartitionKey = '/droneId'
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    
    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2020-04-01' = {
      parent: cosmosDBAccount
      name: cosmosDBDatabaseName
      properties: {
        resource: {
          id: cosmosDBDatabaseName
        }
        options: {
          throughput: cosmosDBDatabaseThroughput
        }
      }
    
      resource container 'containers' = {
        name: cosmosDBContainerName
        properties: {
          resource: {
            id: cosmosDBContainerName
            partitionKey: {
              kind: 'Hash'
              paths: [
                cosmosDBContainerPartitionKey
              ]
            }
          }
          options: {}
        }
      }
    }
    
  3. Zapisz zmiany w pliku.

Wdrażanie szablonu na platformie Azure

Aby wdrożyć ten szablon na platformie Azure, musisz zalogować się na konto platformy Azure z poziomu terminalu programu Visual Studio Code. Upewnij się, że zainstalowano interfejs wiersza polecenia platformy Azure i pamiętaj, aby zalogować się przy użyciu tego samego konta, które zostało użyte do aktywowania piaskownicy.

  1. W menu Terminal wybierz polecenie New Terminal (Nowy terminal). Okno terminalu zwykle otwiera się w dolnej połowie ekranu.

  2. Jeśli powłoka wyświetlana po prawej stronie okna terminalu jest powłoka bash, prawidłowa powłoka jest otwarta i możesz przejść do następnej sekcji.

    Screenshot of the Visual Studio Code terminal window, with the bash option shown.

  3. Jeśli zostanie wyświetlona powłoka inna niż powłoka bash , wybierz strzałkę listy rozwijanej powłoki, a następnie wybierz pozycję Git Bash.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Git Bash Default selected.

  4. Na liście powłok terminali wybierz pozycję bash.

    Screenshot of the Visual Studio Code terminal window, with the bash terminal selected.

  5. W terminalu przejdź do katalogu, w którym zapisano szablon. Jeśli na przykład szablon został zapisany w folderze templates , możesz użyć następującego polecenia:

    cd templates
    

Instalowanie aplikacji Bicep

Uruchom następujące polecenie, aby upewnić się, że masz najnowszą wersję aplikacji Bicep:

az bicep install && az bicep upgrade

Logowanie się do platformy Azure

  1. W terminalu programu Visual Studio Code zaloguj się do platformy Azure, uruchamiając następujące polecenie:

    az login
    
  2. W przeglądarce, która zostanie otwarta, zaloguj się do konta platformy Azure.

    W terminalu programu Visual Studio Code zostanie wyświetlona lista subskrypcji skojarzonych z tym kontem.

  3. Ustaw domyślną subskrypcję dla wszystkich poleceń interfejsu wiersza polecenia platformy Azure uruchamianych w tej sesji.

    az account set --subscription "Concierge Subscription"
    

    Uwaga

    Jeśli ostatnio użyto więcej niż jednej piaskownicy, terminal może wyświetlić więcej niż jedno wystąpienie subskrypcji Concierge. W tym przypadku użyj dwóch następnych kroków, aby ustawić jedną jako domyślną subskrypcję. Jeśli poprzednie polecenie zakończyło się pomyślnie i zostanie wyświetlona tylko jedna subskrypcja Concierge, pomiń kolejne dwa kroki.

  4. Pobierz identyfikatory subskrypcji Concierge.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Ustaw domyślną subskrypcję przy użyciu identyfikatora subskrypcji. Zastąp ciąg {your subscription ID} najnowszym identyfikatorem subskrypcji Concierge.

    az account set --subscription {your subscription ID}
    

Ustawianie domyślnej grupy zasobów

W przypadku korzystania z interfejsu wiersza polecenia platformy Azure możesz ustawić domyślną grupę zasobów i pominąć parametr z pozostałych poleceń interfejsu wiersza polecenia platformy Azure w tym ćwiczeniu. Ustaw wartość domyślną na grupę zasobów utworzoną dla Ciebie w środowisku piaskownicy.

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

Wdrażanie szablonu na platformie Azure

Uruchom następujący kod z terminalu w programie Visual Studio Code, aby wdrożyć szablon Bicep na platformie Azure. Wykonanie tej operacji może potrwać minutę lub dwie, zanim zobaczysz pomyślne wdrożenie.

az deployment group create --template-file main.bicep

Aby wdrożyć ten szablon na platformie Azure, zaloguj się do konta platformy Azure z poziomu terminalu programu Visual Studio Code. Upewnij się, że zainstalowano program Azure PowerShell i zaloguj się do tego samego konta, na którym aktywowano piaskownicę.

  1. W menu Terminal wybierz polecenie New Terminal (Nowy terminal). Okno terminalu zwykle otwiera się w dolnej połowie ekranu.

  2. Jeśli powłoka wyświetlana po prawej stronie okna terminalu to powershell lub pwsh, prawidłowa powłoka jest otwarta i możesz przejść do następnej sekcji.

    Screenshot of the Visual Studio Code terminal window, with the pwsh option displayed in the shell dropdown list.

  3. Jeśli zostanie wyświetlona powłoka inna niż powershell lub pwsh , wybierz strzałkę listy rozwijanej powłoki, a następnie wybierz pozycję PowerShell.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown list shown and PowerShell selected.

  4. Na liście powłok terminali wybierz pozycję powershell lub pwsh.

    Screenshot of the Visual Studio Code terminal window, with the PowerShell terminal selected.

  5. W terminalu przejdź do katalogu, w którym zapisano szablon. Jeśli na przykład szablon został zapisany w folderze templates , możesz użyć tego polecenia:

    Set-Location -Path templates
    

Instalowanie interfejsu wiersza polecenia Bicep

Aby użyć aplikacji Bicep z poziomu programu Azure PowerShell, zainstaluj interfejs wiersza polecenia Bicep.

Logowanie się na platformie Azure przy użyciu programu Azure PowerShell

  1. W terminalu programu Visual Studio Code uruchom następujące polecenie:

    Connect-AzAccount
    

    Zostanie otwarta przeglądarka umożliwiająca zalogowanie się do konta platformy Azure.

  2. Po zalogowaniu się na platformie Azure w terminalu zostanie wyświetlona lista subskrypcji skojarzonych z tym kontem.

    Jeśli aktywowano piaskownicę, zostanie wyświetlona subskrypcja o nazwie Subskrypcja Concierge. Użyj go w pozostałej części ćwiczenia.

  3. Ustaw domyślną subskrypcję dla wszystkich poleceń programu Azure PowerShell uruchamianych w tej sesji.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Uwaga

    Jeśli ostatnio użyto więcej niż jednej piaskownicy, terminal może wyświetlić więcej niż jedno wystąpienie subskrypcji Concierge. W tym przypadku użyj dwóch następnych kroków, aby ustawić jedną jako domyślną subskrypcję. Jeśli poprzednie polecenie zakończyło się pomyślnie i zostanie wyświetlona tylko jedna subskrypcja Concierge, pomiń kolejne dwa kroki.

  4. Uzyskaj identyfikator subskrypcji. Uruchomienie następującego polecenia zawiera listę subskrypcji i ich identyfikatorów. Concierge SubscriptionWyszukaj ciąg , a następnie skopiuj identyfikator z drugiej kolumny. Wygląda to mniej więcej tak: cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  5. Zmień aktywną subskrypcję na Subskrypcja Concierge. Pamiętaj, aby zastąpić ciąg {Identyfikator subskrypcji} skopiowaną wartością.

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

Ustawianie domyślnej grupy zasobów

Możesz ustawić domyślną grupę zasobów i pominąć parametr z pozostałych poleceń programu Azure PowerShell w tym ćwiczeniu. Ustaw tę wartość domyślną na grupę zasobów utworzoną dla Ciebie w środowisku piaskownicy.

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

Wdrażanie szablonu na platformie Azure

Wdróż szablon na platformie Azure przy użyciu następującego polecenia programu Azure PowerShell w terminalu. Wykonanie tej operacji może potrwać minutę lub dwie, zanim zobaczysz pomyślne wdrożenie.

New-AzResourceGroupDeployment -TemplateFile main.bicep

Weryfikowanie wdrożenia

  1. Przejdź do witryny Azure Portal i upewnij się, że jesteś w subskrypcji piaskownicy:

    1. Wybierz swój awatar w prawym górnym rogu strony.

    2. Wybierz pozycję Przełącz katalog. Z listy wybierz katalog Microsoft Learn Sandbox.

  2. Na stronie głównej wybierz pozycję Grupy zasobów. Zostanie wyświetlone okienko Grupy zasobów.

  3. Wybierz pozycję [nazwa grupy zasobów piaskownicy].

  4. W obszarze Przegląd widać, że jedno wdrożenie zakończyło się pomyślnie.

    Screenshot of the Azure portal interface for the resource group overview, with the deployments section showing that one succeeded.

  5. Wybierz pozycję 1 udane, aby wyświetlić szczegóły wdrożenia.

    Screenshot of the Azure portal interface for the deployments, with the one deployment listed and a succeeded status.

  6. Wybierz wdrożenie o nazwie main , aby zobaczyć, jakie zasoby zostały wdrożone, a następnie wybierz pozycję Szczegóły wdrożenia, aby je rozwinąć. W takim przypadku na liście znajduje się konto, baza danych i kontener usługi Cosmos DB.

    Screenshot of the Azure portal interface for the specific deployment, with three Cosmos DB resources listed.

  7. Pozostaw stronę otwartą w przeglądarce, aby można było ponownie sprawdzić wdrożenia później.