Importa sua infraestrutura de nuvem atual para uma configuração de infraestrutura como código do Terraform (HCL) e/ou para um estado do Terraform.
Na Cycloid, Infraestrutura como Código está no DNA da empresa desde o início. Para ajudar nossos novos clientes a adotar essa prática recomendada, decidimos construir o Terracognita para converter uma infraestrutura existente em Cloud Infrastructure em código Terraform de forma automatizada, contando com provedores Terraform construídos pela comunidade. Nós nos concentramos em AWS, GCP, Azure e VMware.
Decidimos abrir esta ferramenta porque acreditamos que ela ajudará as pessoas a adotar IaC de maneira fácil. Cycloid fornece esta ferramenta para permitir que as pessoas importem sua infraestrutura para os pipelines do Cycloid, permitindo-lhes gerar diagramas de infraestrutura e gerenciar todo o ciclo de vida da infra/aplicação a partir de uma única interface.
Se você estiver interessado em contribuir com a Terracognita ou simplesmente curioso para saber o que vem por aí, dê uma olhada no roteiro público. Para uma visão geral de alto nível, confira O que é Terracognita? postagem no blog ou assista a este vídeo.
A Terracognita atualmente importa provedores de nuvem AWS, GCP, AzureRM e VMware vSphere como recurso/estado Terraform (v1.1.9). Por favor, veja as seguintes versões como segue:
Provedores:
Visite a página de lançamentos para selecionar o sistema, a arquitetura e a versão que você precisa. Para obter a versão mais recente:
curl -L https://github.com/cycloidio/terracognita/releases/latest/download/terracognita-linux-amd64.tar.gz -o terracognita-linux-amd64.tar.gz
tar -xf terracognita-linux-amd64.tar.gz
chmod u+x terracognita-linux-amd64
sudo mv terracognita-linux-amd64 /usr/local/bin/terracognita
Você pode construir e instalar com as fontes mais recentes e aproveitar os novos recursos e correções de bugs. Ele usa módulos Go, portanto o GO 1.17+ é necessário.
git clone https://github.com/cycloidio/terracognita
cd terracognita
make install
Existem duas entradas no AUR: terracognita-git (direcionado ao último commit do git) e terracognita (direcionado à versão estável mais recente).
yay -Ss terracognita
aur/terracognita 1:0.3.0-1 (+0 0.00%)
Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration
aur/terracognita-git 1:v0.3.0.r27.gdfc5a99-1 (+0 0.00%)
Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration
Se você é usuário do macOS e usa Homebrew, pode instalar via comando brew:
brew install terracognita
O principal uso do Terracognita é:
terracognita [TERRAFORM_PROVIDER] [--flags]
Você substitui TERRAFORM_PROVIDER
pelo provedor que deseja usar (por exemplo aws
) e depois adiciona os outros sinalizadores necessários. Cada Provedor possui diferentes sinalizadores e diferentes sinalizadores obrigatórios.
Os mais gerais são --hcl
ou --module
e --tfstate
que indicam o arquivo de saída para o HCL (ou módulo) e o TFState que será gerado.
Você também pode --include
ou --exclude
vários recursos usando o nome do Terraform que ele possui, como aws_instance
.
Para mais opções você sempre pode usar terracognita --help
e terracognita [TERRAFORM_PROVIDER] --help
para a documentação específica do Provedor.
Também temos make help
que fornece alguns ajudantes sobre como usar a base de código real do Terracognita
Terracognita pode gerar Módulos Terraform diretamente durante a importação. Para habilitar este recurso você precisará usar --module {module/path/name}
e então nesse caminho específico é onde o módulo será gerado. O caminho deve ser um diretório ou um caminho inexistente (será criado), o conteúdo do caminho será deletado (após confirmação do usuário) para que possamos ter uma importação limpa.
A estrutura de saída será semelhante (tendo --module test
) onde cada arquivo agrega os recursos da mesma "categoria":
test/
├── module-test
│ ├── autoscaling.tf
│ ├── cloud_front.tf
│ ├── cloud_watch.tf
│ ├── ec2.tf
│ ├── elastic_load_balancing_v2_alb_nlb.tf
│ ├── iam.tf
│ ├── rds.tf
│ ├── route53_resolver.tf
│ ├── route53.tf
│ ├── s3.tf
│ ├── ses.tf
│ └── variables.tf
└── module.tf
Por padrão, todos os atributos serão alterados para variáveis, essas variáveis estarão então em module-{name}/variables.tf
e expostas em module.tf
assim:
module "test" {
# aws_instance_front_instance_type = "t2.small"
[ ... ]
source = " module-test "
}
Se você quiser mudar esse comportamento, já que para grandes infraestruturas isso criará muitas variáveis, você pode usar o --module-variables path/to/file
e o arquivo terá a lista de atributos que você deseja que realmente sejam usados como variáveis, pode ser em JSON ou YAML:
{
"aws_instance" : [
" instance_type " ,
" cpu_threads_per_core " ,
" cpu_core_count "
]
}
aws_instance :
- instance_type
- cpu_threads_per_core
- cpu_core_count
Você pode usar diretamente a imagem construída ou pode construir a sua própria. Para construir sua imagem Docker basta executar:
make dbuild
E dependendo da imagem que você deseja usar ( cycloid/terracognita
ou sua construção local terracognita
):
docker run cycloid/terracognita -h
Exemplo:
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export AWS_DEFAULT_REGION=xx-yyyy-0
docker run
-v " ${PWD} " /outputs:/app/outputs
cycloid/terracognita aws
--hcl app/outputs/resources.tf
A versão local pode ser usada da mesma forma que o docker. Você simplesmente precisa construí-lo localmente.
Na mesma pasta que você importou, você pode executar os comandos terraform init & plan:
terraform init
terraform plan -var access_key= $AWS_ACCESS_KEY_ID -var secret_key= $AWS_SECRET_ACCESS_KEY -var region= $AWS_DEFAULT_REGION
Consulte o arquivo MIT LICENSE.
Todas as alterações notáveis neste projeto serão documentadas neste arquivo.
O formato é baseado em Keep a Changelog, e este projeto segue o Versionamento Semântico.
Cycloid é uma plataforma de engenharia sustentável que permite a qualquer pessoa interagir com ferramentas, automação e nuvem sem precisar se tornar um especialista e respeitando as melhores práticas. Dentro do portal de autoatendimento, você encontra alguns módulos sobre Governança, implantação, operações, Finops e GreenOps. InfraImport dentro do Cycloid é a representação visual do Terracognita.
No momento, temos três ferramentas de código aberto:
...e a funcionalidade de cada um também está incorporada em nossa plataforma, sobre a qual você pode saber mais aqui.