バージョン制約の指定

バージョン制約を使用して、Terraformテンプレートや Ansible プレイブックで使用するTerraform、Terraformプロバイダー、または Ansible のバージョンを指定します。

Schematics では、特定のバージョンの IBM Cloud Provider プラグイン、REST API プロバイダーなどの他の Terraform プロバイダー、および Ansible 実行可能ファイルをそれぞれパッケージ化する複数のイメージが同時にサポートされます。 各イメージは、IBM Cloud によってビルド、テスト、および検証されます。 組み込まれる Terraform プロバイダーのバージョンは、特定の Terraform CLI バージョンに対してテストおよびパッケージ化されます。

Terraformテンプレートや Ansible プレイブックで必要なバージョンを、バージョン制約を使用して明示しておくことが推奨されます。 これにより、互換性を破る変更が持ち込まれるおそれのある新しいバージョンが Terraform、Terraform プロバイダー、または Ansible で公開された場合でも、テンプレートおよび Playbook が引き続き動作するようにできます。

Schematics イメージとパッケージ化された Terraform プロバイダーの概要

ibmcloud schematics version コマンドを使用すると、Schematics イメージのリストと、各イメージにパッケージ化されている Terraform プロバイダーおよび Ansible 実行可能ファイルのバージョンを取得できます。 例えば、以下の CLI 出力では、IBM Cloud プロバイダー・プラグインの最新バージョンが Terraform v1.1 でテストされています。

Schematics は、そのイメージ内の IBM Cloud Provider Plug-in for Terraform バイナリーの最新 5 バージョンをサポートします。 詳しくは、 最新リリースを参照してください。 以下に、Terraform テンプレートで IBM Cloud プロバイダーを使用する際に従わなければならない制約をいくつか示します。

Terraform v1.0 以降を使用することをお勧めします。

  • Terraform v0.13 以上を使用している場合は、任意のバージョンの IBM Cloud プロバイダーをテンプレートで選択できます。その後、Schematics は、IBM Cloud プロバイダーをキャッシュからローカルに、または HashiCorp Configuration Language (HCL) Terraform レジストリーからリモートで自動的にダウンロードします。

事前定義された Schematics イメージを使用するには、必要なプロバイダー・バージョンを含む Terraform テンプレートで、IBM Cloud プロバイダー・プラグインのバージョンを明示的に宣言する必要があります。 詳しくは、Terraform CLI および Terraform プロバイダーに対するバージョン制約の指定を参照してください。

Ansible 実行可能ファイルのデフォルト・バージョンを変更することはできません。 参照される Ansible の役割とコレクションのバージョンを指定できるだけです。

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

Terraform CLI および Terraform プロバイダーに対するバージョン制約の指定

Terraform バージョン制約を使用して、使用する Terraform CLI のバージョンと、使用する任意のプロバイダーのバージョンを指定することができます。 バージョン制約の指定方法の詳細については、 Terraformのドキュメントを参照してください。

Terraform CLI に対するバージョン制約

Schematics ワークスペースを作成し、 v1.4 などのTerraformバージョンを選択すると、Terraformテンプレートは Schematics に設定されているデフォルトのパッチバージョンを使用して実行されます。 例えば、terraform_v1.4 を選択した場合、テンプレートは Terraform v0.13.4 を使用して適用されます。 required_providers 定義内の provider ブロックを使用すると、Schematics 内の Terraform エンジンがより新しいバージョンをプルするように強制できます。

指定できるのは、Schematics で設定されているデフォルトの MAJOR.MINOR.PATH バージョンより高いバージョンのみです。 コードブロック version = "x.x.x" は、IBM Cloud プロバイダー・バージョンを示します。

terraform {
    required_providers {
        version = "1.39.1"
    }
}

Terraform 構成ファイルで、デフォルトの MAJOR.MINOR.PATH より高い Terraform required_versions を指定できます。 コードブロックでは、required_version = ">=1.0.0, <2.0" は Terraform のバージョンを示します。

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

Terraform プロバイダーに対するバージョン制約

事前定義された Schematics イメージを使用するには、必要なプロバイダー・バージョンを含む Terraform テンプレートで IBM Cloud プロバイダー・プラグインのバージョンを明示的に宣言する必要があります。

Terraform テンプレートで IBM Cloud プロバイダー・プラグイン・バージョンが宣言されていない場合は、最新バージョンのプロバイダー・プラグインが Schematics で自動的に使用されます。

事前定義 Schematics イメージを指定する例:

以下の例は、IBM Cloud プロバイダー・プラグイン v1.39.1 用にビルドされた Schematics イメージを使用する方法を示しています。 このイメージには、REST API プロバイダーなど、他のプロバイダーの特定のバージョンが含まれています。

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

特定の Terraform プロバイダー・バージョンの使用例:

異なる IBM Cloud Provider プラグイン・バージョンを使用したり、Terraform 構成ファイルを AWS、Helm、または Kubernetes など、別の外部プロバイダーの特定のバージョンに固定したりするには、次の構文を使用します。

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

Ansible でのバージョン制約の指定

Schematics 現在、最新の Ansible バージョン( v2.9.27 )のみに対応しています。 Schematics アクションを作成するときは、ご使用の Ansible Playbook をこのバージョンで実行できることを確認する必要があります。 Playbook のために特定の Ansible バージョンを指定することはできません。

ただし、Playbook の中で既存の Ansible の役割またはコレクションを使用している場合は、実行する役割またはコレクションのバージョンを、requirements.yml ファイルを使用して指定することができます。 Playbook の中で役割とコレクションを参照する方法について詳しくは、Playbook での Ansible 役割の参照および Playbookでの Ansible コレクションの参照を参照してください。 ロールやコレクションのバージョンを指定する方法の詳細については、『 Ansible 』のドキュメントを参照してください。

roles:
  - name: andrewrothstein.kubectl
    version: 1.1.50