HashicorpはTerraform 0.14を一般向け提供としてリリースした。このリリースでは、出力を変更中の要素のみに制限する新しい簡潔なdiff形式が導入されている。その他、機密データを非表示にする機能、プロバイダーの依存関係のロックファイルを生成する機能が改善されている。
簡潔なdiff形式は新しい実験的なものである。デフォルトでは、Terraformがこれから行う変更を理解する助けとなるように設計されている。terraform plan
、terraform apply
、terraform show <planfile>
で使用されるレンダリングされた差分が更新され、プランファイル内の変更されていない無関係なファイルが非表示になる。各親スコープの最後に、非表示の要素の数が表示される。
# test_resource.foo will be updated in-place
~ resource "test_resource" "foo" {
id = "foo_123"
~ checksum = 28987129 -> (known after apply)
- mode = "test" -> null
name = "Foo Test"
tags = []
~ totals = {
- "bar" = 5 -> null
+ "baz" = 5
# (2 unchanged elements hidden)
}
~ values = [
- "alpha",
- "gamma",
+ "alpaca",
+ "goblin",
+ "zephyr",
# (23 unchanged elements hidden)
]
# (5 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
これらの変更により、すべての識別フィールド(id
、name
、tags
)が常に表示される。プリミティブ(string
、number
、bool
)を使用すると、フィールドは、変更、追加、削除された場合にのみ表示される。map
、set
、object
、list
、tuple
タイプでは、追加あるいは削除された要素のみが表示される。
このリリースでは、入力変数とモジュール出力をセンシティブとして定義できるようになった。これにより、TerraformはCLI出力からの値を編集する。これは、ロギングやバージョン管理などのTerraform出力をそれを利用するシステムへ晒されることを防ぐためである。変数をセンシティブとして定義するには、sensitive
引数をtrue
に設定する。
variable "user_information" {
type = object({
name = string
address = string
})
sensitive = true
}
resource "some_resource" "a" {
name = var.user_information.name
address = var.user_information.address
}
これにより、plan
の値が難読化され、出力にapply
される。
Terraform will perform the following actions:
# some_resource.a will be created
+ resource "some_resource" "a" {
+ name = (sensitive)
+ address = (sensitive)
}
Plan: 1 to add, 0 to change, 0 to destroy.
これは、プランの値を難読化するだけであることに注意してください。そのままの状態で記録される。これは、状態にアクセスできる人なら誰でも機密データを見ることができることを意味する。状態の機密データを最適に処理する方法の詳細については、Terraformのドキュメントを参照してください。
このリリースには、terraform init
の実行時に自動的に生成される依存関係ロックファイルも含まれている。ロックファイルは現在、プロバイダーに焦点を合わせている。Terraform 0.13以降、顧客が管理するリモートレジストリ、あるいはサードパーティのリモートレジストリからプロバイダーをインストールできる。この新しいロックファイルは、ワークフローを以前の実行から複製できるようにするのに役立つ。そのため、生成されたロックファイルをソース管理にコミットすることをお勧めする。新しいプロバイダーへのアップグレードは、terraform init -upgrade
で実行できる。
Hashicorpは、当面の間、状態ファイルの上位互換性も約束している。Terraform 0.14.0では、Terraformの将来のバージョンと状態ファイルを共有できるようになる。ただし、新しい状態ファイル形式が必要な場合、将来のリリースでこれを変更する必要があるかもしれないことが注記されている。
詳細については、Terraformの変更ログを参照してください。これらの新機能を含む形で、HashiCorp Learnチュートリアルも更新されている。このリリースは、Terraformサイトからダウンロードできる。