Importiert Ihre aktuelle Cloud-Infrastruktur in eine Infrastructure As Code Terraform-Konfiguration (HCL) oder/und in einen Terraform-Status.
Bei Cycloid ist Infrastructure As Code von Anfang an in der Unternehmens-DNA verankert. Um unseren Neukunden bei der Übernahme dieser Best Practice zu helfen, haben wir uns für die Entwicklung von Terracognita entschieden, um eine vorhandene Infrastruktur auf der Cloud-Infrastruktur automatisiert in Terraform-Code umzuwandeln und uns dabei auf von der Community entwickelte Terraform-Anbieter zu verlassen. Wir haben uns auf AWS, GCP, Azure und Vmware konzentriert.
Wir haben uns entschieden, dieses Tool als Open Source zu veröffentlichen, da wir davon überzeugt sind, dass es Menschen dabei helfen wird, IaC auf einfache Weise einzuführen. Cycloid bietet dieses Tool, mit dem Benutzer ihre Infrastruktur in die Pipelines von Cycloid importieren, Infrastrukturdiagramme erstellen und den gesamten Infrastruktur-/Anwendungslebenszyklus über eine einzige Schnittstelle verwalten können.
Wenn Sie daran interessiert sind, einen Beitrag zu Terracognita zu leisten, oder einfach nur neugierig sind, was als nächstes kommt, werfen Sie einen Blick auf die öffentliche Roadmap. Einen umfassenden Überblick finden Sie im Artikel „Was ist Terracognita?“. Blogpost oder schau dir dieses Video an.
Terracognita importiert derzeit AWS-, GCP-, AzureRM- und VMware vSphere-Cloud-Anbieter als Terraform-Ressourcen/-Status (v1.1.9). Bitte sehen Sie sich die folgenden Versionen wie folgt an:
Anbieter:
Besuchen Sie die Release-Seite, um Ihr benötigtes System, Ihre Architektur und Version auszuwählen. So rufen Sie die neueste Version ab:
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
Sie können mit den neuesten Quellen erstellen und installieren und die neuen Funktionen und Fehlerbehebungen genießen. Es verwendet Go-Module, daher ist GO 1.17+ erforderlich.
git clone https://github.com/cycloidio/terracognita
cd terracognita
make install
Es gibt zwei Einträge im AUR: terracognita-git (zielt auf das neueste Git-Commit ab) und terracognita (zielt auf die neueste stabile Version ab).
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
Wenn Sie macOS-Benutzer sind und Homebrew verwenden, können Sie die Installation über den Befehl brew durchführen:
brew install terracognita
Die Hauptverwendung von Terracognita ist:
terracognita [TERRAFORM_PROVIDER] [--flags]
Sie ersetzen TERRAFORM_PROVIDER
durch den Anbieter, den Sie verwenden möchten (z. B. aws
) und fügen dann die anderen erforderlichen Flags hinzu. Jeder Anbieter verfügt über unterschiedliche Flags und unterschiedliche erforderliche Flags.
Die allgemeineren sind --hcl
oder --module
und --tfstate
, die die Ausgabedatei für die HCL (oder das Modul) und den TFState angeben, der generiert wird.
Sie können auch mehrere Ressourcen --include
oder --exclude
indem Sie den Terraform-Namen verwenden, den sie haben, z. B. aws_instance
.
Für weitere Optionen können Sie jederzeit terracognita --help
und terracognita [TERRAFORM_PROVIDER] --help
für die spezifische Dokumentation des Anbieters verwenden.
Wir haben auch make help
, die einige Hilfestellungen zur Verwendung der tatsächlichen Codebasis von Terracognita bietet
Terracognita kann Terraform-Module direkt beim Import generieren. Um diese Funktion zu aktivieren, müssen Sie das --module {module/path/name}
verwenden und dann wird das Modul in diesem spezifischen Pfad generiert. Der Pfad muss ein Verzeichnis oder ein nicht vorhandener Pfad sein (er wird erstellt). Der Inhalt des Pfads wird gelöscht (nach Bestätigung durch den Benutzer), damit wir einen sauberen Import durchführen können.
Die Ausgabestruktur sieht (mit --module test
) wie folgt aus, wobei jede Datei die Ressourcen aus derselben „Kategorie“ aggregiert:
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
Standardmäßig werden alle Attribute für Variablen geändert. Diese Variablen befinden sich dann in module-{name}/variables.tf
und werden in module.tf
wie folgt angezeigt:
module "test" {
# aws_instance_front_instance_type = "t2.small"
[ ... ]
source = " module-test "
}
Wenn Sie dieses Verhalten ändern möchten, da bei großen Infrastrukturen viele Variablen erstellt werden, können Sie den --module-variables path/to/file
verwenden und die Datei enthält dann die Liste der Attribute, die tatsächlich verwendet werden sollen Als Variablen kann es in JSON oder YAML vorliegen:
{
"aws_instance" : [
" instance_type " ,
" cpu_threads_per_core " ,
" cpu_core_count "
]
}
aws_instance :
- instance_type
- cpu_threads_per_core
- cpu_core_count
Sie können das erstellte Image direkt verwenden oder Ihr eigenes erstellen. Um Ihr Docker-Image zu erstellen, führen Sie einfach Folgendes aus:
make dbuild
Und dann, je nachdem, welches Bild Sie verwenden möchten ( cycloid/terracognita
oder Ihr lokaler Build terracognita
):
docker run cycloid/terracognita -h
Beispiel:
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
Die lokale Version kann auf die gleiche Weise wie Docker verwendet werden. Sie müssen es lediglich lokal erstellen.
In demselben Ordner, den Sie importiert haben, können Sie die Terraform-Init- und Plan-Befehle ausführen:
terraform init
terraform plan -var access_key= $AWS_ACCESS_KEY_ID -var secret_key= $AWS_SECRET_ACCESS_KEY -var region= $AWS_DEFAULT_REGION
Bitte sehen Sie sich die MIT-LICENSE-Datei an.
Alle wesentlichen Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
Das Format basiert auf Keep a Changelog und dieses Projekt folgt der semantischen Versionierung.
Cycloid ist eine nachhaltige Plattformtechnik, die es jedem ermöglicht, mit Tools, Automatisierung und Cloud zu interagieren, ohne ein Experte werden zu müssen und die Best Practices zu respektieren. Im Self-Service-Portal finden Sie einige Module zu Governance, Bereitstellung, Betrieb, Finops und GreenOps. InfraImport in Cycloid ist die visuelle Darstellung von Terracognita.
Derzeit verfügen wir über drei Open-Source-Tools:
...und die Funktionalität jedes einzelnen ist auch in unserer Plattform eingebettet, über die Sie hier mehr erfahren können.