Versionseinschränkungen angeben

Verwenden Sie Versionsbeschränkungen, um die Version von Terraform, des Terraform-Providers oder von Ansible anzugeben, die Sie für Ihre Terraform-Vorlage oder Ihr Ansible-Playbook verwenden möchten.

Schematics unterstützt gleichzeitig mehrere Images, die jeweils eine bestimmte Version des IBM CloudProvider-Plug-ins, andere Terraform-Provider, wie z. B. den REST-API-Provider, und die ausführbare Datei Ansible aufweisen. Jedes Bild wird von IBM Clouderstellt, getestet und verifiziert. Die im Lieferumfang enthaltenen Terraform-Provider-Versionen werden für eine bestimmte Terraform-CLI-Version getestet und verpackt.

Es empfiehlt sich, die von Ihrer Terraform-Vorlage oder Ihrem Ansible-Playbook benötigte Version mithilfe von Versionsbeschränkungen anzugeben. Auf diese Weise können Sie sicherstellen, dass Ihre Vorlagen und Playbooks weiterhin funktionieren, selbst wenn Terraform-Provider, Terraform-Provider oder Ansible neue Versionen veröffentlichen, die möglicherweise fehlerhafte Änderungen einführen.

Übersicht der SchematicsBilder und verpackten Terraform-Provider

Verwenden Sie den Befehl ibmcloud schematics version, um eine Liste der SchematicsBilder und des Terraform-Providers und der ausführbaren Ansible-Versionen abzurufen, die in den einzelnen Bildern verpackt sind. In der folgenden CLI-Ausgabe wird beispielsweise die neueste Version des IBM Cloud-Provider-Plug-ins in Terraform v1.1 getestet.

Schematics unterstützt die 5 neuesten IBM Cloud Provider Plug-in for Terraform-Binärdateien in seinem Image. Weitere Informationen finden Sie unter Neueste Releases. Im folgenden Abschnitt finden Sie einige Einschränkungen, die Sie beachten müssen, wenn Sie den IBM Cloud-Provider in Ihrer Terraform-Vorlage verwenden.

Es wird empfohlen, Terraform v1.0 oder höher zu verwenden.

Wenn Sie eines der vordefinierten Schematics-Images verwenden möchten, müssen Sie die Version des IBM Cloud-Provider-Plug-ins explizit in Ihrer Terraform-Vorlage, die die gewünschten Providerversionen enthält, deklarieren. Weitere Informationen finden Sie unter Versionseinschränkungen für die Terraform-CLI und die Terraform-Provider angeben.

Sie können die Standardversion für die ausführbare Ansible-Datei nicht ändern. Sie können nur die Version der referenzierten Ansible-Rollen und Sammlungen angeben.

ibmcloud schematics version
  Template Type   Version
  terraform       terraform_v1.4
  Additional terraform Providers   Version
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  IBM Cloud Provider               v1.38.2
  Template Type   Version
  terraform       terraform_v1.5
  Additional terraform Providers   Version
  IBM Cloud Provider               v1.38.2
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Template Type   Version
  terraform       terraform_v1.6
  Additional terraform Providers   Version
  Ansible Provisioner              v2.3.3
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Template Type   Version
  terraform       terraform_v1.7
  Additional terraform Providers   Version
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Ansible Provisioner              v2.3.3
  Template Type   Version
  terraform       terraform_v1.8
  Additional terraform Providers   Version
  ansible                          v2.9.27
  IBM Cloud Provider               v1.38.2
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.9
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.10
  Additional terraform Providers   Version
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  Ansible Provisioner              v2.3.3
  ansible                          v2.9.27
  Template Type   Version
  terraform       terraform_v1.11
  Additional terraform Providers   Version
  IBM Cloud Provider               v1.38.2
  Red Hat OpenShift client         v3.11.0
  Provider for REST API            v1.10.0
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Template Type   Version
  terraform       terraform_v1.12
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  IBM Cloud Provider               v1.38.2
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.13
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  IBM Cloud Provider               v1.38.2
  Provider for REST API            v1.10.0
  Template Type   Version
  terraform       terraform_v1.14
  Additional terraform Providers   Version
  ansible                          v2.9.27
  Ansible Provisioner              v2.3.3
  Red Hat OpenShift client         v3.11.0
  IBM Cloud Provider               v1.38.2
  Provider for REST API            v1.10.0
  OK

Versionseinschränkungen für die Terraform-CLI und die Terraform-Provider angeben

Sie können auswählen, ob die Terraform-CLI-Version und die Version eines der Provider angegeben werden sollen, die Sie mithilfe von Terraform-Versionseinschränkungen verwenden möchten. Weitere Informationen zur Festlegung von Versionsbeschränkungen finden Sie in der Terraform-Dokumentation.

Versionseinschränkungen für die Terraform-CLI

Wenn Sie einen Schematics-Arbeitsbereich erstellen und eine Terraform-Version auswählen v1.4, werden Ihre Terraform-Vorlagen mit der Standard-Patch-Version ausgeführt, die unter Schematics festgelegt ist. Wenn Sie beispielsweise terraform_v1.4 auswählen, werden Ihre Vorlagen mithilfe von Terraform v0.13.4 angewendet. Sie können den Block required_providers in Ihrer provider-Definition verwenden, um die Terraform-Engine in Schematicszu zwingen, eine höhere Version zu extrahieren.

Sie können nur Versionen angeben, die höher sind als die Standardversion MAJOR.MINOR.PATH, die in Schematicsfestgelegt ist. Im Codeblock gibt version = "x.x.x" die IBM Cloud-Providerversion an.

terraform {
    required_providers {
        version = "1.39.1"
    }
}

Sie können in required_versions Terraform-Versionen angeben, die höher sind als die Standardversion MAJOR.MINOR.PATH in der Terraform-Konfigurationsdatei. Im Codeblock gibt required_version = ">=1.0.0, <2.0" die Terraform-Version an.

terraform {
required_version = ">=1.0.0, <2.0"
  required_providers {
    ibm = {
      source = "IBM-Cloud/ibm"
    }
  }
}

Versionseinschränkungen für Terraform-Provider

Wenn Sie eine der vordefinierten Schematics-Images verwenden möchten, müssen Sie die Version des IBM Cloud-Provider-Plug-ins explizit in Ihrer Terraform-Vorlage, die die gewünschten Providerversionen enthält, deklarieren.

Wenn die IBM CloudProvider-Plug-in-Version in Ihrer Terraform-Vorlage nicht deklariert ist, wird die aktuelle Version des Provider-Plug-ins automatisch in Schematicsverwendet.

Beispiel für die Angabe eines vordefinierten Schematics-Image:

Das folgende Beispiel zeigt, wie das Schematics-Image verwendet wird, das für das IBM Cloud-Provider-Plug-in v1.39.1 erstellt wurde. Dieses Bild enthält bestimmte Versionen für andere Provider, wie z. B. den REST-API-Provider.

terraform {
    required_providers {
        ibm = {
        source = "IBM-Cloud/ibm"
        version = "v1.39.1"
    }
    }

Beispiel für die Verwendung bestimmter Terraform-Providerversionen:

Verwenden Sie die folgende Syntax, um eine andere IBM CloudProvider-Plug-in-Version zu verwenden, oder um Ihre Terraform-Konfigurationsdatei an eine bestimmte Version eines anderen externen Providers, z. B. AWS, Helm oder Kubernetes, zu fixieren.

terraform {
    required_providers {
        ibm = {
        source = "IBM-Cloud/ibm"
        version = "~> 1.38.1"
    }
    aws = {
        version = ">= 2.7.0"
        source = "hashicorp/aws"
    }
    }

Versionseinschränkungen in Ansible angeben

Schematics Derzeit wird ausschließlich die neueste Version von Ansible ( v2.9.27 ) unterstützt. Wenn Sie eine SchematicsAktion erstellen, müssen Sie sicherstellen, dass Ihre Ansible-Playbooks mit dieser Version ausgeführt werden können. Sie können für Ihr Spielbuch keine bestimmte Ansible-Version angeben.

Wenn Sie jedoch vorhandene Ansible-Rollen oder Sammlungen in Ihrem Playbook verwenden, können Sie die Version der Rolle oder Sammlung angeben, die Sie mit der Datei requirements.yml ausführen möchten. Weitere Informationen zur Referenzierung von Rollen und Sammlungen in Ihrem Playbook finden Sie unter Verweis auf Ansible-Rollen in Ihrem Playbook und Verweis auf Ansible-Sammlungen in Ihrem Playbook. Weitere Informationen zur Angabe von Versionen für Rollen und Sammlungen finden Sie in der Dokumentation zu Ansible.

roles:
  - name: andrewrothstein.kubectl
    version: 1.1.50