スタックから新しいTerraformバージョンへのアップグレード
リソース・マネージャのスタックを新しいTerraformバージョンにアップグレードします。
これらの手順は、Marketplaceを介して作成されたリソース・マネージャ・スタックには適用されません。
これらのステップは、コマンドラインおよびコンソールで完了します。
Resource ManagerでサポートされているTerraformバージョンの詳細は、サポートされているTerraformバージョンを参照してください。
開始前
スタックを正常にアップグレードするには、次のものが必要です。
-
コマンドライン・ツールを実行するためのMacOS、LinuxまたはWindowsコンピュータ。
-
7-ZIPなどの
.zip
アーカイブを作成および解凍するソフトウェア。
アップグレードの流れ
初期バージョンでサポートされているアップグレード・パスは次のとおりです。
Terraformの初期バージョン | アップグレード・パス |
---|---|
0.12 | 順番に、サポートされている各バージョンにアップグレードします。0.13 > 0.14 > 1.0 (推奨) > 1.1 > 1.2 > 1.5。 |
0.13 | 順番に、サポートされている各バージョンにアップグレードします。0.14 > 1.0 (推奨) > 1.1 > 1.2 > 1.5。 |
0.14 | 順番に、サポートされている各バージョンにアップグレードします。1.0 (推奨) > 1.1 > 1.2 > 1.5。 |
1.0 | 順番に、サポートされている各バージョン(1.1 > 1.2 > 1.5)にアップグレードします。 |
1.1 | 順番に、サポートされている各バージョン(1.2 > 1.5)にアップグレードします。 |
1.2 | 次にアップグレード 1.5 |
タスク1: 最新のインフラストラクチャの確認
このタスクではコンソールを使用します。ステップのCLIおよびAPIの手順については、関連するリンクを参照してください。
タスク2: 構成および状態のダウンロード
スタックのTerraform構成がGitLabなどのソース・コード制御システムに格納されている場合は、Terraform構成をチェックアウトしてそこからダウンロードします。
スタックのTerraform構成がバケットに格納されている場合は、そこからTerraform構成をダウンロードします。
このタスクではコンソールを使用します。ステップのCLIおよびAPIの手順については、関連するリンクを参照してください。
タスク3: 構成のアップグレード
タスク4: スタックのアップグレード
タスク5: 状態のインポート
タスク6: 問題のチェック
このタスクではコンソールを使用します。ステップのCLIおよびAPIの手順については、関連するリンクを参照してください。
アップグレード中のログのトラブルシューティング
エラー: プロバイダのインストールに失敗しました
ログには、次のようなエラーメッセージが表示されます。
Error: Failed to install providers
Could not find required providers, but found possible alternatives:
hashicorp/gitlab -> gitlabhq/gitlab
If these suggestions look correct, upgrade your configuration with the following command:
terraform 0.13upgrade .
構成は、指定されたTerraformバージョンの要件を満たしていません。バージョン0.13.x以降では、この構文はプロバイダには使用されません。このエラーの原因となる構成例:
provider "gitlab" {
token = "glpat-_abcd"
}
# Add a project owned by the user
resource "gitlab_project" "sample_project" {
name = "example"
}
required_providers
ブロックを追加し、プロバイダのソース情報を明示的に指定します。詳細は、プロバイダの要求を参照してください。更新例:
terraform {
required_providers {
oci = {
source = "oracle/oci"
version = "5.46"
}
gitlab = {
source = "gitlabhq/gitlab"
version = "17.8.0"
}
}
}
エラー: 無効な引用符付きタイプ制約
ログには、次のようなエラーメッセージが表示されます。
Error: Invalid quoted type constraints on variables.tf line 18, in variable "vcn_dns_label"
18: type = "string"
Terraform 0.11 and earlier required type constraints to be given in quotes,
but that form is now deprecated and will be removed in a future version of
Terraform. Remove the quotes around "string".
構成は、指定されたTerraformバージョンの要件を満たしていません。バージョン1.0.x以降では、変数の型宣言に引用符を使用しません。このエラーの原因となる構成例:
variable "vcn_dns_label" {
type = "string"
default = "vcn"
}
変数の型宣言から引用符を削除します。更新例:
variable "vcn_dns_label" {
type = string
default = "vcn"
}
エラー: 関数呼び出し(map)のエラー
ログには、次のようなエラーメッセージが表示されます。
Error: Error in function call
on main.tf line 44, in resource "oci_core_subnet" "this":
44: display_name = lookup(map("a", "b", "c", "d"), "a", "default")
────────────────
while calling map(vals...)
Call to function "map" failed: the "map" function was deprecated in Terraform v0.12 and
is no longer available; use tomap({ ... }) syntax to write a literal map.
構成は、指定されたTerraformバージョンの要件を満たしていません。バージョン1.0.x以降では、この構文はマップに使用されません。このエラーの原因となる構成例:
resource "oci_core_subnet" "this" {
...
...
vcn_id = lookup(map("a", 1, "b", 2), "a", "default")
...
...
}
tomap()
を使用するようにマップの構文を修正します。更新例:
resource "oci_core_subnet" "this" {
...
...
vcn_id = lookup(tomap({"a" = 1, "b" = 2}), "a", "default")
...
...
}
エラー: 関数呼び出し(list)でエラーが発生しました
ログには、次のようなエラーメッセージが表示されます。
Error: Error in function call
on main.tf line 35, in resource "oci_core_subnet" "this"
35: count = length(list("phx-ad-1"", ""phx-ad-2"))
Call to function "list"" failed: the ""list" function was deprecated in
Terraform v0.12 and is no longer available; use tolist([ ... ]) syntax to
write a literal list.
構成は、指定されたTerraformバージョンの要件を満たしていません。バージョン1.0.x以降では、この構文はリストに使用されません。このエラーの原因となる構成例:
resource "oci_core_subnet" "this" {
count = length(list("phx-ad-1", "phx-ad-2"))
...
...
}
tolist()
を使用するようにリストの構文を修正します。更新例:
resource "oci_core_subnet" "this" {
count = length(tolist(["phx-ad-1", "phx-ad-2"]))
...
...
}
エラー: ["*"]形式のignore_changesワイルドカードは非推奨です
ログには、次のようなエラーメッセージが表示されます。
Getting providers from registry and/or custom terraform providers
resource "oci_core_subnet" "this"
44: ignore_changes = ["*"]
The ["*"] form of ignore_changes wildcard is was deprecated and is now
invalid. Use "ignore_changes = all" to ignore changes to all attributes.
構成は、指定されたTerraformバージョンの要件を満たしていません。バージョン1.0.x以降では、この構文はignore_changes
ワイルドカードには使用されません。このエラーの原因となる構成例:
resource "oci_core_subnet" "this" {
...
...
lifecycle {
ignore_changes = ["*"]
}
}
かわりにignore_changes = all
を使用してください。更新例:
resource "oci_core_subnet" "this" {
...
...
lifecycle {
ignore_changes = all
}
}
問題: 非推奨のHCL構文
ログは、非推奨のHCL構文が存在することを示します。
構成は、指定されたTerraformバージョンの要件を満たしていません。
非推奨のHCL構文を省略するように構成を更新します。