Aplicar um fluxo de trabalho automatizado
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:
- 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
,stderr
eexitcode
, 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.
- 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
, apply
e 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 azurerm
Terraform 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:
- Vá para a página Pipelines , selecione o pipeline apropriado e selecione Editar.
- Localize as variáveis para este pipeline.
- Adicione ou atualize a variável.
- Para marcar a variável como secreta, selecione Manter este valor secreto.
- 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.