HashiCorpはTerraform 1.4をリリースした。 本リリースでは、構造化された実行出力とOPAポリシー結果のCLIサポートが含まれ、その他の改善点としては、Nullユーティリティプロバイダのネイティブな置き換えがある。
新しい terraform_data
リソースが Null リソースのビルトインの置き換えとして追加されたのである。 terraform_data
は標準的なリソースのライフサイクルを実装しており、プロバイダを必要とせず、また設定することなく使用できる。
terraform_data
の2つの主な使用例は、管理リソースのライフサイクルを必要とする値の格納と、論理的なマネージドリソースが利用できないプロビジョナーのトリガーである。 例えば、replace_triggered_by
は、参照される項目のいずれかが変更されるとリソースを置き換える。置き換えの判断は、指定されたすべてのリソースの計画されたアクションに基づいて行われるため、リソースアドレスでのみ使用できる。この例では、aws_ecs_service
のインスタンスが置き換えられるたびに、aws_appautoscaling_target
を置き換える。
`resource "aws_appautoscaling_target" "ecs_target" {
lifecycle {
replace_triggered_by = [
aws_ecs_service.svc.id
]
}
}`
置換を強制する便利な属性がない場合はterraform_data
を使用できる。 これは、ローカルな値や、それ自身が計画的なアクションを持たない入力変数に対して機能する。 以下の例では、リソースexample_database
は、リビジョン変数の値が変更されるたびに置き換えられる。
`variable "revision" {
default = 1
}
resource "terraform_data" "replacement" {
input = var.revision
}
resource "example_database" "test" {
lifecycle {
replace_triggered_by = [terraform_data.replacement]
}
}`
この例では、terraform_data
を使用してコンテナを作成し、プロビジョナーのアクションで交換をトリガーできるようにしている。
`resource "aws_instance" "web" {
# ...
}
resource "aws_instance" "database" {
# ...
}
resource "terraform_data" "bootstrap" {
triggers_replace = [
aws_instance.web.id,
aws_instance.database.id
]
provisioner "local-exec" {
command = "bootstrap-hosts.sh"
}
}`
このリリースでは、Terraform Cloud内で利用可能な構造化された実行出力を拡張し、CLIでの実行結果も含めるようにした。 Terraform CloudはHashiCorpのTerraform-as-a-service環境である。このビューは、よりユーザーフレンドリーな実行結果の表現を提供する。 以前のリリースでは、UI、バージョン管理統合、またはAPIから開始された実行のみがサポートされていた。
Terraform Cloudの構造化された実行出力(クレジット:HashiCorp)
Terraform Cloudは以前、Open Policy Agent (OPA)のサポートを追加した。 OPAはオープン・ポリシー・エージェント(OPA)、Regoとして知られる高レベルの宣言型言語を利用する。 OPAのサポートはSentinelと共に動作し、policy-as-codeによる実行をサポートするSentinelはHashiCorpのpolicy-as-code言語である。
Terraform 1.4では、Terraform Cloud内のCLI駆動の実行でOPAの結果をサポートするようになった。 これらの実行はOPAポリシーとSentinelポリシーの間でパリティを持つようになった。 さらに、ポリシーが失敗し、オーバーライドが許可されている場合、CLI 内での手動オーバーライドがサポートされるのである。
本リリースのその他の改善点として、terraform plan
はエラーが発生した場合でもプランファイルを保存する。 これは、エラーのトラブルシューティングのために検査できる。 ワークスペースの自動作成を簡略化するため、terraform workspace select
コマンドに-or-create
フラグが追加された。
1.4リリースの詳細はドキュメントや変更履歴を参照してほしい。 Terraform 1.4はHashiCorpのサイトからダウンロード可能で、Terraform Cloudでも利用できる。