
Ich wollte die DEV
Umgebung meines auf AWS EKS gehosteten Kubernetes zerstören. Die Ressourcen bestehen aus zwei Teilen: dem Infrastrukturteil und dem Anwendungsteil. Ich verwende Terraform
/ Terragrunt
, um die Infrastruktur bereitzustellen/zu zerstören und helm
um die Anwendungen bereitzustellen/zu zerstören. Es laufen mehrere Pods und ich könnte die Releases zerstören, indem ich ausführe helm uninstall <release-name>
. Als es jedoch darum ging, die Infrastruktur zu zerstören, trat ein Fehler auf. Folgendes habe ich getan:
Um die Infrastruktur zu zerstören, habe ich Folgendes ausgeführt: ENV=DEV make destroy
. Auf diesen Befehl wird Folgendes zurückgegeben:
cd infra/DEV && terragrunt destroy
Remote state S3 bucket aib-iac-tf-state does not exist or you don't have permissions to access it. Would you like Terragrunt to create it? (y/n)
Ich habe es mit beiden versucht y
, n
aber es wird dieser Fehler zurückgegeben:
make: *** [Makefile:30: destroy] Error 1
Ich ging davon aus, dass mein Zugriff vom Root-Benutzer geändert wurde, um darin Ressourcen zu erstellen/löschen S3 Bucket
, stellte jedoch fest, dass dies nicht der Fall war. Das S3 Bucket
aib-iac-tf-state
Objekt existiert im Speicher.
Dann habe ich in Zeile 30 nachgesehen *Makefile*
, wo der Fehler aufgetreten ist. In Zeile 29 und 30 steht Folgendes:
destroy:
cd ${INFRA_DIR}/${ENV} && terragrunt destroy ${TF_VARS}
Ich bin immer noch nicht in der Lage, die Ressourcen zu zerstören. Für jede Hilfe wäre ich dankbar.
Antwort1
Der Fehler von Terraform besagt, dass der Remote-State-Bucket nicht existiert und er daher den Remote-Status nicht lesen kann, um zu verstehen, was zerstört werden soll. Das klingt nach einer Fehlkonfiguration im Wrapper, den Sie über Make verwenden.
Wenn Sie können, suchen Sie in den .tf
Dateien nach einem Block wie diesem:
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
Und stellen Sie sicher, dass der Bucket den richtigen Namen hat. Möglicherweise müssen Sie ihn mit Ihrem AWS-Konto vergleichen, um einen Bucket zu finden, der die richtigen Daten enthält.
Wenn Sie nichts dergleichen finden können, suchen Sie in Ihrem lokalen Arbeitsbereich nach einer .tfstate
Datei und entfernen Sie dann den backend
Block, sodass Ihre lokale Statusdatei und kein Remote-Backend verwendet wird.Ihre Ergebnisse sind variabel.- Vielleicht möchten Sie einen Kollegen mit Terraform-Kenntnissen finden und ihn einen Blick darauf werfen lassen!
TL;DR – klingt für mich ein bisschen nach einem Fehler im Wrapper oder danach, dass etwas in der falschen Reihenfolge gelöscht wurde.