Importa su infraestructura de nube actual a una configuración de infraestructura como código Terraform (HCL) o a un estado Terraform.
En Cycloid, Infrastructure As Code está en el ADN de la empresa desde el principio. Para ayudar a nuestros nuevos clientes a adoptar esta mejor práctica, decidimos crear Terracognita para convertir una infraestructura existente en Cloud Infrastructure en código Terraform de forma automatizada, confiando en los proveedores de Terraform creados por la comunidad. Nos centramos en AWS, GCP, Azure y Vmware.
Decidimos abrir esta herramienta porque creemos que ayudará a las personas a adoptar IaC de una manera sencilla. Cycloid proporciona esta herramienta para permitir a las personas importar su infraestructura a las tuberías de Cycloid, permitirles generar diagramas de infraestructura y administrar todo el ciclo de vida de la infraestructura y las aplicaciones desde una única interfaz.
Si está interesado en contribuir a Terracognita o simplemente tiene curiosidad por saber qué sigue, eche un vistazo a la hoja de ruta pública. Para obtener una descripción general de alto nivel, consulte ¿Qué es Terracognita? publicación en el blog o mira este video.
Terracognita actualmente importa proveedores de nube de AWS, GCP, AzureRM y VMware vSphere como recurso/estado de Terraform (v1.1.9). Consulte las siguientes versiones de la siguiente manera:
Proveedores:
Visite la página de lanzamientos para seleccionar su sistema, arquitectura y versión que necesita. Para obtener la última versión:
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
Puede compilar e instalar con las últimas fuentes, disfrutará de las nuevas funciones y correcciones de errores. Utiliza módulos Go, por lo que se requiere GO 1.17+.
git clone https://github.com/cycloidio/terracognita
cd terracognita
make install
Hay dos entradas en AUR: terracognita-git (apunta al último compromiso de git) y terracognita (apunta a la última versión estable).
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
Si es usuario de macOS y utiliza Homebrew, puede instalar mediante el comando brew:
brew install terracognita
El uso principal de Terracognita es:
terracognita [TERRAFORM_PROVIDER] [--flags]
Reemplaza TERRAFORM_PROVIDER
con el proveedor que desea usar (por ejemplo, aws
) y luego agrega los otros indicadores requeridos. Cada Proveedor tiene diferentes banderas y diferentes banderas requeridas.
Los más generales son --hcl
o --module
y --tfstate
que indican el archivo de salida para HCL (o módulo) y el TFState que se generará.
También puede --include
o --exclude
varios recursos utilizando el nombre de Terraform que tiene como aws_instance
.
Para más opciones siempre puedes usar terracognita --help
y terracognita [TERRAFORM_PROVIDER] --help
para la documentación específica del Proveedor.
También make help
que proporciona algunas ayudas sobre el uso del código base real de Terracognita.
Terracognita puede generar módulos Terraform directamente al importar. Para habilitar esta función, necesitará usar --module {module/path/name}
y luego en esa ruta específica es donde se generará el módulo. La ruta tiene que ser un directorio o una ruta inexistente (se creará), el contenido de la ruta se eliminará (después de la confirmación del usuario) para que podamos tener una importación limpia.
La estructura de salida se verá así (con --module test
), donde cada archivo agrega los recursos de la misma "categoría":
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
De forma predeterminada, todos los atributos se cambiarán para las variables, esas variables estarán en el module-{name}/variables.tf
y expuestas en el module.tf
de esta manera:
module "test" {
# aws_instance_front_instance_type = "t2.small"
[ ... ]
source = " module-test "
}
Si desea cambiar este comportamiento, ya que para las grandes infraestructuras esto creará muchas variables, puede usar la --module-variables path/to/file
y el archivo tendrá la lista de atributos que realmente desea usar. como variables, puede estar en JSON o YAML:
{
"aws_instance" : [
" instance_type " ,
" cpu_threads_per_core " ,
" cpu_core_count "
]
}
aws_instance :
- instance_type
- cpu_threads_per_core
- cpu_core_count
Puede utilizar directamente la imagen creada o puede crear la suya propia. Para crear su imagen de Docker simplemente ejecute:
make dbuild
Y luego, dependiendo de la imagen que desee utilizar ( cycloid/terracognita
o su terracognita
de compilación local):
docker run cycloid/terracognita -h
Ejemplo:
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
La versión local se puede utilizar de la misma manera que Docker. Simplemente necesitas construirlo localmente.
En la misma carpeta que importó, puede ejecutar los comandos init & plan de terraform:
terraform init
terraform plan -var access_key= $AWS_ACCESS_KEY_ID -var secret_key= $AWS_SECRET_ACCESS_KEY -var region= $AWS_DEFAULT_REGION
Consulte el archivo de LICENCIA MIT.
Todos los cambios notables en este proyecto se documentarán en este archivo.
El formato se basa en Keep a Changelog y este proyecto se adhiere al control de versiones semántico.
Cycloid es una plataforma de ingeniería sostenible que permite a cualquier persona interactuar con herramientas, automatización y nube sin tener que convertirse en un experto y respetando las mejores prácticas. Dentro del portal de autoservicio, encontrará algunos módulos sobre gobernanza, implementación, operaciones, Finops y GreenOps. InfraImport dentro de Cycloid es la representación visual de Terracognita.
A partir de ahora, tenemos tres herramientas de código abierto:
...y la funcionalidad de cada uno también está integrada en nuestra plataforma, sobre la cual puedes encontrar más información aquí.