BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Terraform 1.4リリース ~ ネイティブなNullリソース追加とOPAサポートの拡張

Terraform 1.4リリース ~ ネイティブなNullリソース追加とOPAサポートの拡張

 

HashiCorpTerraform 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でも利用できる。

作者について

この記事に星をつける

おすすめ度
スタイル

BT