Exercício – Configurar o seu ambiente

Concluído

Importante

Precisa da sua própria subscrição do Azure para executar este exercício e poderá incorrer em custos. Se ainda não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Antes de começar a trabalhar no fluxo de trabalho do site da sua empresa de brinquedos, você precisa configurar seu ambiente. Nesta unidade, você garante que seus ambientes Azure e GitHub estejam configurados para concluir o restante deste módulo.

Para atingir esses objetivos, você:

  • Configure um repositório GitHub para este módulo.
  • Clone o repositório do projeto para o seu computador.
  • Crie duas identidades de carga de trabalho no Microsoft Entra ID.
  • Crie dois grupos de recursos no Azure.
  • Crie segredos e ambientes no GitHub.

Obtenha o repositório GitHub

Aqui, você garante que seu repositório GitHub esteja configurado para concluir o restante deste módulo. Você o configura criando um novo repositório com base em um repositório de modelos. O repositório de modelos contém os arquivos que você precisa para começar este módulo.

Os módulos deste percurso de aprendizagem fazem parte de uma progressão. Para fins de aprendizagem, cada módulo tem um repositório de modelos GitHub associado.

Gorjeta

Mesmo que tenha concluído o módulo anterior no caminho de aprendizagem, siga estas instruções para criar um novo repositório e garantir que lhe dá um novo nome.

Iniciar a partir do repositório de modelos

Execute um modelo que configure seu repositório GitHub.

No site do GitHub, siga estas etapas para criar um repositório a partir do modelo:

  1. Selecione Usar este modelo>Criar um novo repositório.

    Captura de tela da interface do GitHub mostrando o repositório de modelos, com o botão 'Usar este modelo' realçado.

  2. Selecione seu nome de usuário do GitHub na lista suspensa Proprietário .

  3. Insira um nome de repositório para seu novo projeto, como toy-website-end-to-end.

  4. Selecione a opção Público .

    Ao criar seus próprios repositórios, convém torná-los privados. Neste módulo, você trabalhará com alguns recursos do GitHub que funcionam apenas com repositórios públicos e com contas do GitHub Enterprise.

  5. Selecione Create repository (Criar repositório).

    Captura de tela da interface do GitHub mostrando a página de criação do repositório.

Importante

O exercício final deste módulo contém etapas de limpeza importantes. Certifique-se de seguir as etapas de limpeza, mesmo que não conclua este módulo.

Clonar o repositório

Agora você tem uma cópia do repositório de modelos em sua própria conta. Agora você clonará esse repositório localmente para começar a trabalhar nele.

  1. Selecione Código e selecione o ícone de cópia.

    Captura de tela da interface do GitHub mostrando o novo repositório, com o botão de cópia do repositório U R L realçado.

  2. Abra o Visual Studio Code.

  3. Abra uma janela de terminal do Visual Studio Code selecionando Terminal>New Terminal. A janela geralmente abre na parte inferior da tela.

  4. Navegue no terminal até o diretório onde deseja clonar o repositório GitHub em seu computador local. Por exemplo, para clonar o repositório para a pasta toy-website-environments , execute o seguinte comando:

    cd toy-website-end-to-end
    
  5. Escreva git clonee, em seguida, cole o URL copiado anteriormente. O comando deve ter a seguinte aparência:

    git clone https://github.com/mygithubuser/toy-website-end-to-end.git
    
  6. Reabra o Visual Studio Code na pasta do repositório executando o seguinte comando no terminal do Visual Studio Code:

    code -r toy-website-end-to-end
    

Iniciar sessão no Azure

Para trabalhar com grupos de recursos no Azure, inicie sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de ter instalado as ferramentas da CLI do Azure.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente abre na metade inferior da tela.

    O shell padrão é normalmente pwsh, como mostrado no lado direito da janela do terminal.

    Captura de tela da janela do terminal do Visual Studio Code, na qual pwsh é mostrado como a opção shell.

  2. Selecione a lista suspensa Iniciar perfil e, em seguida, selecione Azure Cloud Shell (Bash).

    Captura de tela da janela do terminal do Visual Studio Code. A lista suspensa do shell de terminal e o item de menu do Azure Cloud Shell (Bash) são mostrados.

    Um novo shell se abre.

Entrar no Azure usando a CLI do Azure

  1. No terminal do Visual Studio Code, execute o seguinte comando para entrar no Azure:

    az login
    
  2. No browser que se abre, inicie sessão na sua conta do Azure.

Para trabalhar com grupos de recursos no Azure, inicie sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente abre na metade inferior da tela.

    O shell padrão é normalmente pwsh, como mostrado no lado direito da janela do terminal.

    Captura de tela da janela do terminal do Visual Studio Code, na qual pwsh é mostrado como a opção shell.

  2. Selecione a lista suspensa Iniciar perfil e, em seguida, selecione Azure Cloud Shell (PowerShell).

    Captura de tela da janela do terminal do Visual Studio Code. A lista suspensa do shell de terminal e o item de menu do Azure Cloud Shell (PowerShell) são mostrados.

    Um novo shell se abre.

Iniciar sessão no Azure com o Azure PowerShell

  1. No terminal do Visual Studio Code, execute o seguinte comando para entrar no Azure:

    Connect-AzAccount
    
  2. No browser que se abre, inicie sessão na sua conta do Azure.

Criar duas identidades de carga de trabalho

Em seguida, crie duas identidades de carga de trabalho no Microsoft Entra ID: uma para seu ambiente de teste e outra para seu ambiente de produção.

  1. Execute o código a seguir para definir variáveis para seu nome de usuário do GitHub e seu nome de repositório. Certifique-se de substituir mygithubuser pelo seu nome de usuário do GitHub, que você observou anteriormente neste exercício. Certifique-se também de especificar o nome correto do repositório GitHub.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-end-to-end'
    
  2. Crie uma identidade de carga de trabalho para implantações em seu ambiente de teste. A identidade da carga de trabalho precisa de duas credenciais federadas: uma é usada quando o fluxo de trabalho executa o trabalho de validação , porque esse trabalho não está associado a um ambiente GitHub. O segundo é usado quando o fluxo de trabalho executa o trabalho de implantação , que é executado no ambiente Test GitHub.

    testApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-test')
    testApplicationRegistrationObjectId=$(echo $testApplicationRegistrationDetails | jq -r '.id')
    testApplicationRegistrationAppId=$(echo $testApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Test\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  3. Execute o código a seguir, que cria uma identidade de carga de trabalho semelhante e credenciais federadas para o ambiente de produção:

    productionApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-production')
    productionApplicationRegistrationObjectId=$(echo $productionApplicationRegistrationDetails | jq -r '.id')
    productionApplicationRegistrationAppId=$(echo $productionApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Production\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Execute o código a seguir para definir variáveis para seu nome de usuário do GitHub e seu nome de repositório. Certifique-se de substituir mygithubuser pelo seu nome de usuário do GitHub, que você observou anteriormente neste exercício. Certifique-se também de especificar o nome correto do repositório GitHub.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-end-to-end'
    
  2. Execute o código a seguir, que cria uma identidade de carga de trabalho para o ambiente de teste e a associa ao repositório GitHub:

    $testApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-test'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Test"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test-branch' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    
  3. Execute o código a seguir, que segue um processo semelhante para o ambiente de produção:

    $productionApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-production'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Production"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production-branch' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Criar dois grupos de recursos no Azure e conceder acesso à identidade da carga de trabalho

Em seguida, crie um grupo de recursos para cada ambiente. Esse processo também concede à respetiva identidade de carga de trabalho a função de Colaborador no grupo de recursos, o que permite que seu fluxo de trabalho seja implantado no grupo de recursos.

  1. Para criar o grupo de recursos do ambiente de teste e conceder acesso à identidade da carga de trabalho a ele, execute os seguintes comandos da CLI do Azure no terminal do Visual Studio Code:

    testResourceGroupResourceId=$(az group create --name ToyWebsiteTest --location westus3 --query id --output tsv)
    
    az ad sp create --id $testApplicationRegistrationObjectId
    az role assignment create \
       --assignee $testApplicationRegistrationAppId \
       --role Contributor \
       --scope $testResourceGroupResourceId
    
  2. Execute um processo semelhante para criar o grupo de recursos do ambiente de produção:

    productionResourceGroupResourceId=$(az group create --name ToyWebsiteProduction --location westus3 --query id --output tsv)
    
    az ad sp create --id $productionApplicationRegistrationObjectId
    az role assignment create \
       --assignee $productionApplicationRegistrationAppId \
       --role Contributor \
       --scope $productionResourceGroupResourceId
    
  1. Para criar o grupo de recursos do ambiente de teste e conceder acesso à identidade da carga de trabalho a ele, execute os seguintes comandos do Azure PowerShell no terminal do Visual Studio Code:

    $testResourceGroup = New-AzResourceGroup -Name ToyWebsiteTest -Location westus3
    
    New-AzADServicePrincipal -AppId $($testApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($testApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($testResourceGroup.ResourceId)
    
  2. Execute um processo semelhante para criar o grupo de recursos do ambiente de produção:

    $productionResourceGroup = New-AzResourceGroup -Name ToyWebsiteProduction -Location westus3
    
    New-AzADServicePrincipal -AppId $($productionApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($productionApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($productionResourceGroup.ResourceId)
    

Preparar segredos do GitHub

Execute o código a seguir para gerar os valores que você precisa criar como segredos do GitHub:

echo "AZURE_CLIENT_ID_TEST: $testApplicationRegistrationAppId"
echo "AZURE_CLIENT_ID_PRODUCTION: $productionApplicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID_TEST: $($testApplicationRegistration.AppId)"
Write-Host "AZURE_CLIENT_ID_PRODUCTION: $($productionApplicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

Criar segredos do GitHub

Você criou duas identidades de carga de trabalho e grupos de recursos nos quais eles podem ser implantados. Em seguida, crie segredos nas Ações do GitHub.

  1. No navegador, navegue até o repositório GitHub.

  2. Selecione Configurações>Segredos e variáveis>Ações.

  3. Selecione Novo segredo do repositório.

    Captura de tela da interface do GitHub mostrando a página 'Segredos', com o botão 'Criar segredo do repositório' realçado.

  4. Nomeie o segredo AZURE_CLIENT_ID_TEST.

  5. No campo Valor, cole o GUID da primeira linha da saída do terminal. Não inclua AZURE_CLIENT_ID_TEST, os dois pontos ou quaisquer espaços no valor.

  6. Selecione Add secret (Adicionar segredo).

    Captura de tela da interface do GitHub mostrando a página 'Novo segredo', com o nome e o valor concluídos e o botão 'Adicionar segredo' realçado.

  7. Repita o processo para criar os segredos para AZURE_CLIENT_ID_PRODUCTION, AZURE_TENANT_ID e AZURE_SUBSCRIPTION_ID, copiando os valores dos campos correspondentes na saída do terminal.

  8. Verifique se a sua lista de segredos agora mostra todos os quatro segredos.

    Captura de tela da interface do GitHub mostrando a lista de segredos, incluindo os segredos de teste e produção.

Criar ambientes no GitHub

  1. No navegador, vá para Configurações>de Ambientes.

  2. Selecione Novo ambiente.

    Captura de tela da interface do GitHub que mostra a página Ambientes e o botão para criar um ambiente.

  3. Insira Test como o nome do ambiente.

    Captura de tela da página do GitHub para um novo ambiente chamado Test, com o botão Configurar ambiente.

  4. Selecione Configurar ambiente.

  5. Selecione Ambientes para retornar à lista de ambientes.

    Captura de tela da página do GitHub para um novo ambiente chamado Test, com o link Ambiente.

  6. Repita o processo para criar outro ambiente chamado Production.

Nota

Nos módulos anteriores deste caminho de aprendizagem, você adicionou uma regra de proteção ao seu ambiente de produção. Neste módulo, para simplificar, você está ignorando a regra de proteção. No entanto, você mesmo pode adicionar a regra de proteção, se desejar.