Importe votre infrastructure Cloud actuelle dans une configuration Infrastructure As Code Terraform (HCL) ou/et dans un état Terraform.
Chez Cycloid, Infrastructure As Code est dans l'ADN de l'entreprise depuis le début. Pour aider nos nouveaux clients à adopter cette bonne pratique, nous avons décidé de créer Terracognita pour convertir une infrastructure existante sur Cloud Infrastructure en code Terraform de manière automatisée, en nous appuyant sur les fournisseurs Terraform construits par la communauté. Nous nous sommes concentrés sur AWS, GCP, Azure et Vmware.
Nous avons décidé d'ouvrir cet outil car nous pensons qu'il aidera les gens à adopter facilement l'IaC. Cycloid fournit cet outil pour permettre aux utilisateurs d'importer leur infrastructure dans les pipelines de Cycloid, de générer un diagramme d'infrastructure et de gérer tout le cycle de vie des infrastructures/applications à partir d'une seule interface.
Si vous souhaitez contribuer à Terracognita ou simplement curieux de connaître la suite, jetez un œil à la feuille de route publique. Pour un aperçu de haut niveau, consultez Qu'est-ce que Terracognita ? article de blog ou regardez cette vidéo.
Terracognita importe actuellement les fournisseurs de cloud AWS, GCP, AzureRM et VMware vSphere en tant que ressource/état Terraform (v1.1.9). Veuillez consulter les versions suivantes comme suit :
Fournisseurs :
Visitez la page des versions pour sélectionner votre système, votre architecture et la version dont vous avez besoin. Pour extraire la dernière version :
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
Vous pouvez créer et installer avec les dernières sources, vous profiterez des nouvelles fonctionnalités et des corrections de bugs. Il utilise des modules Go, donc GO 1.17+ est requis.
git clone https://github.com/cycloidio/terracognita
cd terracognita
make install
Il y a deux entrées dans l'AUR : terracognita-git (cible le dernier commit git) et terracognita (cible la dernière version stable).
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 vous êtes un utilisateur macOS et utilisez Homebrew, vous pouvez l'installer via la commande Brew :
brew install terracognita
L’utilisation principale de Terracognita est :
terracognita [TERRAFORM_PROVIDER] [--flags]
Vous remplacez TERRAFORM_PROVIDER
par le fournisseur que vous souhaitez utiliser (par exemple aws
), puis ajoutez les autres indicateurs requis. Chaque fournisseur a des indicateurs différents et des indicateurs requis différents.
Les plus généraux sont --hcl
ou --module
et --tfstate
qui indiquent le fichier de sortie du HCL (ou module) et du TFState qui seront générés.
Vous pouvez également --include
ou --exclude
plusieurs ressources en utilisant le nom Terraform qu'elles portent comme aws_instance
.
Pour plus d'options, vous pouvez toujours utiliser terracognita --help
et terracognita [TERRAFORM_PROVIDER] --help
pour la documentation spécifique du fournisseur.
Nous avons également make help
qui fournit des aides sur l'utilisation de la base de code réelle de Terracognita.
Terracognita peut générer des modules Terraform directement lors de l'importation. Pour activer cette fonctionnalité, vous devrez utiliser le --module {module/path/name}
, puis sur ce chemin spécifique se trouve l'endroit où le module sera généré. Le chemin doit être un répertoire ou un chemin inexistant (il sera créé), le contenu du chemin sera supprimé (après confirmation de l'utilisateur) afin que nous puissions avoir une importation propre.
La structure de sortie ressemblera (avec --module test
) à ceci où chaque fichier regroupe les ressources de la même "catégorie":
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
Par défaut, tous les attributs seront modifiés pour les variables, ces variables seront alors sur le module-{name}/variables.tf
et exposées sur le module.tf
comme ceci :
module "test" {
# aws_instance_front_instance_type = "t2.small"
[ ... ]
source = " module-test "
}
Si vous souhaitez changer ce comportement, comme pour les grandes infrastructures cela créera beaucoup de variables, vous pouvez utiliser le --module-variables path/to/file
et le fichier aura la liste des attributs que vous souhaitez réellement utiliser en tant que variables, cela peut être en 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
Vous pouvez utiliser directement l’image créée ou créer la vôtre. Pour créer votre image Docker, exécutez simplement :
make dbuild
Et puis selon l'image que vous souhaitez utiliser ( cycloid/terracognita
ou votre build local terracognita
) :
docker run cycloid/terracognita -h
Exemple:
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 version locale peut être utilisée de la même manière que Docker. Vous devez simplement le construire localement.
Sur le même dossier que vous avez importé, vous pouvez exécuter les commandes 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
Veuillez consulter le fichier MIT LICENSE.
Tous les changements notables apportés à ce projet seront documentés dans ce dossier.
Le format est basé sur Keep a Changelog et ce projet adhère au Semantic Versioning.
Cycloid est une plateforme d'ingénierie durable pour permettre à chacun d'interagir avec les outils, l'automatisation et le cloud sans avoir à devenir un expert et dans le respect des meilleures pratiques. Dans le portail libre-service, vous trouvez des modules autour de la gouvernance, du déploiement, des opérations, de Finops et de GreenOps. InfraImport inside Cycloid est la représentation visuelle de Terracognita.
Nous disposons désormais de trois outils open source :
...et les fonctionnalités de chacun sont également intégrées dans notre plateforme, que vous pouvez découvrir ici.