Terraformの新バージョンへのアップグレード
Schematics によって使用されるオープン・ソースの IaC ツールは、新しいバージョンの Terraform と Helm、およびサポートする Terraform プロバイダーと共に進化しています。 時間の経過とともに、最新バージョンの Terraform を使用するために、長寿命のワークスペース環境をアップグレードする必要があります。これは、古いバージョンが非推奨になり、サポート対象外になるためです。
すべての Schematics ユーザーは、操作とサポートの継続性を確保するために、最新の Terraform バージョンに定期的にアップグレードすることをお勧めします。 Schematics は、Terraform リリースの Hashicorp サポート・モデルに従い、Hashicorp に従ってバージョンを非推奨にします。
Terraform v1.0 は Terraform のメジャー・リリースであり、安定した 1.x リリースへの移行を示しています。 Hashicorp は、 1.x リリースの互換性の約束 を行いました。コア・フィーチャーの場合、 1.x リリースによるアップグレードに追加の変更は必要ありません。
つまり、 v1.x リリース間のアップグレードを簡単に行うことを目的としており、構成を変更する必要はなく、アップグレード・ステップを実行するためのコマンドも、Terraform に関してセットアップした自動化に対する変更も必要ありません。
1.x リリースにアップグレードする場合、特定の Schematics ワークスペース・アクションは必要ありません。 TF 構成/テンプレートの更新が必要になる可能性があるリリース固有の変更については、Terraform の アップグレード・ガイド を参照してください。
Terraform テンプレート・バージョン 1.x 以上のアップグレード
Terraform 1.0以降、 Schematics のワークスペースは、ワークスペースのバージョンを簡単に変更することで、より新しい 1.x リリースに更新できます。 0.x リリースから更新するには、セクション「 Terraform テンプレートのバージョン 0.xのアップグレード 」を参照してください。
Schematics は、一般出荷開始日以降に Terraform_v1.x
リリースを使用可能にする 45-60 days
ことをサポートします。 Terraform テンプレートの versions.tf
の required_version
パラメーターに >
、 >=
、 ~>
などのバージョン範囲制約を使用することをお勧めします。これにより、マイナー・リリースとパッチ・リリースのアップグレードが可能になります。 これにより、 Schematics は、ワークスペース・バージョンによって設定された Terraform バージョンの最新のパッチまたはマイナー・リリースを自動的に採用できます。
terraform {
required_version = "~> 1.1"
}
ワークスペースの Terraform 1.x バージョンの更新
ワークスペースの Terraform の使用中のバージョンは、 Schematics ワークスペースの Update APIを使用して更新できます。
ワークスペース Terraform バージョン・パラメーターの形式は、 terraform_v1.4
または terraform_v1.5
です。
-
更新するワークスペースを選択し、そのワークスペースが
Normal
状態であること、およびプラン操作によって提案されたリソース変更が生成されないことを確認します。workspace_id
を保存し、ワークスペースがホストされている領域をメモします。 -
IBM Cloud CLI および API を使用して、ワークスペースの Terraform のバージョンを更新します。 これらのワークスペース操作は領域固有です。 以下のコマンドで必要になるため、UI のワークスペース領域に注意してください。
ibmcloud login
を使用して IBM Cloud CLI にログインします。ibmcloud target -r <region>
を使用して、更新するワークスペースと同じになるように CLI ターゲット領域を設定します。- コマンド
ibmcloud iam oauth-tokens
を使用して、 Schematics API で使用する IAM oauth トークンを生成します。 - トークン・データをコピーし、以下のコマンド・テキストに挿入します。ストリング
<token-data>
を置き換えて、<terraform_version>
を必要な Terraform のバージョンと<workspace_id>
に設定します。 - ワークスペースを更新するには、
cURL
コマンドを実行して Schematics Update API を呼び出し、Terraform のバージョンを更新します。 この操作は地域固有であり、ワークスペース・ターゲット地域に対して必要な Schematics API 地域エンドポイント を指定する必要があります。 コマンド内のテキスト<schematics-region-endpoint>
を、ターゲット・ワークスペース・リージョンのエンドポイントに置き換えます。
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>" } ] }'
-
ワークスペース設定ページで、TF バージョンが必要なバージョンに設定されていることを確認してください。
-
ワークスペースに対して「計画の生成」操作を実行します。 コマンドがエラーなしで正常に実行され、予期しないメッセージがログに記録されないことを確認します。 計画の結果、リソースに対する変更が提案されないようにする必要があります。
-
ワークスペースに対して「プランの適用」操作を実行します。 コマンドがエラーなしで正常に実行され、予期しないメッセージがログに記録されないことを確認します。
-
これで正常にアップグレードされました。
Terraform テンプレートのバージョン 0.x を 1.x にアップグレード
0.x リリースでは、Terraform のバージョン・アップグレードは、各リリースを通じてアップグレードする段階的なプロセスです。 アップグレードは、複数のリリース間でのアップグレードをサポートしていないため、リリースごとに実行する必要があります。 一部の更新では、Terraform upgrade
コマンドを実行して構成ファイルも Terraform 状態ファイルに変更する必要があります。 これらのステップは Schematics内では実行できません。
ワークスペース Terraform テンプレートは、Terraform のローカル・コピーを使用してアップグレードする必要があります。 0.x リリースをアップグレードするための手順に従います。
バージョン | 推奨 |
---|---|
v0.12 |
v0.13 アップグレード・ガイド を確認し、 Terraform v0.12 ワークスペースの v0.13 へのアップグレード.
Schematics has deprecated Terraform v0.12 の手順に従ってください。 |
v0.13 |
Terraform v0.14 をアップグレードするには、 Terraform v0.14 を指定して terraform apply を実行し、状態フォーマットのアップグレードを完了する必要があります。 エラーが発生した場合は、 v0.14 アップグレード・ガイドを参照してください。 upgrade-13-to10 の手順に従います。 |
v0.14 |
Terraform v1.0 バージョンに直接アップグレードできます。 v0.15 アップグレード・ガイドを確認します。 |
v0.15 |
Terraform v1.0 バージョンに直接アップグレードできます。 v1.0 アップグレード・ガイドを確認します。 |
Terraform v0.12 ワークスペースの v0.13 へのアップグレード
v0.13
バージョンの Terraform を使用するための v0.12
ワークスペースのアップグレードは、複数のステップからなるタスクです。 関連するバージョンのアップグレードについては、 Terraform アップグレード・ガイド を注意深く確認する必要があります。
以下の手順で、 Schematics ワークスペースの Terraform を現在のバージョンにアップグレードします。
-
新しい構文とセマンティクスを使用するように Terraform 構成ファイルをアップグレードする。
-
Terraformステートファイルを新しいバージョンと互換性があるように移行する。 Schematics、Terraformステートファイルの組み込み修正には対応していない。 したがって、以下のステップを実行する必要があります。
- ローカル・マシンで、アップグレードされたバージョンの Terraform 構成ファイルと Terraform 状態ファイルを準備します。
- 新しい Terraform 構成ファイルと Terraform 状態ファイルを使用して、 新しい Schematics ワークスペースを作成します。
- リソースを破棄せずに 古いワークスペースの削除 を実行します。
以下に、 0.12 から 0.13: にアップグレードするための詳細なステップを示します。
-
v0.12
の Schematics ワークスペースにリソースがあるかどうか、最後の適用が成功したかどうか、およびワークスペースがnormal
状態であるかどうかを確認します。 Terraformの設定ファイルとTerraformの状態ファイルが、Terraform v0.12
の一貫した状態であることを確認する。 -
Terraform v0.12
Schematics ワークスペースで使用している Git リポジトリを、ローカルマシンにダウンロードするかクローンします。 -
ローカル・マシンに Terraform 0.13 をインストールします。
-
クローンしたリポジトリにディレクトリを変更し、
Terraform v0.13upgrade
コマンドを実行して設定ファイルをTerraform v0.13
にアップグレードします。 詳しくは、Terraform v0.13
ドキュメントへのアップグレードをご覧ください。 アップグレード・コマンドは、terraform
構成ブロックを持つversions.tf
ファイルを生成します。 -
コード・ブロックに示されているように、
versions.tf
ファイルを編集して、ソース・パラメーターをsource = "IBM-Cloud/ibm"
に設定します。versions.tf
fileterraform { 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" }
-
Schematics 状態プル コマンドを使用して、既存の Schematics ワークスペースから Terraform 状態ファイルをダウンロードします。
tfstate
Schematics を使用してワークスペースが作成された場合、そのワークスペースはセキュア・ファイルと見なされます。 また、作成したtfstate
ファイルをUIから引き出すことはできない。 コマンド・ラインを使用して、状態ファイルを プル し、 ワークスペースを作成 する必要があります。ダウンロードした状態ファイルを
terraform.tfstate
として Terraform 実行フォルダーにコピーします。 -
コマンド・ラインで状態置換プロバイダー・コマンドを実行して、状態ファイル内の IBM Cloud プロバイダーのバージョンを更新します。
terraform state replace-provider registry.terraform.io/-/ibm registry.terraform.io/ibm-cloud/ibm.
-
1.3
から>= 1.4
への Terraform バージョンの更新と、registry.terraform.io/ibm-cloud/ibm
として更新されたプロバイダーを使用して、terraform.tfstate
ファイルが更新されていることを確認します。 -
アップグレードした TF 構成ファイルと
version.tf
を Git リポジトリーにプッシュして戻します。 -
変更した
terraform.tfstate
ファイルの内容をstate.json
ファイルにコピーします。 -
コード・ブロックに示されているように、
workspace.json
ファイルを作成または更新します。
{
"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"
}]
}
- コマンドラインからこれらのコマンドを実行し、新しいTerraform
v0.13
ワークスペースを作成します:
-
ibmcloud schematics workspace new --file workspace.json --state state.json
. -
ibmcloud schematics workspace get --id <workspace-id>
. ワークスペースのステータスがinactive
でない場合は、数秒待ってからコマンドを再試行してください。 -
ibmcloud schematics plan id <workspace id>
. -
ibmcloud schematics job get --id <job-id form plan>
. ワークスペース・プランのステータスがsuccess
でない場合は、数秒待ってからコマンドを再試行してください。 -
ibmcloud schematics apply --id <workspace id>
. -
ibmcloud schematics job get --id <job-id from apply>
.
- [オプションで]、
Terraform v0.12
を使用している Schematics ワークスペースを削除することができる。
古いワークスペースで使用されているリソースを破棄しないでください。
Terraform テンプレートを v0.13
以上から v1.0
にアップグレードします。
バージョン 0.13 から 0.15 までは、0.13 to 0.14
, 0.14 to 0.15
, 0.15 to 1.0
という段階的なアップグレードが必要です。
このプロセスは、各バージョン・ステップで同じです。 バージョンが変更されるたびに Terraform 適用を実行する必要があります。 これにより、Terraform 状態ファイルが、そのバージョンとそのバージョンのみに関連するスキーマ変更で更新されます。 単一バージョンを正常にアップグレードした後、次のバージョン更新を実行できます。
- このリリースの Terraform アップグレード・ガイド を読み、必要な構成変更を実装します。
- Terraform テンプレート・バージョン 1.x 以上のアップグレード で概説されているプロセスに従って、単一バージョンをターゲット・バージョンにアップグレードします。
- ワークスペース設定ページで、TF バージョンが必要なバージョンに設定されていることを確認してください。
- ワークスペースに対して「計画の生成」操作を実行します。 コマンドがエラーなしで正常に実行され、予期しないメッセージがログに記録されないことを確認します。 計画の結果、リソースに対する変更が提案されないようにする必要があります。
- ワークスペースに対して「プランの適用」操作を実行します。 このステップは、Terraform 状態ファイルの更新を実行する 必須 です。 コマンドがエラーなしで正常に実行され、予期しないメッセージがログに記録されないことを確認します。
- これで、単一バージョンのステップが正常にアップグレードされました。