Usando Terraform no Azure Pipelines
Luiz Bernardo
Posted on April 26, 2023
Já vimos o que é Azure Pipelines e agora vamos construir uma pipeline para executar um código Terraform.
Para saber mais o que é o Terraform: https://developer.hashicorp.com/terraform/tutorials/aws-get-started
Para executar um código terraform precisaremos do programa binário de Terraform e o AWS CLI, vamos ver como configurar cada um deles.
Primeira configuração e a trigger, nessa configuração informamos qual branch será utilizado para iniciar a pipeline de forma contínua e integrada.
trigger:
branches:
include:
- master
Em seguida, escrevemos as estruturas básicas do Azure Pipelines de stages, jobs e steps.
stages:
- stage: DeployTerraform
displayName: Deploy Terraform
jobs:
- job: DeployTerraform
displayName: 'Deploy infrastructure with Terraform'
steps:
Agora vamos criar nosso primeiro step de instalação do programa binário de Terraform no job que estamos executando.
Relembrando o job funciona como um container para a execução das etapas da nossa pipeline.
- bash: |
echo "# Downloading Terraform v1.3.7"
wget https://releases.hashicorp.com/terraform/1.3.7/terraform_1.3.7_linux_amd64.zip
echo "# Unzipping files"
unzip terraform_1.3.7_linux_amd64.zip
echo "# Configuring terraform and checking version"
export TERRAFORM_PATH=$(which terraform)
ls -lha
sudo mv terraform $TERRAFORM_PATH
terraform -v
Por último, vamos instalar o AWS Cli utilizando a task AWSShellScript@1 e executar os comandos do Terraform para realizarmos o build e deploy do nosso Terraform.
- task: AWSShellScript@1
displayName: 'Deploy Service'
inputs:
awsCredentials: aws-teste-dev
regionName: $(AWS_REGION)
scriptType: 'inline'
inlineScript: |
terraform init
terraform plan
terraform apply -auto-approve
terraform destroy -auto-approve
Beleza, mas a task AWSShellScript@1 exige a utilização de credenciais de acesso aos serviços AWS, para isso, precisamos criar uma IAM user credentials.
Para criar a IAM user credentials basta seguir o passo a passo da AWS no link https://docs.aws.amazon.com/cli/latest/userguide/cli-authentication-user.html
Agora precisamos configurar a credencial criada no Azure Pipelines, para isso vamos utilizar a configuração Service Connections.
O Service Connections do Azure Pipelines é um recurso que permite que você conecte seus pipelines a serviços externos, como Azure, GitHub, Bitbucket, Jenkins, Docker Hub, etc.
Essa conexão é estabelecida por meio de um endpoint seguro, que é uma configuração de conexão que inclui as credenciais necessárias para se comunicar com o serviço externo. O endpoint é criado e gerenciado pelo Azure Pipelines e pode ser usado em seus pipelines para se conectar ao serviço externo.
Ao criar um Service Connection, você pode configurá-lo com diferentes tipos de autenticação, dependendo do serviço externo que está sendo usado. Por exemplo, ao conectar-se ao Azure, você pode usar a autenticação baseada em certificado, enquanto que para o GitHub, você pode usar autenticação baseada em token.
Uma vez que o Service Connection é criado e configurado, ele pode ser usado em seus pipelines para conectar seus repositórios, contêineres, máquinas virtuais e outros serviços. Por exemplo, você pode usar um Service Connection para se conectar ao seu repositório GitHub e implementar seu aplicativo em um ambiente de hospedagem do Azure.
Além disso, o Azure Pipelines também permite que você compartilhe seus Service Connections com outros projetos e equipes na organização, o que simplifica o gerenciamento de credenciais e aumenta a segurança.
Agora vamos instalar o AWS Toolkit for Azure DevOps No Azure Devops
- Acesse o link: https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools
- Clique em "Get it free"
- Selecione a organização que deseja instalar e clique no botão "Install"
Agora podemos utilizar as credenciais criadas no Service Connections através do AWS Toolkit for Azure DevOps.
- Acesse o projeto no Azure Devops e clique em Project Settings
- Em pipelines, clique em Service Connection
- Clique em New service connection e selecione AWS, clique em Next
- Insira as credenciais criadas em Access Key ID e Secret Access Key
- Inclua o Service connection name, marque o checkbox Grant access permission to all pipelines e clique em Save
O Service connection name é muito importante pois ele será utilizado na task AWSShellScript@1 no input awsCredentials.
Por último, vamos criar um código Terraform simples. Utilizei o mesmo código utilizado no AWS get started da Hashicorp.
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
required_version = ">= 1.2.0"
}
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "app_server" {
ami = "ami-830c94e3"
instance_type = "t2.micro"
tags = {
Name = "ExampleAppServerInstance"
}
}
Agora é só seguir o passo a passo de como executar uma pipeline, post com mais detalhes:
Posted on April 26, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.