Cvičení – přidání úlohy nasazení Bicep do kanálu

Dokončeno

Vytvořili jste základní kanál a nakonfigurovali jste prostředí Azure a Azure Pipelines pro připojení. Teď jste připraveni nasadit soubor Bicep webu do Azure z vašeho kanálu.

V tomto cvičení:

  • Přidejte do úložiště soubor Bicep.
  • Přidejte krok kanálu pro nasazení souboru Bicep.
  • Znovu spusťte kanál a ověřte, že web úspěšně nasadil.

Přidání souboru Bicep webu do úložiště Git

Už jste připravili soubor Bicep vašeho webu. Soubor Bicep můžete použít k nasazení různých konfigurací prostředků webu v závislosti na prostředí a konfiguraci. Tady přidáte soubor Bicep do úložiště.

  1. Otevřete Průzkumníka editoru Visual Studio Code.

  2. Ve složce deploy vytvořte nový soubor s názvem main.bicep. Ujistěte se, že soubor vytvoříte ve složce deploy , a ne v kořenovém adresáři úložiště:

    Snímek obrazovky s Průzkumníkem editoru Visual Studio Code se zvýrazněným hlavním souborem bicep a umístěným ve složce nasazení

  3. Do souboru main.bicep zkopírujte následující kód:

    @description('The Azure region into which the resources should be deployed.')
    param location string = resourceGroup().location
    
    @description('The type of environment. This must be nonprod or prod.')
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
    @description('Indicates whether to deploy the storage account for toy manuals.')
    param deployToyManualsStorageAccount bool
    
    @description('A unique suffix to add to resource names that need to be globally unique.')
    @maxLength(13)
    param resourceNameSuffix string = uniqueString(resourceGroup().id)
    
    var appServiceAppName = 'toy-website-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website-plan'
    var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}'
    
    // Define the SKUs for each component based on the environment type.
    var environmentConfigurationMap = {
      nonprod: {
        appServicePlan: {
          sku: {
            name: 'F1'
            capacity: 1
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_LRS'
          }
        }
      }
      prod: {
        appServicePlan: {
          sku: {
            name: 'S1'
            capacity: 2
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_ZRS'
          }
        }
      }
    }
    
    var toyManualsStorageAccountConnectionString = deployToyManualsStorageAccount ? 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}' : ''
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
    resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (deployToyManualsStorageAccount) {
      name: toyManualsStorageAccountName
      location: location
      kind: 'StorageV2'
      sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku
    }
    
  4. Uložte změny souboru.

  5. V terminálu editoru Visual Studio Code spusťte tento kód a připravte změny, potvrďte změny a nasdílejte změny do úložiště:

    git add deploy/main.bicep
    git commit -m 'Add Bicep file'
    git push
    

Nahrazení kroků kanálu

Dále aktualizujte definici kanálu tak, aby nasadil soubor Bicep do Azure pomocí připojení služby.

  1. V editoru Visual Studio Code otevřete soubor deploy/azure-pipelines.yml .

  2. jobs: Před řádek přidejte, variables: abyste definovali proměnnou s názvem deploymentDefaultLocation:

    trigger: none
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
    - name: deploymentDefaultLocation
      value: westus3
    
    jobs:
    
  3. Pokud chcete odebrat script krok z definice kanálu, odstraňte dolní dva řádky souboru.

    Tip

    Když pracujete v editoru Visual Studio Code a máte nainstalované rozšíření Azure Pipelines, zkuste použít kombinaci kláves Ctrl+Mezerník . Zobrazuje místní nabídku s navrhovanými prvky, které se mají přidat na aktuální pozici kurzoru.

  4. V dolní části souboru přidejte úlohu, která pomocí AzureResourceManagerTemplateDeployment úlohy nasadí váš soubor Bicep:

    jobs:
    - job:
      steps:
    
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          connectedServiceName: $(ServiceConnectionName)
          deploymentName: $(Build.BuildNumber)
          location: $(deploymentDefaultLocation)
          resourceGroupName: $(ResourceGroupName)
          csmFile: deploy/main.bicep
          overrideParameters: >
            -environmentType $(EnvironmentType)
            -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
    

    Poznámka:

    Místo kopírování a vkládání tohoto kódu z tohoto modulu je vhodné tento kód zadat sami. Věnujte pozornost odsazení souboru. Pokud vaše odsazení není správné, soubor YAML nebude platný. Visual Studio Code označuje chyby zobrazením vlnovek.

    Tento krok používá k pojmenování nasazení systémovou proměnnou $(Build.BuildNumber). Proměnná vám pomůže snadno zjistit, který kanál spustí nasazení.

    Úkol location vyžaduje AzureResourceManagerTemplateDeployment vlastnost úkolu. Určuje oblast Azure, do které se má vytvořit skupina prostředků. V tomto cvičení jste už vytvořili skupinu prostředků a umístění, které tady zadáte, nezáleží. Přesto ale musíte zadat hodnotu. Tady ji nastavíte na hodnotu deploymentDefaultLocation proměnné, kterou jste nastavili v předchozím kroku.

  5. Uložte změny souboru. Soubor by měl vypadat jako v tomto příkladu:

    trigger: none
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
    - name: deploymentDefaultLocation
      value: westus3
    
    jobs:
    - job:
      steps:
    
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          connectedServiceName: $(ServiceConnectionName)
          deploymentName: $(Build.BuildNumber)
          location: $(deploymentDefaultLocation)
          resourceGroupName: $(ResourceGroupName)
          csmFile: deploy/main.bicep
          overrideParameters: >
            -environmentType $(EnvironmentType)
            -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
    
  6. V terminálu editoru Visual Studio Code připravte změny, potvrďte je do úložiště a nasdílejte je do Azure Repos:

    git add deploy/azure-pipelines.yml
    git commit -m 'Add deployment task to pipeline'
    git push
    

Přidání proměnných kanálu

  1. V prohlížeči vyberte Kanály.

    Snímek obrazovky Azure DevOps se zvýrazněnou nabídkou Pipelines

  2. Vyberte váš kanál.

    Snímek obrazovky Azure DevOps se seznamem kanálů se zvýrazněným kanálem webu toy

  3. Vyberte položku Upravit.

    Snímek obrazovky Azure DevOps se zvýrazněným kanálem Upravit

  4. Vyberte Proměnné.

    Snímek obrazovky Azure DevOps, který zobrazuje editor kanálu se zvýrazněným tlačítkem Proměnné

  5. Vyberte Možnost Nová proměnná.

    Snímek obrazovky Azure DevOps s editorem proměnných kanálu se zvýrazněným tlačítkem Nová proměnná

  6. Do pole Název zadejte ServiceConnectionName. Do pole Hodnota zadejte ToyWebsite.

    Nechejte políčka nezaškrtnutá a vyberte OK.

    Snímek obrazovky Azure DevOps znázorňující editor proměnných kanálu se zvýrazněným tlačítkem OK

  7. Pokud chcete vytvořit více proměnných, vyberte +.

    Snímek obrazovky Azure DevOps se seznamem proměnných kanálu se zvýrazněným tlačítkem plus

    Vytvořte následující proměnné stejným způsobem, jakým jste vytvořili proměnnou ServiceConnectionName :

    Název proměnné Hodnota
    ResourceGroupName Web ToyWebsite
    EnvironmentType neproprody
  8. Dokončete kroky znovu a vytvořte proměnnou s názvem DeployToyManualsStorageAccount s hodnotou true. Pro tuto proměnnou zaškrtněte políčko Umožnit uživatelům přepsat tuto hodnotu při spuštění tohoto kanálu .

    Snímek obrazovky Azure DevOps s editorem proměnných kanálu

  9. Po vytvoření všech čtyř proměnných vyberte Uložit.

    Snímek obrazovky Azure DevOps s editorem proměnných kanálu se zvýrazněným tlačítkem Uložit

Spuštění kanálu

Teď jste připraveni spustit svůj kanál.

Vaše šablona obsahuje účet úložiště, který váš webový tým používá k ukládání návodů pro hračky. Vzhledem k tomu, že stále testujete své prostředí, nemusíte nasazovat účet úložiště při každém nasazení webu. Proto jste vytvořili parametr Bicep, který určuje, jestli je účet úložiště nasazený. Tady spustíte kanál a přepíšete nasazení tak, aby tentokrát nenasadí účet úložiště.

  1. Vyberte Spustit.

    Snímek obrazovky Azure DevOps s kanálem se zvýrazněným tlačítkem Spustit

    Zobrazí se podokno Spustit kanál . V tomto podokně můžete nakonfigurovat nastavení pro toto konkrétní spuštění kanálu.

  2. Vyberte Proměnné.

    Snímek obrazovky Azure DevOps se stránkou Spustit kanál a zvýrazněnou položkou nabídky Proměnné

  3. Vyberte proměnnou DeployToyManualsStorageAccount a změňte její hodnotu na false. Pak vyberte Aktualizovat.

    Snímek obrazovky Azure DevOps s editorem proměnných Spustit kanál a zvýrazněným tlačítkem Aktualizovat

  4. Vyberte šipku zpět.

    Snímek obrazovky Azure DevOps se stránkou Spustit kanál se zvýrazněnou šipkou zpět

  5. Pokud chcete spustit nové spuštění kanálu, vyberte Spustit. Spuštění kanálu může trvat několik minut. Po spuštění kanálu může dokončení nasazení trvat několik minut.

  6. Pokud chcete tuto úlohu otevřít, vyberte v části Úlohy možnost Úloha. Úlohu můžete monitorovat při spuštění nebo můžete počkat, až se úloha dokončí, abyste zkontrolovali jeho historii.

    Počkejte, až se úloha dokončí.

  7. Vyberte Úloha.

    Snímek obrazovky Azure DevOps se stránkou úlohy se zvýrazněnou položkou nabídky Úloha

  8. Vyberte 1 použitou časová proměnná fronty.

    Snímek obrazovky Azure DevOps, který zobrazuje protokol kanálu se zvýrazněnou položkou 1 časová proměnná fronty

    Zobrazí se přepsaná hodnota pro toto spuštění kanálu. Hodnota DeployToyManualsStorageAccount proměnné je false , protože jste přepsali původní hodnotu.

  9. Zkontrolujte zbývající výstup kanálu.

    Kanál ukazuje úspěšné nasazení.

Ověření nasazení

  1. Přejděte na Azure Portal.

  2. V levé nabídce vyberte Skupiny prostředků.

  3. Vyberte Web ToyWebsite.

  4. V přehledu zobrazte stav nasazení. Uvidíte, že jedno nasazení bylo úspěšné.

    Snímek obrazovky webu Azure Portal znázorňující skupinu prostředků s jedním úspěšným nasazením

  5. Pokud chcete zobrazit podrobnosti o nasazení, vyberte možnost označující 1 úspěšné nasazení.

    Snímek obrazovky webu Azure Portal znázorňující historii nasazení skupiny prostředků se zvýrazněným nasazením

    Název nasazení je stejný jako název spuštění kanálu.

  6. Pokud chcete zjistit, jaké prostředky byly nasazeny, vyberte nasazení. Pokud chcete nasazení rozbalit, abyste zobrazili další podrobnosti, vyberte Podrobnosti o nasazení. V tomto případě existuje plán služby Aplikace Azure a aplikace.

    Snímek obrazovky webu Azure Portal s podrobnostmi o nasazení skupiny prostředků se zvýrazněnými prostředky služby App Service