Cvičení – použití parametrů Bicep s několika prostředími

Dokončeno

Teď, když se váš pracovní postup nasadí do obou vašich prostředí, jste připraveni integrovat s rozhraním API třetích stran pro recenze produktů.

Váš webový tým vám poskytl klíče rozhraní API a adresy URL, které by váš web měl použít pro přístup ke službě. Pro použití testovacího a produkčního prostředí existují různé hodnoty. V této lekci aktualizujete pracovní postup tak, aby každý z vašich prostředí nakonfigurovali správná nastavení pro rozhraní API pro kontrolu produktů.

Během tohoto procesu:

  • Vytvořte tajné kódy pro kontrolu klíčů rozhraní API pro každé vaše prostředí.
  • Aktualizujte pracovní postup správnými vstupními a tajnými hodnotami pro každé prostředí.
  • Aktualizujte soubor Bicep, aby se rozšířilo nastavení, které potřebujete pro rozhraní API pro kontrolu produktu.
  • Zkontrolujte výsledky pracovního postupu a změny prostředí Azure.

Přidání tajných kódů

Rozhodnete se uložit klíče rozhraní API do tajných kódů GitHubu, abyste měli jistotu, že jsou správně chráněné.

  1. V prohlížeči přejděte na Akce tajných kódů a proměnných>nastavení.>

    Snímek obrazovky GitHubu s položkou nabídky Tajné kódy v kategorii Nastavení

  2. Vyberte tlačítko Nový tajný kód úložiště.

  3. Jako název tajného kódu zadejte REVIEW_API_KEY_TEST a jako hodnotu zadejte sandboxsecretkey .

    Snímek obrazovky GitHubu s novým tajným kódem

  4. Vyberte Add secret (Přidat tajný kód).

  5. Opakováním procesu přidejte další tajný klíč s názvem REVIEW_API_KEY_PRODUCTION jako název tajného kódu a jako hodnotu productionsecretkey . Vyberte Add secret (Přidat tajný kód).

Aktualizujte soubor deploy.yml tak, aby používal nové nastavení.

  1. V editoru Visual Studio Code otevřete soubor deploy.yml .

  2. Aktualizujte trigger pracovního postupu tak, aby zahrnoval nové hodnoty pro inputs nastavení:secrets

    on:
      workflow_call:
        inputs:
          environmentType:
            required: true
            type: string
          resourceGroupName:
            required: true
            type: string
          reviewApiUrl:
            required: true
            type: string
        secrets:
          AZURE_CLIENT_ID:
            required: true
          AZURE_TENANT_ID:
            required: true
          AZURE_SUBSCRIPTION_ID:
            required: true
          reviewApiKey:
            required: true
    

    Všimněte si, že adresy URL rozhraní API zahrnete jako vstupy, protože nejsou tajné hodnoty.

  3. validate V úloze aktualizujte kroky tak, aby zahrnovaly nové parametry nasazení:

    jobs:
      validate:
         runs-on: ubuntu-latest
         steps:
         - uses: actions/checkout@v3
         - uses: azure/login@v1
           name: Sign in to Azure
           with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
         - if: inputs.environmentType != 'Production'
           uses: azure/arm-deploy@v1
           name: Run preflight validation
           with:
             deploymentName: ${{ github.run_number }}
             resourceGroupName: ${{ inputs.resourceGroupName }}
             template: ./deploy/main.bicep
             parameters: >
               environmentType=${{ inputs.environmentType }}
               reviewApiUrl=${{ inputs.reviewApiUrl }}
               reviewApiKey=${{ secrets.reviewApiKey }}
             deploymentMode: Validate
         - if: inputs.environmentType == 'Production'
           uses: azure/arm-deploy@v1
           name: Run what-if
           with:
             failOnStdErr: false
             resourceGroupName: ${{ inputs.resourceGroupName }}
             template: ./deploy/main.bicep
             parameters: >
               environmentType=${{ inputs.environmentType }}
               reviewApiUrl=${{ inputs.reviewApiUrl }}
               reviewApiKey=${{ secrets.reviewApiKey }}
             additionalArguments: --what-if
    
  4. deploy Aktualizujte úlohu tak, aby zahrnovala nové parametry nasazení:

    deploy:
      needs: validate
      environment: ${{ inputs.environmentType }}
      runs-on: ubuntu-latest
      outputs:
        appServiceAppHostName: ${{ steps.deploy.outputs.appServiceAppHostName }}
      steps:
      - uses: actions/checkout@v3
      - uses: azure/login@v1
        name: Sign in to Azure
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - uses: azure/arm-deploy@v1
        id: deploy
        name: Deploy Bicep file
        with:
          failOnStdErr: false
          deploymentName: ${{ github.run_number }}
          resourceGroupName: ${{ inputs.resourceGroupName }}
          template: ./deploy/main.bicep
          parameters: >
            environmentType=${{ inputs.environmentType }}
            reviewApiUrl=${{ inputs.reviewApiUrl }}
            reviewApiKey=${{ secrets.reviewApiKey }}
    
  5. Uložte změny souboru.

Aktualizujte soubor workflow.yml tak, aby poskytoval nové nastavení.

  1. V editoru Visual Studio Code otevřete soubor workflow.yml .

  2. reviewApiUrl Přidejte vstupy a reviewApiKey tajné kódy pro každé prostředí:

    name: deploy-toy-website-environments
    concurrency: toy-company
    
    on:
      push:
        branches:
          - main
      workflow_dispatch:
    
    permissions:
      id-token: write
      contents: read
    
    jobs:
    
      # Lint the Bicep file.
      lint:
        uses: ./.github/workflows/lint.yml
    
      # Deploy to the test environment.
      deploy-test:
        uses: ./.github/workflows/deploy.yml
        needs: lint
        with:
          environmentType: Test
          resourceGroupName: ToyWebsiteTest
          reviewApiUrl: https://sandbox.contoso.com/reviews
        secrets:
          AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_TEST }}
          AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
          AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
          reviewApiKey: ${{ secrets.REVIEW_API_KEY_TEST }}
    
      # Deploy to the production environment.
      deploy-production:
        uses: ./.github/workflows/deploy.yml
        needs: deploy-test
        with:
          environmentType: Production
          resourceGroupName: ToyWebsiteProduction
          reviewApiUrl: https://api.contoso.com/reviews
        secrets:
          AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_PRODUCTION }}
          AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
          AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
          reviewApiKey: ${{ secrets.REVIEW_API_KEY_PRODUCTION }}
    
  3. Uložte změny souboru.

Aktualizace souboru Bicep

  1. Otevřete soubor main.bicep.

  2. Pod parametry, které jsou již v souboru, přidejte následující parametry pro nové revizní rozhraní API:

    @description('The URL to the product review API.')
    param reviewApiUrl string
    
    @secure()
    @description('The API key to use when accessing the product review API.')
    param reviewApiKey string
    
  3. appServiceApp Aktualizujte definici prostředku tak, aby poskytovala adresu URL a klíč rozhraní API pro kontrolu aplikace, aby je kód vašeho webu mohl používat:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }
            {
              name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
              value: applicationInsights.properties.ConnectionString
            }
            {
              name: 'ReviewApiUrl'
              value: reviewApiUrl
            }
            {
              name: 'ReviewApiKey'
              value: reviewApiKey
            }
          ]
        }
      }
    }
    
  4. Uložte změny souboru.

  5. Potvrďte a nasdílejte změny do úložiště Git pomocí následujících příkazů:

    git add .
    git commit -m "Add new review API settings to Bicep file and workflow"
    git push
    

Kontrola výsledků nasazení

  1. V prohlížeči přejděte ke spuštění pracovního postupu.

  2. Vyberte poslední spuštění.

  3. Vyberte poslední spuštění pracovního postupu.

    Počkejte, než se pracovní postup pozastaví před úlohou deploy-production / deploy . Dosažení tohoto bodu může trvat několik minut.

  4. Schvalte nasazení do produkčního prostředí tak , že vyberete Zkontrolovat nasazení, pak vyberete Produkční a vyberete Schválit a nasadit.

    Počkejte, až se pracovní postup dokončí.

  5. Vyberte Kód a pak vyberte produkční prostředí.

    Všimněte si, že v historii prostředí se teď zobrazuje více nasazení.

  6. V prohlížeči přejděte na web Azure Portal.

  7. Přejděte do skupiny prostředků ToyWebsiteProduction .

  8. V seznamu prostředků otevřete aplikaci Aplikace Azure Service.

    Vyberte Konfigurace.

    Snímek obrazovky webu Azure Portal, který zobrazuje aplikaci App Service a položku nabídky Konfigurace

  9. Vyberte Zobrazit hodnoty.

    Snímek obrazovky webu Azure Portal zobrazující nastavení aplikace App Service a tlačítko pro zobrazení hodnot

  10. Všimněte si, že hodnoty nastavení ReviewApiKey a ReviewApiUrl jsou nastaveny na hodnoty, které jste nakonfigurovali pro produkční prostředí.

    Snímek obrazovky webu Azure Portal, který zobrazuje nastavení aplikace App Service a nastavení konfigurace

  11. Porovnejte aktuální hodnoty s nastavením konfigurace pro aplikaci App Service ve skupině prostředků ToyWebsiteTest . Všimněte si, že se hodnoty liší.

Vyčištění prostředků

Teď, když jste cvičení dokončili, můžete odebrat prostředky, abyste za ně neúčtoli.

V terminálu editoru Visual Studio Code spusťte následující příkazy:

az group delete --resource-group ToyWebsiteTest --yes --no-wait
az group delete --resource-group ToyWebsiteProduction --yes --no-wait

Skupina prostředků se odstraní na pozadí.

Remove-AzResourceGroup -Name ToyWebsiteTest -Force
Remove-AzResourceGroup -Name ToyWebsiteProduction -Force