Instalando o Terraform e criando seu primeiro objeto no Azure

Hoje vamos dar os primeiros passos no mundo da Infraestrutura como um Cdigo, a.k.a. IaC, fazendo a instalao local do Terraform, autenticando no Azure via cli e criando o primeiro objeto no Azure.

O Terraform faz uso do HCL (Hashicorp Configuration Language) e a sua sintaxe foi muito baseada na libucl.

Para falar sobre o Terraform (como funciona, detalhes, componentes, divises, etc), eu poderia criar uma srie apenas para isso, mas no a ideia aqui. Vamos colocar a mo na massa direto.

Passo 1: Instalando o Chocolatey & Terraform

Para instalar o Terraform no Windows, antes, precisamos instalar o Chocolatey antes (que um gerenciador de pacotes do windows). Voc pode rodar tudo em uma linha (lembre-se de executar como administrador, seno vai dar erro), mas se quiser, rode os 3 comandos separadamente:

Instalado o Chocolatey, vamos instalar o Terraform:

Uma recomendao… Coloquem o Terraform no Path, para no precisarem ficar copiando o executvel a cada novo projeto.

Passo 2: Instalao do Azure CLI

Pelo print acima, vocs devem ter notado que eu j estava com o CLI habilitado, mas o que vocs devem rodar no terminal (mais uma vez, como administrador):

O que essa linha far:

  • Baixar o instalador do AZ CLI
  • Executar em modo silencioso
  • Remover o instalador

Passo 3: Autenticar no Azure

Para se autenticar no Azure, voc deve executar o comando:

(Caso d erro, feche o terminal, abra novamente e reexecute o comando)

Ao digitar o az login uma pgina abrir para voc se autenticar no Azure… Coloque seu usurio, sua senha e o retorno ser de um json com os dados das assinaturas que a conta tem acesso. Algo mais ou menos assim:

Caso aparea vrias subscriptions e voc queira se conectar em alguma em especfico, use o seguinte comando:

No vai ser nesse post que eu vou falar sobre a criao de um Service Principal especfico para o Terraform e como configurar as variveis de ambiente para fazer uso dele… Isso vai ficar para um outro momento, mas tenham isso em mente quando forem desenvolver, fechado?

Passo 4: Criar o Resource Group

Feita toda a funo… chegou a hora de brincarmos com o HCL!

Aqui, ns temos duas opes…

  1. Criar um nico arquivo e fazer o deploy. (Meh)
  2. Organizar em alguns arquivos e fazer um deploy “diferente”

bvio que vamos para a segunda opo… 😉

Vamos criar os seguintes arquivos:

  • providers.tf

Com a opo required_version, possvel determinar uma verso mnima para o funcionamento do Terraform. No meu caso, coloquei a verso 1.1.0. Veja o que acontece se, ao invs de ‘>=1.1.0‘, eu tivesse colocado um ‘=1.1.0‘ (informando que eu s posso executar o script com esta verso em especial:

Spoilers de execuo do Terraform…

Com o required_providers, eu informo quais o providers eu vou utilizar no projeto. Neste caso, ser o azurerm e a verso ltima verso a partir da 3.10.0 (para mais informaes, veja sobre version-constraints)

No bloco provider eu determino as configuraes de cada provider que eu vou utilizar. Neste caso, eu vou usar o provider azurerm e vou utilizar as opes padro.

  • variables.tf

A ideia aqui mostrar a possibilidade de criarmos algumas opes caso se queira aproveitar alguma informao mais adiante, como por exemplo, um prefixo ou ento a localizao que iremos colocar o nosso ambiente:

  • main.tf

Aqui onde vamos criar os recursos propriamente ditos.

Talvez voc esteja se perguntando de onde saiu esse random_pet n? D uma olhada aqui.

A ideia que, usando o provider random, voc possa construir recursos usando nomes aleatrios, crie senhas, nmero inteiros, uuids, etc.

Em resumo: Primeiro determinamos o nome do nosso recurso (que aqui ficar como rg-dev) e, em seguida, a gente consiga criar o Resource Group usando as informaes acima.

  • output.tf

Vamos criar agora um arquivo apenas para podermos validar como os dados ficaram, no final.

Passo 5: Executando o Terraform

Ufa! Agora, vamos para a parte massa… Vamos ver a coisa toda rodando.

Primeiro, devemos inicializar o projeto:

Agora, devemos validar se est tudo de acordo e planejar:

Veja que o plan criou um passo a passo do que ser feito, avisando sobre a criao dos recursos e informando que alguns dos nomes sero conhecidos apenas no momento da criao, pois ser criado dinamicamente.

E por ltimo (mas no menos importante):

Apenas como observao… Notem que preciso realizar uma confirmao para realizar o processo e, logo em seguida, ele j retorna o valor do Resource Group criado.

Vamos ver se deu certo? Vamos no Portal do Azure e ver os Resources Groups:

E voi l, temos o nosso primeiro objeto criado usando IaC.

Caso queira destruir o que fez, ainda via Terraform, basta rodar um terraform destroy e confirmar a operao. Levou pouco mais de um minuto para mim nos testes. Eu no vou rodar, pois quero usar esse mesmo RG para os prximos passos.

Prximos passos:

  • Criar novos objetos.
  • Configurar o Service Principal
  • Colocar no git ou no DevOps para pensar em CI/CD

Caso queira acompanhar as evolues, estou colocando as alteraes no meu github:

Mas claro que toda nova manuteno, informarei em um novo post por aqui (saindo a primeira srie de 2022?).

[]’s!!

2 comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.