BitCrafted - Apresentação

Criar terminal para gerenciamento de manifestos com Terraform

O terminal permitirá gerenciar e provisionar recursos usando Terraform, facilitando o acesso a configurações pré-definidas como MySQL, VMs e VPCs. Adicionalmente, oferecerá suporte para containers Docker, com duas opções: escolher containers Docker pré-configurados, para que o usuário não precise conhecer os detalhes do Docker, ou fornecer um arquivo docker-compose personalizado para uma configuração mais específica.

Foi realizado um estudo sobre as etapas e as interfaces necessárias, desde a conexão com a MGC até a geração dos recursos utilizando o Terraform.

A equipe foi dividida em dois grupos:

  1. Grupo Terraform: Responsável pela geração da estrutura do Terraform por meio de mapeamento.
  2. Grupo Interface: Focado na construção da interface no terminal.

Ambos os grupos estão desenvolvendo suas tarefas na mesma VM da MGC, utilizando DevContainers e programando em GoLang.

Inicialmente, o objetivo é criar uma configuração básica que abranja todas as opções disponíveis, com ênfase nas máquinas virtuais (VMs).

Nesta etapa, realizamos a integração entre o backend e o frontend, implementamos testes unitários e incluímos validações no backend.

Durante o processo, identificamos um problema na inserção da chave SSH pelo Terraform, que resultava consistentemente em erros com o status code 409.

Na documentação, observamos que o campo ssh_key_name deveria ser obrigatório, especialmente para imagens Linux, enquanto o mesmo parâmetro é opcional para imagens Windows. No entanto, no link de referência (Terraform Registry), o parâmetro aparece como opcional, mas ao executarmos o código pelo Terraform, ele se mostra necessário para sistemas Linux.

Segue as evidências:

Fizemos também o uso da documentação disponibilizada do Terraform da Magalu, segue evidência de nossos exemplos de uso:

Virtual Machines:

Object Storage:

Block Storage:

Database:

Kubernetes:

Vms Instaces:

Vms Types:

Vms Images:


Também subimos nosso cluster kubernetes (bitcrafted-k8s) onde foi possível subir um grafana de forma bem rápida e eficaz pois no cluster provisionado já veio instalado o prometheus, coisa que na maioria das clouds não vem por default sendo um diferencial da MagaluCloud

1 curtida

Concluímos parte dos objetivos do projeto; desenvolvemos uma interface de terminal que integra com o Terraform. Até o momento, apenas a funcionalidade de criação de VMs está completamente implementada. Nosso próximo passo é prosseguir com outras implementações que já estavam em andamento.

Um destaque entre essas implementações é a criação de uma VM baseada em Docker ou Docker-compose (como por exemplo uma imagem com postgres, redis e outros), utilizando um script com o provisioner “remote-exec”. Assim, o usuário pode escolher uma imagem pré-definida pela aplicação ou fornecer um arquivo de configuração personalizado.

Além disso, realizamos uma prova de conceito (POC) das funcionalidades do Terraform na MGC, identificando possíveis problemas que já foram reportados aqui.

Identificamos também que a nossa integração de linha de comando (CLI) pode ser melhorada. Atualmente, é necessário passar as configurações manualmente ao executar os comandos. Seria mais eficiente se a aplicação pudesse ler essas configurações a partir de um arquivo de configuração, simplificando o uso e reduzindo a possibilidade de erros.

Segue evidências abaixo:

1 curtida