Upgrade auf eine neue Terraform-Version

Die Open-Source- IaC-Tools, die von Schematics verwendet werden, entwickeln sich weiter – mit neuen Versionen von Terraform und Helm sowie den zugehörigen Terraform-Providern. Im Laufe der Zeit ist es erforderlich, dass für langlebige Arbeitsbereichsumgebungen ein Upgrade durchgeführt wird, damit die neueste Version von Terraform verwendet wird, da ältere Versionen veraltet sind und nicht mehr unterstützt werden.

Alle Schematics-Benutzer sollten regelmäßig ein Upgrade auf die neueste Terraform-Version durchführen, um die Kontinuität des Betriebs und der Unterstützung sicherzustellen. Schematics folgt dem Hashicorp-Unterstützungsmodell für Terraform-Releases und stellt die Unterstützung von Versionen für Hashicorp ein.

Terraform v1.0 war ein Hauptrelease für Terraform und markiert den Übergang zu einem stabilen Release 1.x. Hashicorp hat Kompatibilitätsversprechen für die 1.x-Releases vorgenommen, dass für Kernfeatures keine zusätzlichen Änderungen erforderlich sind, um ein Upgrade über die 1.x-Releases durchzuführen.

Kurz gesagt: Es zielt darauf ab, Upgrades zwischen v1.x-Releases unkompliziert durchzuführen, ohne Änderungen an Ihrer Konfiguration, ohne Befehle zum Ausführen von Upgradeschritten und ohne Änderungen an einer Automatisierung, die Sie für Terraform eingerichtet haben.

Für ein Upgrade auf 1.x-Releases sind keine bestimmten Schematics-Arbeitsbereichsaktionen erforderlich. In den Upgradehandbüchern für Terraform finden Sie Informationen zu releasespezifischen Änderungen, für die möglicherweise Aktualisierungen der TF config/template erforderlich sind.

Upgrade für Terraform-Vorlagenversion 1.x und höher durchführen

Seit Terraform 1.0können Schematics-Arbeitsbereiche durch eine einfache Änderung der Arbeitsbereichsversion auf neuere 1.x-Releases aktualisiert werden. Informationen zur Aktualisierung von 0.x-Releases finden Sie im Abschnitt Upgrade der Terraform-Vorlagenversion 0.x.

Schematics unterstützt Terraform_v1.x und plant, Releases nach allgemeiner Verfügbarkeit verfügbar zu machen 45-60 days. Es wird empfohlen, dass Terraform-Vorlagen eine Versionsbereichseinschränkung wie >, >= oder ~> für den Parameter required_version in der versions.tf der Terraform-Vorlage verwenden, die ein Upgrade für untergeordnete Releases und Patch-Releases ermöglicht. Auf diese Weise kann Schematics automatisch das neueste Patch oder Unterrelease der Terraform-Version übernehmen, wie in der Arbeitsbereichsversion festgelegt.

terraform {
required_version = "~> 1.1"
}

Terraform-Version 1.x des Arbeitsbereichs aktualisieren

Die verwendete Version von Terraform für einen Arbeitsbereich kann über die Aktualisierungs-APIdes Arbeitsbereichs von Schematics aktualisiert werden.

Der Parameter für die Terraform-Version des Arbeitsbereichs hat das Format terraform_v1.4 oder terraform_v1.5.

  1. Wählen Sie den zu aktualisierenden Arbeitsbereich aus und prüfen Sie, ob er sich im Status Normal befindet und ob eine Planoperation keine vorgeschlagenen Ressourcenänderungen generiert. Speichern Sie die Datei workspace_id und notieren Sie die Region, in der sich der Arbeitsbereich befindet.

  2. Aktualisieren Sie die Terraform-Version des Arbeitsbereichs mithilfe der IBM Cloud-CLI und -API. Diese Arbeitsbereichsoperationen sind regionsspezifisch. Beachten Sie den Arbeitsbereichsbereich über die Benutzerschnittstelle, da dies für die folgenden Befehle erforderlich ist:

    • Melden Sie sich bei der Befehlszeilenschnittstelle von IBM Cloud mit ibmcloud login an
    • Legen Sie die CLI-Zielregion mit ibmcloud target -r <region> so fest, dass sie dem Arbeitsbereich entspricht, den Sie aktualisieren.
    • Generieren Sie ein IAM-OAuth-Token für die Verwendung mit der Schematics-API mit dem Befehl ibmcloud iam oauth-tokens.
    • Kopieren Sie die Tokendaten und fügen Sie sie in den folgenden Befehlstext ein. Ersetzen Sie dabei die Zeichenfolge <token-data>, setzen Sie <terraform_version> auf die erforderliche Terraform-Version und <workspace_id>:
    • Der Arbeitsbereich wird aktualisiert, indem der Befehl cURL ausgeführt wird, um die API Schematics zur Aktualisierung der Terraform-Version aufzurufen. Diese Operation ist regionsspezifisch und muss den gewünschten Schematics API-Regionsendpunkt für die Zielregion des Arbeitsbereichs angeben. Ersetzen Sie den Text <schematics-region-endpoint> im Befehl durch den Endpunkt für die Zielarbeitsbereichsregion.
        curl -X PUT https://<schematics-region-endpoint>.cloud.ibm.com/v1/workspaces/<w_id> \
        -H 'Authorization: Bearer <token>' \
        -H 'refresh_token: <token>' \
        -d '{
        "type": [
            "<terraform_version>"
        ],
        "template_data": [
            {
                "folder": ".",
                "type": "<terraform_version>"
            }
        ]
        }'
    
  3. Prüfen Sie auf der Seite mit den Arbeitsbereichseinstellungen, ob die TF-Version jetzt auf die gewünschte Version gesetzt ist.

  4. Führen Sie eine Operation 'Plan generieren' für den Arbeitsbereich aus. Stellen Sie sicher, dass der Befehl ohne Fehler erfolgreich ausgeführt wird und keine unerwarteten Nachrichten protokolliert werden. Der Plan sollte dazu führen, dass keine Änderungen an den Ressourcen vorgeschlagen werden.

  5. Führen Sie eine Operation 'Plan anwenden' für den Arbeitsbereich aus. Stellen Sie sicher, dass der Befehl ohne Fehler erfolgreich ausgeführt wird und keine unerwarteten Nachrichten protokolliert werden.

  6. Sie haben jetzt erfolgreich ein Upgrade durchgeführt.

Upgrade der Terraform-Vorlagenversion 0.x auf 1.x durchführen

Bei 0.x-Releases ist das Upgrade der Terraform-Version ein schrittweiser Prozess, bei dem ein Upgrade durch jedes Release durchgeführt wird. Das Upgrade unterstützt kein Upgrade über mehrere Releases hinweg und muss von Release zu Release durchgeführt werden. Einige Aktualisierungen erfordern die Ausführung von Terraform- upgrade-Befehlen, um die Konfigurationsdateien zu ändern, sowie Änderungen an der Terraform-Statusdatei. Diese Schritte können nicht in Schematicsausgeführt werden. Terraform-Vorlagen für Arbeitsbereiche müssen mithilfe einer lokalen Kopie von Terraform aktualisiert werden. Führen Sie die Schritte zum Aktualisieren der 0.x-Releases aus.

Liste der Terraform-Versionen
Version Empfehlung
v0.12 Lesen Sie das v0.13-Upgradehandbuch und befolgen Sie die Anweisungen unter Upgrade eines Terraform-Arbeitsbereichs v0.12 auf v0.13. Schematics wird nicht weiter unterstützt Terraform v0.12.
v0.13 Für das Upgrade von Terraform v0.14 müssen Sie terraform apply mit Terraform v0.14 ausführen, um die Statusformatupgrades abzuschließen. Wenn Fehler auftreten, lesen Sie das v0.14-Upgradehandbuch. Befolgen Sie die Anweisungen upgrade-13-to10.
v0.14 Sie können ein Upgrade direkt auf die Terraform v1.0-Version durchführen. Lesen Sie das Upgradehandbuch zuv0.15.
v0.15 Sie können ein Upgrade direkt auf die Terraform v1.0-Version durchführen. Lesen Sie das Upgradehandbuch zuv1.0.

Upgrade für einen Terraform-Arbeitsbereich v0.12 auf v0.13 durchführen

Das Durchführen eines Upgrades für einen v0.12-Arbeitsbereich zur Verwendung der v0.13-Version von Terraform ist eine aus mehreren Schritten bestehende Task. Sie müssen das Terraform-Upgradehandbuch für das zugehörige Versionsupgrade sorgfältig lesen.

Führen Sie die folgenden Schritte aus, um im Arbeitsbereich „ Schematics “ ein Upgrade auf die aktuelle Terraform-Version durchzuführen.

  1. Aktualisieren der Terraformkonfigurationsdateien, um die neuere Syntak und Semantik zu verwenden.

  2. Passen Sie die Terraform-Statusdatei an, damit sie mit der neueren Version kompatibel ist. Schematics unterstützt keine integrierten Änderungen an der Terraform-Statusdatei. Daher müssen Sie die nachfolgend genannten Schritte durchführen.

    1. Bereiten Sie die per Upgrade aktualisierte Version der Terraform-Konfigurationsdateien und die Terraform-Statusdatei auf Ihrem lokalen System vor.
    2. Erstellen Sie den neuen Arbeitsbereich Schematics mit den neuen Terraform-Konfigurationsdateien und der Terraform-Statusdatei.
    3. Anschließend können Sie den älteren Arbeitsbereich löschen, ohne die Ressourcen zu löschen.

Nachfolgend sind die detaillierten Schritte für ein Upgrade von 0.12 auf 0.13:

  1. Überprüfen Sie, ob Ihre Schematics-Arbeitsbereiche in v0.12 über Ressourcen verfügen, ob die letzte Anwendung erfolgreich war und ob sich der Arbeitsbereich im Status normal befindet. Stellen Sie sicher, dass die Terraform-Konfigurationsdateien und die Terraform-Statusdatei für „ Terraform v0.12 “ in einem konsistenten Zustand sind.
  2. Laden Sie das Repository „ Git “, das von Ihrem Terraform v0.12-Arbeitsbereich „ Schematics “ verwendet wird, herunter oder klonen Sie es auf Ihren lokalen Rechner.
  3. Installieren Sie Terraform 0.13 auf Ihrer lokalen Maschine.
  4. Wechseln Sie in das Verzeichnis Ihres geklonten Repositorys und aktualisieren Sie Ihre Konfigurationsdateien auf die Version „ Terraform v0.13 “, indem Sie den Befehl „ Terraform v0.13upgrade “ ausführen. Weitere Informationen finden Sie in der Dokumentation zum Upgrade auf „ Terraform v0.13 “. Der Upgradebefehl generiert eine Datei versions.tf mit einem terraform-Konfigurationsblock.
  5. Bearbeiten Sie die Datei versions.tf, um den Quellenparameter wie im Codeblock gezeigt auf source = "IBM-Cloud/ibm" zu setzen.

versions.tf Datei

```terraform {: codeblock}
terraform {
    required_providers {
    ibm = {
      # TF-UPGRADE-TODO
      #
      # No source detected for this provider. You must add a source address
      # in the following format:
      #
      source = "IBM-Cloud/ibm"
      #
      # For more information, see the provider source documentation:
      #
    }
    }
    required_version = ">= 0.13"
}
```
  1. Laden Sie die Terraform-Statusdatei aus dem vorhandenen Schematics-Arbeitsbereich herunter. Verwenden Sie dazu den Schematics-Befehl 'state pull'.

    Wenn der Arbeitsbereich mit dem Befehl „ tfstate “ erstellt wird, betrachtet „ Schematics “ ihn als sichere Datei. Außerdem können Sie die erstellte Datei „ tfstate “ nicht über die Benutzeroberfläche abrufen. Sie müssen die Befehlszeile verwenden, um die Statusdatei zu extrahieren und einen Arbeitsbereich zu erstellen.

    Kopieren Sie die heruntergeladene Statusdatei als terraform.tfstate in den Terraform-Ausführungsordner.

  2. Führen Sie den Befehl 'state replace provider' in der Befehlszeile aus, um die IBM Cloud-Providerversion in der Statusdatei zu aktualisieren.

    terraform state replace-provider registry.terraform.io/-/ibm registry.terraform.io/ibm-cloud/ibm.
    
  3. Überprüfen Sie, ob die Aktualisierungen an der Datei terraform.tfstate mit der Aktualisierung der Terraform-Version von 1.3 auf >= 1.4 und dem Provider, der als registry.terraform.io/ibm-cloud/ibm aktualisiert wird, vorgenommen wurden.

  4. Übertragen Sie die aktualisierten TF-Konfigurationsdateien und version.tf zurück in Ihr Git-Repository.

  5. Kopieren Sie den Inhalt der geänderten Datei terraform.tfstate in die Datei state.json.

  6. Erstellen oder aktualisieren Sie eine Datei workspace.json wie im Codeblock gezeigt.

    {
        "name": "gb",
        "type": [
            "terraform_v1.4"
        ],
        "description": "migration workspace",
        "template_repo": {
            "url": "Provide your Git repository link"
        },
        "workspace_status" : {
            "frozen": false
        },
        "template_data": [{
            "folder": ".",
            "type": "terraform_v1.4"
        }]
    }
    
  7. Führen Sie diese Befehle über die Befehlszeile aus, um einen neuen Terraform v0.13-Arbeitsbereich zu erstellen:

    • ibmcloud schematics workspace new --file workspace.json --state state.json.

    • ibmcloud schematics workspace get --id  <workspace-id>. Wenn der Status Ihres Arbeitsbereichs nicht „ inactive “ lautet, warten Sie einige Sekunden und führen Sie den Befehl erneut aus.

    • ibmcloud schematics plan id <workspace id>.

    • ibmcloud schematics job get --id <job-id form plan>. Wenn der Status Ihres Arbeitsbereichsplans nicht „ success “ lautet, warten Sie einige Sekunden und führen Sie den Befehl erneut aus.

    • ibmcloud schematics apply --id <workspace id>.

    • ibmcloud schematics job get --id <job-id from apply>.

  8. [Optional] können Sie den Arbeitsbereich „ Schematics “ löschen, der Terraform v0.12 verwendet.

    Löschen Sie nicht die Ressourcen, die von Ihrem alten Arbeitsbereich verwendet werden.

Upgrade für Terraform-Vorlage von v0.13 und höher auf v1.0 durchführen

Die Versionen 0.13 bis 0.15 erfordern ein schrittweises Upgrade, 0.13 to 0.14, 0.14 to 0.15, 0.15 to 1.0.

Der Prozess ist für jeden Versionsschritt identisch. Es ist obligatorisch, dass eine Terraform-Anwendung nach jeder Versionsänderung ausgeführt wird. Dadurch wird die Terraform-Statusdatei mit Schemaänderungen aktualisiert, die sich nur auf diese Version und diese Version beziehen. Nach dem erfolgreichen Upgrade einer einzelnen Version kann die nächste Versionsaktualisierung durchgeführt werden.

  1. Lesen Sie das Terraform- Upgradehandbuch für das Release und implementieren Sie alle erforderlichen Konfigurationsänderungen.
  2. Führen Sie den in Upgrade der Terraform-Vorlage Version 1.x und höher durchführen beschriebenen Prozess aus, um ein Upgrade einer einzelnen Version auf die Zielversion durchzuführen.
  3. Prüfen Sie auf der Seite mit den Arbeitsbereichseinstellungen, ob die TF-Version jetzt auf die gewünschte Version gesetzt ist.
  4. Führen Sie eine Operation 'Plan generieren' für den Arbeitsbereich aus. Stellen Sie sicher, dass der Befehl ohne Fehler erfolgreich ausgeführt wird und keine unerwarteten Nachrichten protokolliert werden. Der Plan sollte dazu führen, dass keine Änderungen an den Ressourcen vorgeschlagen werden.
  5. Führen Sie eine Operation 'Plan anwenden' für den Arbeitsbereich aus. Dieser Schritt ist obligatorisch, um eine Aktualisierung der Terraform-Statusdatei durchzuführen. Stellen Sie sicher, dass der Befehl ohne Fehler erfolgreich ausgeführt wird und keine unerwarteten Nachrichten protokolliert werden.
  6. Sie haben nun ein Upgrade für einen einzelnen Versionsschritt erfolgreich durchgeführt.