Aplicar um fluxo de trabalho automatizado

Concluído

Nesta unidade, você aprenderá sobre ferramentas de fluxo de trabalho automatizadas e como elas se integram ao Terraform e ao Azure.

Acerca do GitHub Actions

Como gerente de infraestrutura, você precisa que seus fluxos de trabalho de compilação e implantação usem o mesmo controle de versão do seu projeto.

Usando as Ações do GitHub, você pode executar um processo de integração contínua e entrega contínua (CI/CD) vinculado aos repositórios do GitHub.

Com o GitHub Actions, você pode criar, testar e implantar seu código diretamente do GitHub. Você também pode atribuir revisões de código, gerenciar ramificações e problemas de triagem.

Componentes de ações do GitHub

Vamos descrever os vários componentes do GitHub Actions, conforme mostrado no diagrama a seguir:

Diagrama mostrando a relação dos fluxos de trabalho do GitHub Actions com seus trabalhos, etapas e ações componentes.

  • Fluxo de trabalho: acionado por determinados eventos ou atividades, um fluxo de trabalho é uma coleção de trabalhos e etapas que automatizam as tarefas do ciclo de vida do desenvolvimento de software.
  • Trabalho: Um conjunto de etapas que são executadas em um corredor.
  • Etapa: Uma tarefa que pode executar um ou mais comandos ou ações. Cada etapa é composta por ações individuais que são executadas após a ocorrência de um evento específico, como uma solicitação pull.
  • Ação: comandos autônomos que podem ser combinados em etapas. Podem ser combinados múltiplos passos para criar uma tarefa. As ações individuais são scripts empacotados que automatizam tarefas de desenvolvimento de software. Para criar um fluxo de trabalho, adicione ações a um arquivo YAML no diretório .github/workflows no repositório do GitHub.

Uma ação Terraform GitHub

A hashicorp/setup-terraform ação configura a CLI do Terraform em seu fluxo de trabalho de Ações do GitHub:

  • Baixar uma versão específica da CLI do Terraform e adicioná-la ao PATH.
  • Configurando o arquivo de configuração da CLI do Terraform com um nome de host e token de API do Terraform Cloud ou Enterprise.
  • Instalando um script wrapper para encapsular chamadas posteriores do binário e expor seu código STDOUT, STDERR e exit como saídas denominadas terraform stdout, stderre exitcode, respectivamente.

Autenticar ações do GitHub com o Azure

O Terraform suporta várias opções para autenticação com o Azure:

  • Quando você usa o Terraform interativamente, recomendamos que você se autentique por meio de uma conta da Microsoft.
  • Quando você usa o Terraform a partir do código ou por automação, recomendamos que você se autentique por meio de uma Entidade de Serviço do Azure.

Uma entidade de serviço é uma identidade para uso com aplicativos, serviços hospedados e ferramentas automatizadas para acessar recursos do Azure.

Próximos passos

Na próxima unidade, configuraremos um projeto de exemplo e usaremos as Ações do GitHub com o Terraform para implantá-lo no Azure.

Principais conceitos para novos Pipelines do Azure

Vamos aprender sobre os componentes que compõem um Pipeline do Azure.

Diagrama dos principais conceitos e componentes no Azure Pipeline.

  • Um gatilho diz a um Pipeline para ser executado.
  • Um pipeline é composto por uma ou mais etapas. Um pipeline pode ser implantado em um ou mais ambientes.
  • Um estágio é uma forma de organizar o trabalho em um pipeline e cada estágio pode ter um ou mais trabalhos.
  • Cada trabalho é executado em um agente. Um trabalho também pode ser sem agente.
  • Cada agente executa um trabalho que contém uma ou mais etapas.
  • Uma etapa pode ser uma tarefa ou script e é o menor bloco de construção de um pipeline.
  • Uma tarefa é um script pré-empacotado que executa uma ação, como invocar uma API REST ou publicar um artefato de compilação.
  • Um artefato é uma coleção de arquivos ou pacotes publicados por uma execução.

Gorjeta

Para obter informações mais detalhadas sobre os diferentes componentes do Pipeline e como usá-los, consulte os Links fornecidos na seção Resumo .

Tarefas do Terraform para Pipelines do Azure

Ao executar comandos que interagem com o Azure, como plan, applye destroy, a tarefa usará uma Conexão de Serviço do Azure para autorizar operações na assinatura de destino. A maneira recomendada de se conectar ao Azure é vincular a Conexão de Serviço a uma Entidade de Serviço do Azure. Uma Entidade de Serviço do Azure é uma identidade que você cria para usar ferramentas automatizadas para acessar recursos do Azure.

O trecho YAML a seguir usa o provedor azurermTerraform do Azure Pipeline. Uma conexão de serviço é especificada através da environmentServiceNameAzureRM entrada:

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Gorjeta

Se você usar azurerm como o provedor Terraform do Pipeline do Azure, também precisará fornecer um Contêiner de Conexão e Armazenamento de Serviço para usar com o estado de back-end do Terraform.

Parâmetros de passagem

Existem vários métodos para passar parâmetros para comandos terraform. As variáveis proporcionam-lhe uma forma conveniente de obter os principais bits de dados em várias partes do pipeline.

Você pode definir uma variável para um pipeline de compilação seguindo estas etapas:

  1. Vá para a página Pipelines , selecione o pipeline apropriado e selecione Editar.
  2. Localize as variáveis para este pipeline.
  3. Adicione ou atualize a variável.
  4. Para marcar a variável como secreta, selecione Manter este valor secreto.
  5. Salve o pipeline.

Saída Terraform para variáveis de pipeline

A tarefa TerraformCLI suporta a execução do comando Terraform output . Quando a CLI é executada, as variáveis de pipeline serão criadas a partir de cada variável de saída emitida pelo terraform output comando.

Próximos passos

Na próxima unidade, configuraremos um projeto de exemplo e usaremos o Azure Pipelines com o Terraform para implantá-lo no Azure.