Spécification des contraintes de version

Utilisez les contraintes de version pour spécifier la version de Terraform, du fournisseur Terraform ou d’ Ansible que vous souhaitez utiliser pour votre modèle Terraform ou votre playbook d’ Ansible.

Schematics prend en charge simultanément plusieurs images qui conditionnent chacune une version spécifique du plug-in de fournisseur IBM Cloud, d'autres fournisseurs Terraform, tels que le fournisseur d'API REST et de l'exécutable Ansible. Chaque image est générée, testée et vérifiée par IBM Cloud. Les versions de fournisseur Terraform incluses sont testées et conditionnées pour une version spécifique de l'interface de ligne de commande de Terraform.

Il est recommandé d'indiquer la version requise par votre modèle Terraform ou votre playbook d' Ansible s à l'aide de contraintes de version. De cette manière, vous pouvez vous assurer que vos modèles et protocoles fonctionnent toujours, même si Terraform, les fournisseurs Terraform ou Ansible publient de nouvelles versions susceptibles d'introduire des modifications avec rupture.

Présentation des images Schematics et des fournisseurs Terraform conditionnés

Utilisez la commande ibmcloud schematics version pour extraire une liste des images Schematics et les versions exécutables des fournisseurs Terraform et d'Ansible conditionnées dans chaque image. Par exemple, dans la sortie CLI suivante, la dernière version du plug-in du fournisseur IBM Cloud est testée sur Terraform v1.1.

Schematics prend en charge les 5 versions les plus récentes des fichiers binaires IBM Cloud Provider Plug-in for Terraform dans son image. Pour plus d'informations, voir les dernières éditions. Voici quelques contraintes que vous devez respecter lors de l'utilisation du fournisseur IBM Cloud dans votre modèle Terraform.

Il est recommandé d'utiliser Terraform v1.0 ou une version ultérieure.

  • Si vous utilisez Terraform version 0.13 ou une version ultérieure, vous pouvez choisir arbitrairement toute version du fournisseur IBM Cloud dans votre modèle. Ensuite, Schematics télécharge automatiquement le fournisseur IBM Cloud soit localement à partir du cache, soit à distance à partir du Registre Terraform de HashiCorp Configuration Language (HCL).

Pour utiliser l'une des images Schematics prédéfinies, vous devez déclarer explicitement la version du plug-in IBM Cloud Provider dans votre modèle Terraform qui inclut les versions de fournisseur que vous souhaitez. Pour plus d'informations, voir Spécification des contraintes de version de l'interface de ligne de commande de Terraform et des fournisseurs Terraform.

Vous ne pouvez pas modifier la version par défaut de l'exécutable Ansible. Vous pouvez uniquement spécifier la version des collections et rôles Ansible référencés.

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

Spécification des contraintes de version de l'interface de ligne de commande de Terraform et des fournisseurs Terraform

Vous pouvez choisir de spécifier la version de l'interface de ligne de commande de Terraform et la version de l'un des fournisseurs à utiliser à l'aide des contraintes de version Terraform. Pour plus d'informations sur la manière de spécifier des contraintes de version, consultez la documentation Terraform.

Contraintes de version de l'interface de ligne de commande de Terraform

Lorsque vous créez un espace de travail Schematics et que vous choisissez une version de Terraform telle que v1.4, vos modèles Terraform sont exécutés à l'aide de la version de patch par défaut définie dans Schematics. Par exemple, si vous choisissez terraform_v1.4, vos modèles sont appliqués à l'aide de Terraform v0.13.4. Vous pouvez utiliser le bloc required_providers de votre définition provider pour forcer le moteur Terraform de Schematics à extraire une version ultérieure.

Vous ne pouvez spécifier que des versions ultérieures à la version MAJOR.MINOR.PATH par défaut définie dans Schematics. Dans la codeblock, version = "x.x.x" signifie la version du fournisseur IBM Cloud.

terraform {
    required_providers {
        version = "1.39.1"
    }
}

Vous pouvez spécifier Terraform required_versions supérieur à la valeur par défaut MAJOR.MINOR.PATH dans le fichier de configuration Terraform. Dans le codeblock, le required_version = ">=1.0.0, <2.0" signifie la version Terraform.

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

Contraintes de version des fournisseurs Terraform

Pour utiliser l'une des Images Schematicsprédéfinies, vous devez déclarer explicitement la version du plug-in IBM Cloud Provider dans votre modèle Terraform qui inclut les versions de fournisseur que vous souhaitez.

Si la version du plug-in de fournisseur IBM Cloud n'est pas déclarée dans votre modèle Terraform, la dernière version du plug-in du fournisseur est automatiquement utilisée dans Schematics.

Exemple de spécification d'une image Schematics prédéfinie:

L'exemple suivant montre comment utiliser l'image Schematics qui a été générée pour le plug-in IBM Cloud Provider v1.39.1. Cette image inclut des versions spécifiques pour d'autres fournisseurs, tels que le fournisseur d'API REST.

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

Exemple d'utilisation de versions de fournisseur Terraform spécifiques:

Pour utiliser une autre version de plug-in de fournisseur IBM Cloud ou pour épingler votre fichier de configuration Terraform à une version spécifique d'un autre fournisseur externe, tel que AWS, Helm ou Kubernetes, utilisez la syntaxe ci-après.

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

Spécification des contraintes de version dans Ansible

Schematics Prend actuellement en charge uniquement la dernière version d' Ansible v2.9.27. Lorsque vous créez une action Schematics, vous devez vous assurer que vos protocoles Ansible peuvent être exécutés avec cette version. Vous ne pouvez pas spécifier une version spécifique d'Ansible pour votre protocole.

Toutefois, si vous utilisez des collections ou des rôles Ansibles existants dans votre protocole, vous pouvez spécifier la version du rôle ou de la collection à exécuter à l'aide d'un fichier requirements.yml. Pour plus d'informations sur la manière de référencer des rôles et des collections dans votre protocole, reportez-vous aux rubriques Référencement des rôles Ansible dans votre protocole et Référencement des collections Ansible dans votre protocole. Pour en savoir plus sur la manière de spécifier les versions des rôles et des collections, consultez la documentation Ansible.

roles:
  - name: andrewrothstein.kubectl
    version: 1.1.50