Exercício – Configurar seu ambiente do Azure DevOps
Nesta unidade, você verificará se a organização do Azure DevOps está configurada para concluir o restante deste módulo. Você também criará os ambientes do Serviço de Aplicativo do Azure nos quais fará a implantação.
Para atingir essas metas:
- Adicione um usuário para verificar se o Azure DevOps pode se conectar à sua assinatura do Azure.
- Configure um projeto do Azure DevOps para este módulo.
- No Azure Boards, mova o item de trabalho deste módulo para a coluna Doing.
- Verifique se o projeto está configurado localmente para que você possa efetuar push das alterações para o pipeline.
- Crie o Serviço de Aplicativo do Azure e o aplicativo Azure Functions usando a CLI do Azure no Azure Cloud Shell.
- Crie variáveis de pipeline que definem os nomes de seu Serviço de Aplicativo e a instância do Azure Functions.
- Crie uma conexão de serviço que permita ao Azure Pipelines acessar com segurança a sua assinatura do Azure.
Adicionar um usuário ao Azure DevOps
Você deve ter uma assinatura do Azure própria para concluir este módulo. Comece a usar o Azure gratuitamente.
Embora você não precise ter uma assinatura do Azure para trabalhar com o Azure DevOps, este exercício está usando o Azure DevOps para implantar os recursos do Azure em sua assinatura do Azure. Para simplificar o processo, use a mesma conta Microsoft para entrar na assinatura do Azure e na organização do Azure DevOps.
Importante
Se você entrar com contas diferentes, deverá adicionar um usuário à sua organização DevOps com a conta Microsoft que você usa para entrar no Azure. Para obter mais informações, confira Adicionar usuários à sua organização ou projeto. Ao adicionar o usuário, escolha o nível de acesso Basic.
Depois, saia do Azure DevOps e entre com a nova conta de usuário. Use a conta Microsoft usada para entrar em sua assinatura do Azure.
Obter o projeto do Azure DevOps
Verifique se a sua organização do Azure DevOps está pronta para concluir o restante deste módulo. Para isso, você executará um modelo que cria um projeto no Azure DevOps.
Os módulos deste roteiro de aprendizagem formam uma progressão enquanto você segue a equipe da Tailspin ao longo do percurso de DevOps. Para fins de aprendizado, cada módulo tem o próprio projeto do Azure DevOps.
Executar o modelo
Execute um modelo que configura sua organização do Azure DevOps:
No site Gerador de Demonstração do Azure DevOps, selecione Entrar. Se solicitado, aceite os termos de uso. A página Criar um Projeto é exibida.
Na página Criar um Projeto, insira um nome de projeto, como Space Game – Web – Azure Functions e em Selecionar organização, escolha a organização que você usa na assinatura do Azure.
Na próxima seção, selecione Sim, desejo bifurcar esse repositório e selecione Autorizar.
Se uma janela aparecer, autorize o acesso à sua conta do GitHub.
Importante
A ativação dessa opção de fork é necessária para que o modelo se conecte ao repositório do GitHub. Selecione esta opção mesmo que já tenha criado um fork do projeto do site do Space Game. O modelo usa sua bifurcação existente.
Selecione Create Project.
O modelo leva alguns minutos para ser executado.
Quando o projeto for provisionado com êxito, selecione Navegar até o projeto para ir para o projeto no Azure DevOps.
Importante
A página Limpar seu ambiente do Azure DevOps neste módulo contém etapas importantes que você deve concluir, mesmo que você não conclua este módulo. A limpeza ajuda a garantir que você não fique sem minutos de build livres.
Definir a visibilidade do projeto
Inicialmente, o fork do repositório Space Game no GitHub é definido como público, ao passo que o projeto criado pelo modelo do Azure DevOps é definido como privado. Um repositório público no GitHub pode ser acessado por qualquer pessoa, enquanto um repositório privado só é acessível para você e para as pessoas com quem você escolhe compartilhá-lo. Da mesma forma, no Azure DevOps, os projetos públicos fornecem acesso somente leitura a usuários não autenticados, enquanto projetos privados exigem que os usuários tenham acesso e sejam autenticados para acessar os serviços.
No momento, não é necessário modificar nenhuma dessas configurações para os fins deste módulo. No entanto, em seus projetos pessoais, você precisa determinar a visibilidade e o acesso que deseja permitir às outras pessoas. Por exemplo, se o projeto for de código aberto, você poderá optar por tornar o repositório GitHub e o projeto do Azure DevOps públicos. Se o projeto for proprietário, normalmente, você tornará o repositório GitHub e o projeto do Azure DevOps privados.
Mais adiante você poderá se interessar pelos seguintes recursos para determinar qual opção é melhor para seu projeto:
- Usar projetos públicos e privados
- Guia de Início Rápido: Tornar público seu projeto privado
- Definir a visibilidade do repositório
Atribuir um item de trabalho e movê-lo para o estado Em execução
Aqui, você atribui um item de trabalho a si mesmo no Azure Boards e configura o estado do item de trabalho como Em execução. Na prática, você e sua equipe criarão itens de trabalho no início de cada sprint ou iteração de trabalho.
Este exercício cria uma lista de verificação que você usará para trabalhar. Isso dá aos outros membros da equipe visibilidade daquilo em que você está trabalhando e de quanto trabalho resta fazer. O item de trabalho também ajuda a impor limites de WIP (trabalho em andamento) para que a equipe não assuma trabalho demais ao mesmo tempo.
No Azure DevOps, navegue até a categoria Boards e selecione Boards no menu.
Abra a API Refatorar placar de líderes como um item de trabalho do Azure Function selecionando o título. Atribua esse item de trabalho a si mesmo e selecione Salvar e Fechar.
Selecione a seta para baixo na parte inferior do cartão e selecione Fazendo ou selecione o cartão e arraste-o para a coluna Fazendo.
O item de trabalho é movido da coluna A fazer para a coluna Em execução.
No final deste módulo, você moverá o cartão para a coluna Done depois de concluir a tarefa.
Criar os ambientes do Azure Functions e do Serviço de Aplicativo do Azure
Aqui você criará o Serviço de Aplicativo e o aplicativo do Azure Functions necessários para implantar a nova versão do site e da API.
No módulo do Learn Criar um pipeline de lançamento no Azure Pipelines, você acessou o Serviço de Aplicativo por meio do portal do Azure. Embora o portal seja uma ótima maneira de explorar o que está disponível no Azure ou de realizar tarefas básicas, abrir componentes como o Serviço de Aplicativo pode ser entediante.
Neste módulo, você usa a CLI do Azure para abrir uma instância do Serviço de Aplicativo. Você pode acessar a CLI do Azure de um terminal ou por meio do Visual Studio Code. Aqui, vamos acessar a CLI do Azure pelo Azure Cloud Shell. Essa experiência de shell baseada em navegador é hospedada na nuvem. No Cloud Shell, a CLI do Azure está configurada para uso com sua assinatura do Azure.
Importante
Você precisará usar sua assinatura do Azure para concluir os exercícios deste módulo.
Ativar o Cloud Shell por meio do portal do Azure
Entre no portal do Azure.
Nos controles globais no cabeçalho da página, selecione Cloud Shell.
Um terminal é aberto e se conecta ao Azure Cloud Shell.
Se necessário, selecione Bash no menu do terminal.
Observação
O Cloud Shell exige um recurso de Armazenamento do Azure para manter todos os arquivos que você criar no Cloud Shell. Ao abrir o Cloud Shell pela primeira vez, você precisará criar um grupo de recursos, uma conta de armazenamento e um compartilhamento de Arquivos do Azure. Essa configuração é usada automaticamente para todas as sessões futuras do Cloud Shell.
Selecionar uma região do Azure
Uma região é um ou mais datacenters do Azure em uma localização geográfica. Leste dos EUA, Oeste dos EUA e Norte da Europa são exemplos de regiões. Cada recurso do Azure, incluindo uma instância do Serviço de Aplicativo, recebe uma região.
Para facilitar a execução dos comandos, vamos começar selecionando uma região padrão. Depois que você especificar a região padrão, os comandos que você inserir usarão essa região, até que você especifique outra.
No Cloud Shell, execute o seguinte comando
az account list-locations
para listar as regiões que estão disponíveis na sua assinatura do Azure:az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
Na coluna
Name
na saída, escolha uma região perto de você. Por exemplo, escolhaeastasia
ouwestus2
.Execute
az configure
para definir a região padrão. Substitua<REGION>
pelo nome da região que você escolheu.az configure --defaults location=<REGION>
Este exemplo define
westus2
como a região padrão:az configure --defaults location=westus2
Criar variáveis Bash
Aqui, você criará variáveis do Bash para tornar o processo de instalação mais conveniente e menos propenso a erros. O uso de variáveis para cadeias de caracteres de texto compartilhadas ajuda a evitar erros de digitação acidentais.
No Cloud Shell, gere um número aleatório, que será usado para criar nomes globalmente exclusivos para determinados serviços na próxima etapa.
resourceSuffix=$RANDOM
Crie três nomes globalmente exclusivos para seu Serviço de Aplicativo, Azure Functions e contas de armazenamento. Esses comandos usam aspas duplas, o que instrui o Bash a resolver as variáveis usando a sintaxe embutida.
webName="tailspin-space-game-web-${resourceSuffix}" leaderboardName="tailspin-space-game-leaderboard-${resourceSuffix}" storageName="tailspinspacegame${resourceSuffix}"
Crie mais duas variáveis Bash para armazenar os nomes do seu grupo de recursos e plano de serviço.
rgName='tailspin-space-game-rg' planName='tailspin-space-game-asp'
Criar os recursos do Azure necessários
Nossa solução exige vários recursos do Azure para implantação, que criaremos agora.
Observação
Este exercício usa as configurações de rede padrão, para que seu site seja acessível pela Internet. Na prática, você pode configurar uma rede virtual do Azure para colocar seu site em uma rede que somente você e sua equipe possam acessar. Posteriormente, você poderá reconfigurar a sua rede virtual para disponibilizar o site para os usuários.
Execute o seguinte comando
az group create
para criar um grupo de recursos usando o nome que já foi definido:az group create --name $rgName
Execute o seguinte comando
az appservice plan create
para criar um plano do Serviço de Aplicativo usando o nome definido na tarefa anterior:az appservice plan create \ --name $planName \ --resource-group $rgName \ --sku B1 \ --is-linux
O parâmetro
--sku
especifica o plano B1. Esse plano é executado na camada Básica. O parâmetro--is-linux
especifica os trabalhadores do Linux (threads usados em eventos e agendamento de tarefas).Importante
Se o SKU B1 não estiver disponível na sua assinatura do Azure, escolha outro plano, como S1 (Standard).
Execute o seguinte comando
az webapp create
para criar a instância do Serviço de Aplicativo:az webapp create \ --name $webName \ --resource-group $rgName \ --plan $planName \ --runtime "DOTNETCORE|6.0"
O Azure Functions exige uma conta de armazenamento para a implantação. Execute o seguinte comando
az storage account create
para criá-la:az storage account create \ --name $storageName \ --resource-group $rgName \ --sku Standard_LRS
Execute o comando
az functionapp create
a seguir para criar a instância de aplicativo Azure Functions. Substitua<region>
pela sua região preferida.az functionapp create \ --name $leaderboardName \ --resource-group $rgName \ --storage-account $storageName \ --functions-version 4 \ --consumption-plan-location <region>
Execute o seguinte comando
az webapp list
para listar o nome do host e o estado da instância do Serviço de Aplicativo:az webapp list \ --resource-group $rgName \ --query "[].{hostName: defaultHostName, state: state}" \ --output table
Anote o nome do host do seu serviço em execução. Ele deve ser semelhante ao seguinte, mas o identificador de número aleatório será diferente. Você precisará do nome do host da Web posteriormente quando verificar o seu trabalho.
HostName State ---------------------------------------------- ------- tailspin-space-game-web-4692.azurewebsites.net Running
Execute o comando
az functionapp list
a seguir para listar o nome do host e o estado da instância do Azure Functions.az functionapp list \ --resource-group $rgName \ --query "[].{hostName: defaultHostName, state: state}" \ --output table
Anote o nome do host do seu serviço em execução. Ele deve ser semelhante ao seguinte, mas o identificador de número aleatório será diferente. Você precisará do nome do host do placar de líderes posteriormente quando verificar o seu trabalho.
HostName State ------------------------------------------------------ ------- tailspin-space-game-leaderboard-4692.azurewebsites.net Running
Copie esses dois nomes de host para um local que você possa acessar facilmente mais tarde.
Como uma etapa opcional, abra um navegador e insira um nome do host para verificar se ele está em execução. A home page padrão é exibida.
Importante
A página Limpar seu ambiente do Azure DevOps neste módulo contém etapas de limpeza importantes. A limpeza ajuda a garantir que você não seja cobrado pelos recursos do Azure depois de concluir este módulo. Execute as etapas de limpeza mesmo que não conclua este módulo.
Criar variáveis de pipeline no Azure Pipelines
No módulo Criar um pipeline de lançamento no Azure Pipelines, você adicionou uma variável ao pipeline que armazena o nome do seu aplicativo Web no Serviço de Aplicativo. Aqui, você fará o mesmo. Além disso, você adicionará o nome do aplicativo de placar de líderes para a instância do Azure Functions.
Você pode embutir esses nomes em sua configuração de pipeline, mas se os definir como variáveis, sua configuração será mais reutilizável. Além disso, se os nomes das instâncias forem alterados, você poderá atualizar as variáveis e disparar seu pipeline sem modificar sua configuração.
Vamos adicionar um grupo de variáveis ao seu projeto.
Seu projeto Space Game – Web – Azure Functions deve ser aberto no Azure DevOps.
No menu, selecione Pipelines e em Pipelines selecione Biblioteca. O painel Biblioteca é exibido.
Na barra de comandos ou no meio do painel, selecione Grupo de variáveis. A página Novo grupo de variáveis é exibida.
No nome do grupo de variáveis, insira Versão.
Em Variáveis, selecione Adicionar.
No nome da variável, insira WebAppName. No valor, insira o nome da instância do Serviço de Aplicativo que foi criada no aplicativo Web, como tailspin-space-game-web-4692.
Importante
Defina o nome da instância de Serviço de Aplicativo, não o nome do host completo. Neste exercício, por exemplo, tailspin-space-game-web-4692 é a parte da instância do nome do host tailspin-space-game-web-4692.azurewebsites.net.
Adicione outra variável chamada LeaderboardAppName com o valor da sua instância de placar de líderes, por exemplo tailspin-space-game-leaderboard-4692.
Adicione uma variável final chamada ResourceGroupName com o valor tailspin-space-game-rg.
Na barra de comandos próxima à parte superior da página, selecione Salvar para salvar o grupo de variáveis Versão no pipeline.
As variáveis em seu grupo de variáveis devem ser semelhantes:
Criar o ambiente de pico
Nos módulos anteriores, você criou ambientes para desenvolvimento, teste e preparo. Aqui, você fará o mesmo. Desta vez, você criará um ambiente chamado pico.
No menu Azure DevOps, em Pipelines, selecione Ambientes.
Selecione Criar ambiente. O painel Novo ambiente é exibido.
Em Nome, insira pico.
Deixe os outros campos com suas definições padrão.
Selecione Criar.
Criar uma conexão de serviço
Aqui, você criará uma conexão de serviço que permite que o Azure Pipelines acesse a assinatura do Azure. O Azure Pipelines usa essa conexão de serviço para implantar o site no Serviço de Aplicativo. Você criou uma conexão de serviço semelhante no módulo anterior.
Importante
Verifique se você está conectado tanto ao portal do Azure quanto ao Azure DevOps na mesma conta Microsoft.
No Azure DevOps, no projeto de pipeline Space Game – Web – Azure Functions, abaixo do menu, selecione Configurações do projeto. O painel Detalhes do projeto é exibido.
No menu, em Pipelines, selecione Conexões de serviço.
Na página Conexões de serviço, selecione Nova conexão de serviço e no painel Nova conexão de serviço, selecione Azure Resource Manager e selecione Próximo.
No painel Nova conexão de serviço, selecione Entidade de serviço (automática) e selecione Avançar.
No painel Nova conexão de serviço do Azure, selecione ou insira as seguintes configurações:
Campo Valor Scope level Assinatura Subscription Selecione sua Assinatura do Azure. Grupo de recursos tailspin-space-game-rg Service connection name Resource Manager – Tailspin – Space Game Durante o processo, talvez você precise entrar na sua conta Microsoft.
Verifique se a opção Grant access permission to all pipelines está selecionada.
Selecione Salvar.
O Azure DevOps executa uma conexão de teste para verificar se ele consegue se conectar à sua assinatura do Azure. Se o Azure DevOps não conseguir se conectar, você terá a oportunidade de entrar uma segunda vez.