Cvičení – přidání prostředků do zásobníku nasazení

Dokončeno

Jste ve sprintu 3 pro novou aplikaci pro vklady. V poslední době požádal tým o změny některých služeb Azure, které se používají. Požádali také o vytvoření dalších služeb potřebných k podpoře aplikace.

V tomto cvičení vytvoříte zásobník nasazení s vymezeným oborem na skupinu prostředků, která odkazuje na soubor Bicep. Soubor definuje plán služby App Service, službu App Service a databázi Azure SQL. Pak upravíte skladovou položku plánu služby App Service a aktualizujete zásobník nasazení. Nakonec přidáte existující pracovní prostor služby Log Analytics a novou instanci Application Insights, která podporuje monitorování aplikace.

Během tohoto procesu:

  • Vytvoření souboru Bicep, který definuje vaši počáteční architekturu
  • Vytvořte zásobník nasazení vymezený na skupinu prostředků pomocí souboru Bicep.
  • Úprava vlastností existujícího spravovaného prostředku
  • Aktualizujte soubor Bicep tak, aby zahrnoval existující pracovní prostor služby Log Analytics a novou instanci Application Insights.
  • Aktualizace zásobníku nasazení pro nasazení spravovaných prostředků
  • Ověřte spravované prostředky zásobníku nasazení.

V tomto cvičení se používá rozšíření Bicep pro Visual Studio Code. Nezapomeňte toto rozšíření do Visual Studio Codu nainstalovat.

Vytvoření souboru Bicep

Prvním krokem je vytvoření souboru Bicep, který definuje naše prostředky, které se mají použít se zásobníkem nasazení.

  1. Otevřete Visual Studio Code.

  2. Vytvořte nový soubor s názvem main.bicep.

  3. Uložte prázdný soubor tak, aby Visual Studio Code načítal nástroje Bicep.

    Můžete vybrat možnost Uložit jako soubor>nebo vybrat Kombinaci kláves Ctrl+S ve Windows (⌘+S v systému macOS). Nezapomeňte si zapamatovat, kam jste soubor uložili. Můžete například chtít vytvořit složku šablon , do které chcete soubor uložit.

  4. Do souboru přidejte následující kód Bicep. Šablonu nasadíte brzy.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @description('The name of the SQL database.')
    param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'
    
    @description('The password of the admin user.')
    param sqlServerAdminUserName string
    
    @description('The name of the admin user.')
    @secure()
    param sqlServerAdminPassword string
    
    @description('The name of the SQL server.')
    param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the web application.')
    param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'
    
    // Variables
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'F1'
        capacity: 1
      }
    }
    
    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id  
      }
    }
    
    // Resource - SQL Server
    resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
      name: sqlServerName
      location: location
      properties: {
        administratorLogin: sqlServerAdminUserName
        administratorLoginPassword: sqlServerAdminPassword
      }
    }
    
    // Resource - SQL Database
    resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
      parent: sqlServer
      name: sqlDatabaseName
      location: location
      sku: {
        name: 'Standard'
        tier: 'Standard'
      }
    }
    

    Všimněte si, že používáte výrazy, které obsahují interpolaci řetězců a uniqueString() funkci k definování výchozích hodnot parametrů. Někdo, kdo tuto šablonu nasazuje, může přepsat výchozí hodnoty parametrů zadáním hodnot v době nasazení, ale nemůže přepsat hodnoty proměnných.

    Všimněte si také, že pro název plánu služby App Service používáte proměnnou, ale pro ostatní názvy používáte parametry. Účty úložiště a aplikace App Service potřebují globálně jedinečné názvy, ale názvy plánů služby App Service musí být jedinečné jenom v rámci skupiny prostředků. Tento rozdíl znamená, že se nejedná o použití stejného názvu plánu služby App Service v různých nasazeních, pokud se všechna nasazení nacházejí v různých skupinách prostředků.

  5. Uložte změny souboru.

Vytvoření zásobníku nasazení a nasazení prostředků do Azure

Pokud chcete tuto šablonu nasadit do Azure, musíte se přihlásit ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali nástroje Azure CLI .

  1. V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.

  2. Pokud se v okně terminálu zobrazí bash na pravé straně, znamená to, že správné prostředí je už otevřené. Pokud se na pravé straně zobrazí ikona prostředí Bash, můžete ho vybrat a spustit prostředí.

    Snímek obrazovky okna terminálu editoru Visual Studio Code se zobrazenou možností Bash

    Pokud se zobrazí jiné prostředí než Bash, vyberte šipku rozevíracího seznamu prostředí a pak vyberte Git Bash.

    Snímek obrazovky okna terminálu editoru Visual Studio Code s rozevíracím seznamem prostředí terminálu a vybranou možností Výchozí git Bash

  3. V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:

    cd templates
    

Instalace Bicep

Spuštěním následujícího příkazu se ujistěte, že máte nejnovější verzi Bicep:

az bicep install && az bicep upgrade

Přihlášení k Azure pomocí Azure CLI

  1. V terminálu editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:

    az login
    
  2. V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.

    V terminálu editoru Visual Studio Code se zobrazí seznam předplatných přidružených k tomuto účtu.

  3. V seznamu vyhledejte předplatné, které chcete použít pro toto cvičení.

    Pokud jste zmeškali seznam z přihlášení, můžete pomocí následujícího fragmentu kódu znovu zobrazit seznam předplatných.

    az account list --output table
    
  4. Nastavte výchozí předplatné pro všechny příkazy Azure CLI, které spustíte v této relaci.

    az account set --subscription "Your Subscription Name or ID"
    

Vytvoření skupiny zdrojů

Potřebujeme vytvořit skupinu prostředků pro náš zásobník nasazení a spravované prostředky. Pokud chcete vytvořit skupinu prostředků, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

az group create \
    --name rg-depositsApplication \
    --location eastus

Pokud chcete tuto šablonu nasadit do Azure, přihlaste se ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali Azure PowerShell.

  1. V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.

  2. Pokud se v okně terminálu na pravé straně zobrazí pwsh nebo PowerShell , znamená to, že správné prostředí je už otevřené. Pokud se na pravé straně zobrazí ikona prostředí PowerShell, můžete ho vybrat a spustit prostředí.

    Snímek obrazovky okna terminálu editoru Visual Studio Code s možností pwsh zobrazenou v rozevíracím seznamu prostředí

    Pokud se zobrazí jiné prostředí než pwsh nebo PowerShell, vyberte šipku rozevíracího seznamu prostředí a pak vyberte PowerShell.

    Snímek obrazovky okna terminálu editoru Visual Studio Code se zobrazeným rozevíracím seznamem prostředí terminálu a vybranou možností PowerShellu

  3. V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:

    Set-Location -Path templates
    

Instalace rozhraní příkazového řádku Bicep

Pokud chcete použít Bicep z Azure PowerShellu, nainstalujte rozhraní příkazového řádku Bicep.

Přihlášení k Azure přes Azure PowerShell

  1. V terminálu editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:

    Connect-AzAccount
    
  2. V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.

  3. Spuštěním následujícího příkazu získejte ID předplatného, které chcete použít pro toto cvičení:

    Get-AzSubscription
    

    ID předplatného najdete ve druhém sloupci. Zkopírujte druhý sloupec. Vypadá nějak takto: aaaa0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e4e.

  4. Nastavte výchozí předplatné pro všechny příkazy Azure PowerShellu, které spustíte v této relaci.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Vytvoření skupiny zdrojů

Potřebujeme vytvořit skupinu prostředků pro náš zásobník nasazení a spravované prostředky. Pokud chcete vytvořit skupinu prostředků, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus

Vytvoření zásobníku nasazení

Dále musíme vytvořit zásobník nasazení s vymezeným oborem pro naši nedávno vytvořenou skupinu prostředků. Pokud chcete vytvořit zásobník nasazení, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

  1. Pokud chcete vytvořit zásobník nasazení, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Zobrazí výzvu k zadání hodnoty .sqlServerAdminUserName Vytvořte název správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure CLI s výzvou k zadání uživatelského jména správce SQL Serveru

  3. Zobrazí výzvu k zadání hodnoty .sqlServerAdminPassword Vytvořte složité heslo pro správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure CLI s výzvou k zadání hesla správce SQL Serveru

  4. Než přejdete k dalšímu úkolu, počkejte na dokončení operace aktualizace.

  1. Pokud chcete vytvořit zásobník nasazení, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    New-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode None
    
  2. Zobrazí výzvu k zadání hodnoty .sqlServerAdminUserName Vytvořte název správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure PowerShellu s výzvou k zadání uživatelského jména správce SQL Serveru

  3. Zobrazí výzvu k zadání hodnoty .sqlServerAdminPassword Vytvořte složité heslo pro správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure PowerShellu s výzvou k zadání hesla správce SQL Serveru

  4. Než přejdete k dalšímu úkolu, počkejte na dokončení operace aktualizace.

Úprava souboru Bicep pro přidání existujícího pracovního prostoru služby Log Analytics a nové instance Application Insights

  1. Otevřete soubor main.bicep v editoru Visual Studio Code.

  2. Přidejte zvýrazněný kód do oddílu proměnných souboru:

    // Variables
    @description('The name of the Application Insights instance.')
    var applicationInsightsName = 'appinsights-deposits'
    
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    @description('The name of the Log Analytics Workspace.')
    var logAnalyticsWorkspaceName = 'log-deposits'
    
  3. Do dolní části souboru přidejte následující kód:

    // Resource - Log Analytics Workspace
    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
      name: logAnalyticsWorkspaceName
      location: location
      properties: {
        retentionInDays: 30
        sku: {
          name: 'PerGB2018'
        }
      }
    }
    
    // Resource - Application Insights
    resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
      name: applicationInsightsName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
        WorkspaceResourceId: logAnalyticsWorkspace.id
      }
    }
    
  4. Uložte změny souboru.

Úprava souboru Bicep pro úpravu plánu služby App Service a služby App Service

  1. Otevřete soubor main.bicep v editoru Visual Studio Code.

  2. Změňte název skladové položky plánu služby App Service z F1 :S1

    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'S1'
        capacity: 1
      }
    }
    
  3. Přidejte zvýrazněný kód pro drát v instanci Application Insights:

    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }     
          ]
        }    
      }
    }
    
  4. Uložte změny souboru.

Aktualizace zásobníku nasazení

Při změně souboru Bicep chceme aktualizovat zásobník nasazení tak, aby se implementovaly změny prostředků v souboru Bicep.

  1. Pokud chcete aktualizovat zásobník nasazení, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Zobrazí se zpráva s oznámením, že zásobník již v aktuálním předplatném existuje. Pokud se hodnota akce u nespravovaných parametrů změnila, upozornění vás upozorní na nové hodnoty. Stiskněte klávesu y, následovanou klávesou Enter.

    Snímek obrazovky znázorňující upozornění příkazového řádku Azure CLI, že zásobník nasazení už existuje

  3. Zobrazí výzvu k zadání hodnoty .sqlServerAdminUserName Vytvořte název správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure CLI s výzvou k zadání uživatelského jména správce SQL Serveru

  4. Zobrazí výzvu k zadání hodnoty .sqlServerAdminPassword Vytvořte složité heslo pro správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure CLI s výzvou k zadání hesla správce SQL Serveru

  5. Než přejdete k dalšímu úkolu, počkejte na dokončení operace aktualizace.

Při změně souboru Bicep chceme aktualizovat zásobník nasazení tak, aby se implementovaly změny provedené v plánu služby App Service.

  1. Pokud chcete aktualizovat zásobník nasazení, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. Zobrazí výzvu k zadání hodnoty .sqlServerAdminUserName Vytvořte název správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure PowerShellu s výzvou k zadání uživatelského jména správce SQL Serveru

  3. Zobrazí výzvu k zadání hodnoty .sqlServerAdminPassword Vytvořte složité heslo pro správce SQL Serveru a potom enter.

    Snímek obrazovky s příkazovým řádkem Azure PowerShellu s výzvou k zadání hesla správce SQL Serveru

  4. Než přejdete k dalšímu úkolu, počkejte na dokončení operace aktualizace.

Ověření aktualizace zásobníku nasazení a spravovaných prostředků

Po dokončení aktualizace chceme ověřit, že je skladová položka plánu služby App Service aktualizovaná a že zásobník nasazení spravuje existující pracovní prostor služby Log Analytics a novou instanci Application Insights.

  1. Pokud chcete zobrazit konfiguraci plánu služby App Service, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    az appservice plan show \
        --name plan-deposits
        --resource-group rg-depositsApplication
    
  2. Všimněte si části sku sku výstupu. Plán služby App Service je teď na skladové posílce S1. Měl by se podobat následujícímu výstupu:

    "sku": {
        "capacity": 1,
        "family": "S",
        "name": "S1",
        "size": "S1",
        "tier": "Standard"
    },
    
  3. Pokud chcete zobrazit konfiguraci zásobníku nasazení, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  4. Všimněte si oddílu prostředků výstupu. Teď vidíme existující pracovní prostor služby Log Analytics a novou instanci Application Insights uvedenou jako spravované prostředky. Výsledek by se měl podobat následujícímu výstupu:

    "resources": [
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      }
    ],
    
  1. Pokud chcete zobrazit konfiguraci plánu služby App Service, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    $plan = Get-AzAppServicePlan `
        -ResourceGroupName rg-depositsApplication `
        -Name plan-deposits
    $sku = $plan.Sku
    $sku
    
  2. Všimněte si výstupu. Plán služby App Service je teď na skladové posílce S1. Mělo by se podobat následujícímu:

    Name         : S1
    Tier         : Standard
    Size         : S1
    Family       : S
    Capacity     : 1
    
  3. Pokud chcete zobrazit konfiguraci zásobníku nasazení, spusťte z terminálu v editoru Visual Studio Code následující příkaz.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  4. Všimněte si oddílu prostředků výstupu. Teď vidíme existující pracovní prostor služby Log Analytics a novou instanci Application Insights uvedenou jako spravované prostředky. Výsledek by se měl podobat následujícímu výstupu:

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/                        sql-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits