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
Recomendados pelo LinkedIn
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.
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á!