Exercício - Use parâmetros do bíceps com vários ambientes

Concluído

Agora que seu fluxo de trabalho é implantado em ambos os ambientes, você está pronto para integrar com a API de terceiros para análises de produtos.

A equipe do seu site forneceu as chaves de API e URLs que seu site deve usar para acessar o serviço. Há valores diferentes para seus ambientes de teste e produção usarem. Nesta unidade, você atualizará seu fluxo de trabalho para configurar cada um de seus ambientes com as configurações corretas para a API de revisão do produto.

Durante o processo, você:

  • Crie segredos para as chaves de API de revisão para cada um dos seus ambientes.
  • Atualize o fluxo de trabalho com os valores de entrada e secretos corretos para cada ambiente.
  • Atualize seu arquivo Bicep para propagar as configurações necessárias para a API de revisão do produto.
  • Analise os resultados do fluxo de trabalho e as alterações no seu ambiente do Azure.

Adicionar segredos

Você decide armazenar as chaves de API em segredos do GitHub, para garantir que elas sejam protegidas adequadamente.

  1. No seu browser, aceda a Definições>Segredos e variáveis>Ações.

    Screenshot of GitHub that shows the Secrets menu item under the Settings category.

  2. Selecione o botão Novo segredo do repositório.

  3. Digite REVIEW_API_KEY_TEST como o nome secreto e sandboxsecretkey como o valor.

    Screenshot of GitHub showing a new secret.

  4. Selecione Add secret (Adicionar segredo).

  5. Repita o processo para adicionar outro segredo chamado REVIEW_API_KEY_PRODUCTION como o nome secreto e productionsecretkey como o valor. Selecione Add secret (Adicionar segredo).

Atualize o arquivo deploy.yml para usar as novas configurações

  1. No Visual Studio Code, abra o arquivo deploy.yml .

  2. Atualize o gatilho do fluxo de trabalho para incluir novos valores para as inputs configurações e 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
    

    Observe que você inclui as URLs da API como entradas porque elas não são valores secretos.

  3. validate No trabalho, atualize as etapas para incluir os novos parâmetros de implantação:

    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. Atualize o deploy trabalho para incluir os novos parâmetros de implantação:

    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. Guarde as alterações ao ficheiro.

Atualize o arquivo workflow.yml para fornecer as novas configurações

  1. No Visual Studio Code, abra o arquivo workflow.yml .

  2. Adicione as reviewApiUrl entradas e os reviewApiKey segredos para cada ambiente:

    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. Guarde as alterações ao ficheiro.

Atualizar o arquivo Bicep

  1. Abra o arquivo main.bicep .

  2. Abaixo dos parâmetros que já estão no arquivo, adicione os seguintes parâmetros para a nova API de revisão:

    @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. Atualize a definição de recurso para fornecer a URL da API de appServiceApp revisão e a chave para o aplicativo, para que o código do seu site possa usá-los:

    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. Guarde as alterações ao ficheiro.

  5. Confirme e envie suas alterações para o repositório Git usando os seguintes comandos:

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

Revise os resultados da implantação

  1. No navegador, acesse as execuções do fluxo de trabalho.

  2. Selecione a execução mais recente.

  3. Selecione a execução mais recente do seu fluxo de trabalho.

    Aguarde a pausa do fluxo de trabalho antes do trabalho de implantação-produção/implantação . Pode levar alguns minutos para que o fluxo de trabalho chegue a esse ponto.

  4. Aprove a implantação no ambiente de produção selecionando Revisar implantações, selecionando Produção e selecionando Aprovar e implantar.

    Aguarde até que a execução do fluxo de trabalho termine.

  5. Selecione Código e, em seguida, selecione o ambiente de produção .

    Observe que agora você vê várias implantações no histórico do ambiente.

  6. No browser, aceda ao Portal do Azure.

  7. Vá para o grupo de recursos ToyWebsiteProduction .

  8. Na lista de recursos, abra o aplicativo Serviço de Aplicativo do Azure.

    Selecione Configuração.

    Screenshot of the Azure portal that shows the App Service app and the Configuration menu item.

  9. Selecione Mostrar valores.

    Screenshot of the Azure portal that shows the App Service app settings and the button for showing values.

  10. Observe que os valores para as configurações ReviewApiKey e ReviewApiUrl são definidos para os valores que você configurou para o ambiente de produção.

    Screenshot of the Azure portal that shows the App Service app settings and the configuration settings.

  11. Compare os valores atuais com as definições de configuração para o aplicativo Serviço de Aplicativo no grupo de recursos ToyWebsiteTest . Observe que os valores são diferentes.

Limpar os recursos

Agora que concluiu o exercício, pode remover os recursos para não ser cobrado por eles.

No terminal de código do Visual Studio, execute os seguintes comandos:

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

O grupo de recursos é excluído em segundo plano.

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