IAC - Infrastructure as Code

IAC - Infrastructure as Code

Bom dia!

Hoje ouvi pela primeira vez o termo IaC (Infrastructure as Code). Vocês ja conheciam?

Fui explorar um pouco mais e entender o que significava, e descobri que ja praticava o conceito. Então resolvi explicar de uma forma mais simples para contribuir com sua leitura.

Infraestrutura como codigo é semelhante a um DevOps. É um processo de gerenciamento de projetos que visa documentar via código toda criação, alteração e decontinuidade de uma infraestrutura, seja em Cloud ou On-Premises. 

Por que usar IaC?

Infraestrutura como código permite que adotemos práticas poderosas. Elas incluem controle de versão, code-review, testes automatizados, lançamento de releases por tags e entrega contínua.

A ferramenta de IaC que estou considerando nesse artigo, é o Terraform, que vou exemplificar usando a Cloud da AWS.

Deploy de Instância EC2 

Vamos realizar um simples deploy na AWS. Para isso, é necessário criar uma instância EC2 e Security Group, para liberar o acesso SSH. Deixo um exemplo no meu Github.

Vamos começar com o workspace do Terraform. Nele devem estar todos os arquivos referente à infraestrutura.

terraform init        

Variáveis:

Visualizando os arquivos .tf, vemos que parte da parametrização dos arquivos é composta por variáveis, que podem ser customizadas na hora da execução do Terraform.

Podemos  declarar essas variáveis de duas formas: a primeira é declarar uma variável de ambiente com o prefixo TF_VAR_sua_var. Dessa forma, se o sufixo de nossa variável estiver declarado no arquivo variable.tf, ele será reconhecido na execução.

variable "instance_type" {}        

A segunda forma é declarar na linha de comando do Terraform:

-var=var-name=var-value        

 

Deploy

Vamos realizar o deploy da EC2 com Security Group na AWS

Usamos o método de declaração de variáveis em linha de comando, a fim de dinamizar a execução do Terraform.

  • AWS_REGION
  • AWS_ACCESS_KEY
  • AWS_SECRET_KEY
  • KEY_NAME
  • INSTANCE_TYPE
  • AMI_ID
  • IP

Para visualizar os recursos que serão criados, você pode utilizar o comando abaixo, com a parametrização correta:

terraform plan -var=aws_region=your-region -var=instance_type=your-instance-type -var=key_name=your-key-pair-name -var=ami_id=ami-02ccb28830b645a41 -var=ip=$(dig +short myip.opendns.com @resolver1.opendns.com)        

Podemos utilizar o comando -auto-approve para visualizar, instantaneamente, o planejamento.

 Agora aplicamos nossa Infra-as-Code.

terraform apply -var=aws_region=your-region -var=instance_type=your-instance-type -var=key_name=your-key-pair-name -var=ami_id=ami-02ccb28830b645a41        

Fizemos uma instância EC2 com Security Group na AWS.

Para fazer conexão SSH com nossa máquina no Cloud Provider AWS, usamos o key pair criada anteriormente, assim realizamos a conexão de forma segura e criptografada.

Abrimos o terminal:

chmod 400 your-key-pair.pem        

Executamos o comando:

ssh -i your-key-pair.pem ec2-user@public-ip-instance        

Clean up

Agora que criamos o nosso exemplo, vamos remover os nossos recursos da AWS. Utilizamos a própria solução do Terraform para isso:

terraform destroy        

Assim o Terraform utiliza o arquivo terraform.tfstate criado com a descrição dos recursos disponíveis para destruí-los.

O que acharam? Logo posto mais conteúdo relacionado a Terraform. Até lá!

Entre para ver ou adicionar um comentário

Outros artigos de Renan Lima Andrade

Outras pessoas também visualizaram

Conferir tópicos