バージョン制約の指定
バージョン制約を使って、Terraformテンプレートや Ansible playbookで使いたいTerraform、Terraformプロバイダ、 Ansible のバージョンを宣言します。
Schematics では、特定のバージョンの IBM Cloud Provider プラグイン、REST API プロバイダーなどの他の Terraform プロバイダー、および Ansible 実行可能ファイルをそれぞれパッケージ化する複数のイメージが同時にサポートされます。 各イメージは、IBM Cloud によってビルド、テスト、および検証されます。 組み込まれる Terraform プロバイダーのバージョンは、特定の Terraform CLI バージョンに対してテストおよびパッケージ化されます。
バージョン制約を使って、Terraformテンプレートや Ansible playbookが必要とするバージョンを宣言するのは良い習慣です。 これにより、互換性を破る変更が持ち込まれるおそれのある新しいバージョンが 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
Ansible Provisioner v2.3.3
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
ansible v2.9.23
IBM Cloud Provider v1.38.2
Template Type Version
terraform terraform_v1.5
Additional terraform Providers Version
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
Provider for REST API v1.10.0
ansible v2.9.23
Red Hat OpenShift client v3.11.0
Template Type Version
terraform terraform_v1.6
Additional terraform Providers Version
IBM Cloud Provider v1.38.2
Red Hat OpenShift client v3.11.0
ansible v2.9.23
Ansible Provisioner v2.3.3
Provider for REST API v1.10.0
Template Type Version
terraform terraform_v1.7
Additional terraform Providers Version
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
Provider for REST API v1.10.0
ansible v2.9.23
Red Hat OpenShift client v3.11.0
Template Type Version
terraform terraform_v1.8
Additional terraform Providers Version
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
ansible v2.9.23
Template Type Version
terraform terraform_v1.9
Additional terraform Providers Version
ansible v2.9.23
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
OK
Terraform CLI および Terraform プロバイダーに対するバージョン制約の指定
Terraform バージョン制約を使用して、使用する Terraform CLI のバージョンと、使用する任意のプロバイダーのバージョンを指定することができます。 バージョン制約の指定方法については、 Terraformのドキュメントを参照してください。
Terraform CLI に対するバージョン制約
Schematics ワークスペースを作成し、 v1.4
のような Terraform のバージョンを選択すると、 Schematics で設定されているデフォルトのパッチバージョンを使用して Terraform テンプレートが実行されます。 例えば、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.23 のみをサポートしています。 Schematics アクションを作成するときは、ご使用の Ansible Playbook をこのバージョンで実行できることを確認する必要があります。 Playbook のために特定の Ansible バージョンを指定することはできません。
ただし、Playbook の中で既存の Ansible の役割またはコレクションを使用している場合は、実行する役割またはコレクションのバージョンを、requirements.yml
ファイルを使用して指定することができます。 Playbook の中で役割とコレクションを参照する方法について詳しくは、Playbook での Ansible 役割の参照および
Playbookでの Ansible コレクションの参照を参照してください。 ロールとコレクションにバージョンを指定する方法の詳細については、 Ansible のドキュメントを参照してください。
roles:
- name: andrewrothstein.kubectl
version: 1.1.50