Exercício – Configurar seu ambiente do Azure DevOps

Concluído

Nesta seção, você verá como configurar sua organização do Azure DevOps e criar o ambiente do Serviço de Aplicativo do Azure no qual você fará a implantação.

Você aprenderá a:

  • Configurar seu projeto do Azure DevOps.
  • Gerenciar seus itens de trabalho com o Azure Boards.
  • Criar o ambiente do Serviço de Aplicativo do Azure.
  • Criará variáveis de pipeline no Azure Pipelines.
  • Configurar uma conexão de serviço para se autenticar com uma 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.

Você não precisa ter uma assinatura do Azure para trabalhar com o Azure DevOps, porém, neste módulo, você usará o Azure DevOps para implantação nos recursos do Azure. Para simplificar o processo, use a mesma conta Microsoft para entrar no Azure e no Azure DevOps.

Se você usar contas Microsoft diferentes para entrar no Azure e no Azure DevOps, adicione um usuário com o nível de acesso Básico à sua organização do DevOps na conta Microsoft usada para entrar no Azure. Confira Adicionar usuários à sua organização ou ao seu projeto para obter mais detalhes.

Depois, saia do Azure DevOps e entre novamente nele usando a mesma conta que você usou para entrar na sua assinatura do Azure.

Obter o projeto do Azure DevOps

Aqui, você irá certificar-se que a sua organização do Azure DevOps esteja preparada para concluir o restante desse módulo. Para isso, você executará um modelo que cria um projeto no Azure DevOps.

Os módulos neste roteiro de aprendizagem formam uma progressão. Você acompanha a equipe Web 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 do Azure DevOps Demo Generator, execute estas etapas para executar o modelo:

  1. Selecione Sign In e aceite os termos de uso.

  2. Na página Create New Project, selecione a sua organização do Azure DevOps. Insira um nome de projeto, como Space Game – Web – Docker.

    Screenshot of creating a project through Azure DevOps Demo Generator.

  3. Selecione Yes, I want to fork this repository>Authorize. Se solicitado, autorize o acesso à sua conta do GitHub.

    Importante

    Você precisa selecionar essa opção, de modo que o modelo possa se conectar ao seu repositório GitHub. Marque a caixa de seleção mesmo que já tenha criado um fork do repositório Space Game. O modelo usará o fork existente.

  4. Selecione Create Project.

  5. Selecione Navigate to project para acessar o seu projeto no Azure DevOps.

Importante

Neste módulo, a página Limpar seu ambiente do Azure DevOps contém etapas de limpeza importantes. A limpeza ajuda a garantir que você não fique sem minutos de build livres. Siga as etapas de limpeza mesmo que não conclua este módulo.

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:

Mover o item de trabalho para Executando

Aqui, você atribuirá um item de trabalho a si mesmo no Azure Boards. Você também moverá o item de trabalho para o estado Executando. Na prática, você e sua equipe criarão itens de trabalho no início de cada sprint ou iteração de trabalho.

Essa atribuição de trabalho dá a você uma lista de verificação com a qual 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.

Aqui, você moverá o primeiro item, Criar versão de contêiner do site usando o Docker, para a coluna Executando e, em seguida, atribuir a si mesmo o item de trabalho.

Para configurar o item de trabalho:

  1. No Azure DevOps, acesse Boards. Em seguida, selecione Boards no menu.

    Screenshot of Azure DevOps showing the location of the Boards menu.

  2. No item de trabalho Criar versão de contêiner do site usando o Docker, selecione a seta para baixo na parte inferior do cartão e, em seguida, atribuir o item de trabalho a si mesmo.

    Screenshot of Azure Boards showing the location of the down arrow.

  3. Mova o item de trabalho da coluna To Do para a coluna Doing.

    Screenshot of Azure Boards showing the card in the Doing column.

No final deste módulo, você moverá o cartão para a coluna Done depois de concluir a tarefa.

Criar o ambiente do Serviço de Aplicativo do Azure

No módulo Criar um pipeline de lançamento com o Azure Pipelines, você criou uma instância do Serviço de Aplicativo usando o portal do Azure. Embora o portal seja uma excelente ferramenta para explorar as ofertas do Azure, a configuração de componentes como o Serviço de Aplicativo pode se tornar complicada.

Neste módulo, você empregará a CLI do Azure para iniciar os recursos necessários para implantar e executar 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.

Importante

Você precisará ter uma assinatura própria do Azure para realizar os exercícios deste módulo.

Inicializar o Cloud Shell no portal do Azure

  1. Acesse o portal do Azure e entre.

  2. Selecione o Cloud Shell na barra de menus e selecione a experiência Bash.

    Screenshot of the Azure portal showing the location of the Cloud Shell menu item.

    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 específica. Leste dos EUA, Oeste dos EUA e Norte da Europa são exemplos de regiões. Cada recurso do Azure, como uma instância do Serviço de Aplicativo, é alocado a uma região específica.

Para simplificar o processo de execução de comandos, comece selecionando uma região padrão. Depois que a região padrão for especificada, os comandos seguintes usarão essa região por padrão, a menos que outra região seja especificada explicitamente.

  1. Execute o comando a seguir para listar as regiões disponíveis para sua assinatura do Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Selecione uma região próxima à sua localização na coluna Nome na saída. Por exemplo, escolha eastasia ou westus2.

  3. Execute o comando a seguir para definir a região padrão. Substitua o espaço reservado pelo nome da região selecionado.

    az configure --defaults location=<REGION>
    

    Este exemplo define westus2 como a região padrão:

    az configure --defaults location=westus2
    

Criar variáveis Bash

Nesta seção, 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.

  1. No Cloud Shell, gere um número aleatório. Isso facilitará a criação de nomes globalmente exclusivos para determinados serviços na próxima etapa.

    resourceSuffix=$RANDOM
    
  2. Crie nomes globalmente exclusivos para o aplicativo Web do Serviço de Aplicativo e o Registro de Contêiner do Azure. A utilização de aspas duplas nesses comandos solicita que o Bash interpole as variáveis usando a sintaxe embutida.

    webName="tailspin-space-game-web-${resourceSuffix}"
    registryName="tailspinspacegame${resourceSuffix}"
    
  3. Crie mais duas variáveis Bash para armazenar os nomes do seu grupo de recursos e o Plano do Serviço de Aplicativo.

    rgName='tailspin-space-game-rg'
    planName='tailspin-space-game-asp'
    

Criar os recursos do Azure

Observação

Para fins de aprendizado, você usa as configurações de rede padrão aqui. As configurações tornam o seu site acessível pela Internet. Na prática, você pode configurar uma rede virtual do Azure que coloca o seu site em uma rede que não é roteável pela Internet e que apenas você e sua equipe podem acessar. Posteriormente, você poderá reconfigurar a sua rede para disponibilizar o site para os usuários.

  1. Execute o comando az group create a seguir para criar um grupo de recursos usando o nome definido anteriormente.

    az group create --name $rgName
    
  2. Execute o comando az acr create a seguir para criar um Registro de Contêiner do Azure usando o nome definido anteriormente.

    az acr create --name $registryName \
      --resource-group $rgName \
      --sku Standard \
      --admin-enabled true
    
  3. Execute o comando az appservice plan create a seguir para criar um plano do Serviço de Aplicativo usando o nome definido anteriormente.

    az appservice plan create \
      --name $planName \
      --resource-group $rgName \
      --sku B1 \
      --is-linux
    

    O argumento --sku especifica o plano B1. Esse plano é executado na camada Básica. O argumento --is-linux especifica o uso de trabalhadores do Linux.

    Importante

    Se o SKU B1 não estiver disponível na sua assinatura do Azure, escolha outro plano, como S1 (Standard).

  4. Execute o comando az webapp create a seguir para criar a instância do Serviço de Aplicativo.

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --deployment-container-image-name $registryName.azurecr.io/web:latest
    
  5. Execute o comando az webapp list a seguir 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 serviço em execução. Você precisará dele mais tarde ao verificar seu trabalho. Veja um exemplo:

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  6. Execute o comando az acr list a seguir para listar o servidor de logon da instância do Registro de Contêiner do Azure. Você precisará desse nome do servidor ao criar variáveis de pipeline mais tarde.

    az acr list \
      --resource-group $rgName \
      --query "[].{loginServer: loginServer}" \
      --output table
    

    Anote o servidor de logon. Você precisará dele mais tarde ao configurar o pipeline. Veja um exemplo:

    LoginServer
    ---------------------------------
    tailspinspacegame4692.azurecr.io    
    

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

Em Criar um pipeline de lançamento no Azure Pipelines, você adicionou uma variável ao pipeline para armazenar o nome do seu aplicativo Web no Serviço de Aplicativo. Você fará a mesma coisa aqui. Além disso, você vai adicionar o nome do Registro de Contêiner do Azure.

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 o pipeline sem modificar a configuração.

Para adicionar as variáveis:

  1. No Azure DevOps, acesse o projeto Space Game – Web – Docker.

  2. Em Pipelines, selecione Library.

    Screenshot of Azure Pipelines showing the Library menu option.

  3. Selecione + Variable group.

  4. Em Properties, insira Release para o nome do grupo de variáveis.

  5. Em Variables, selecione + Add.

  6. No nome da variável, insira WebAppName. Para o valor, insira o nome da instância do Serviço de Aplicativo criada acima, como tailspin-space-game-web-4692.

    Importante

    Defina o nome da instância do Serviço de Aplicativo, não o nome do host. Neste exemplo, insira tailspin-space-game-web-4692, não tailspin-space-game-web-4692.azurewebsites.net.

  7. Repita o processo para adicionar outra variável chamada RegistryName com o valor do seu servidor de logon do Registro de Contêiner do Azure, como tailspinspacegame4692.azurecr.Io.

  8. Selecione permissões de Pipeline e selecione o sinal + para adicionar um pipeline. Selecione mslearn-tailspin-spacegame-web-docker para dar permissão ao pipeline para acessar o grupo de variáveis.

  9. Selecione Salvar na parte superior da página para salvar suas variáveis. Seu grupo de variáveis deve ter a seguinte aparência:

    Screenshot of Azure Pipeline showing the variable group. The group contains two variables.

Criar conexões de serviço necessárias

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. Você também vai criar uma conexão de registro do Docker para publicar seu contêiner no Registro de Contêiner do Azure.

Importante

Verifique se você está conectado tanto ao portal do Azure quanto ao Azure DevOps na mesma conta Microsoft.

  1. No Azure DevOps, acesse o projeto Space Game – Web – Docker.

  2. Na parte inferior da página, selecione Project settings.

  3. Em Pipelines, selecione Conexões de serviço.

  4. Selecione New service connection, Azure Resource Manager e Next.

  5. Próximo à parte superior da página, Service principal (automatic). Em seguida, selecione Avançar.

  6. Preencha estes campos:

    Campo Valor
    Scope level Subscription
    Subscription 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.

  7. Verifique se a opção Grant access permission to all pipelines está selecionada.

  8. 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.

  9. Selecione New service connection, escolha Docker Registry e selecione Next.

  10. Perto do topo da página, selecione Azure Container Registry.

  11. Preencha estes campos:

    Campo Valor
    Subscription Sua assinatura do Azure
    Registro de Contêiner do Azure Selecione o que você criou anteriormente
    Service connection name Conexão do Registro de Contêiner
  12. Verifique se a opção Grant access permission to all pipelines está selecionada.

  13. Selecione Salvar ao terminar.