Exercício - Use parâmetros do bíceps com vários ambientes
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.
No seu browser, aceda a Definições>Segredos e variáveis>Ações.
Selecione o botão Novo segredo do repositório.
Digite REVIEW_API_KEY_TEST como o nome secreto e sandboxsecretkey como o valor.
Selecione Add secret (Adicionar segredo).
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
No Visual Studio Code, abra o arquivo deploy.yml .
Atualize o gatilho do fluxo de trabalho para incluir novos valores para as
inputs
configurações esecrets
: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.
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
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 }}
Guarde as alterações ao ficheiro.
Atualize o arquivo workflow.yml para fornecer as novas configurações
No Visual Studio Code, abra o arquivo workflow.yml .
Adicione as
reviewApiUrl
entradas e osreviewApiKey
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 }}
Guarde as alterações ao ficheiro.
Atualizar o arquivo Bicep
Abra o arquivo main.bicep .
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
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 } ] } } }
Guarde as alterações ao ficheiro.
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
No navegador, acesse as execuções do fluxo de trabalho.
Selecione a execução mais recente.
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.
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.
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.
No browser, aceda ao Portal do Azure.
Vá para o grupo de recursos ToyWebsiteProduction .
Na lista de recursos, abra o aplicativo Serviço de Aplicativo do Azure.
Selecione Configuração.
Selecione Mostrar valores.
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.
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