mcpField
T
terraform-policy

terraform-policy

github.com/hashicorpクラウド・DevOps9091.5k 回インストール今日更新
リポジトリ

terraform-policy について

terraform-policyは、Terraform Policyファイルの作成とテストを支援するユーティリティスキルです。ポリシーの作成や変換はtfpolicy-authorへ、テストはtfpolicy-testへ振り分け、インストール済みtfpolicy CLIのバージョンに応じたガイダンスを提供します。

主な機能

  1. 01.policy.hclファイルの作成と変換
  2. 02.policytest.hclファイルの作成とデバッグ
  3. 03専用サブスキルへのタスク振り分け
  4. 04tfpolicy CLIのバージョン別動作の確認

活用シーン

  1. 01要件に基づくポリシー作成
  2. 02Sentinelポリシーの変換
  3. 03ポリシーテストのデバッグ
  4. 04バージョンに応じた作成ガイダンスの選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hashicorp/agent-skills --skill terraform-policy

インストール後、Claude Code で/terraform-policyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
examples/conversion/cloudfront-associated-with-waf/
cloudfront-associated-with-waf.policy.hcl
cloudfront-associated-with-waf.sentinel
README.md
examples/conversion/cloudtrail-server-side-encryption-enabled/
cloudtrail-server-side-encryption-enabled.policy.hcl
cloudtrail-server-side-encryption-enabled.sentinel
README.md
examples/conversion/dms-endpoint-should-be-ssl-configured/
dms-endpoint-should-be-ssl-configured.policy.hcl
dms-endpoint-should-be-ssl-configured.sentinel
README.md
examples/conversion/dms-endpoints-should-use-ssl/
dms-endpoints-should-use-ssl.policy.hcl
dms-endpoints-should-use-ssl.sentinel
README.md
examples/conversion/ec2-network-acl-should-have-subnet-ids/
ec2-network-acl-should-have-subnet-ids.policy.hcl
ec2-network-acl-should-have-subnet-ids.sentinel
README.md
examples/conversion/ec2-vpc-default-security-group-no-traffic/
ec2-vpc-default-security-group-no-traffic.policy.hcl
ec2-vpc-default-security-group-no-traffic.sentinel
README.md
examples/conversion/efs-access-point-should-enforce-user-identity/
efs-access-point-should-enforce-user-identity.policy.hcl
efs-access-point-should-enforce-user-identity.sentinel
README.md
examples/conversion/elasticache-redis-replication-group-encryption-at-transit-enabled/
elasticache-redis-replication-group-encryption-at-transit-enabled.policy.hcl
elasticache-redis-replication-group-encryption-at-transit-enabled.sentinel
README.md
examples/conversion/elasticsearch-encrypted-at-rest/
elasticsearch-encrypted-at-rest.policy.hcl
elasticsearch-encrypted-at-rest.sentinel
README.md
examples/conversion/elasticsearch-https-required/
elasticsearch-https-required.policy.hcl
elasticsearch-https-required.sentinel

詳細

terraform-policy

ユーティリティスキル — 呼び出すスキル:tfpolicy-author | tfpolicy-test

次の場合に使用します:

  • 説明や要件をもとに、新しい .policy.hcl ポリシーを作成する
  • .sentinel ポリシーを Terraform Policy に変換する
  • .policytest.hcl テストファイルを作成またはデバッグする
  • Sentinel ポリシーライブラリを Terraform Policy に移行する

作成またはテストの手順を提示する前に、インストールされている tfpolicy CLI のバージョンを確認し、それに応じて案内してください。このスキルでは、直近の 2 つのマイナー系列である 0.2.x と 0.3.x のガイダンスを管理しています。新しいマイナー系列がリリースされたら、最も古い系列を削除して新しい系列を追加してください。

  • CLI が 0.2.x の場合(ベースライン)、リソースポリシーまたはプロバイダーポリシーを含む .policy.hcl ファイルを作成する際は、トップレベルに policy { required_providers { ... } } ブロックを含めてください。これは tfpolicy validate で必須です。バージョン範囲の検証はベストエフォートであり、resource_policy "*" のようなワイルドカードターゲットはスキーマ検証されません。tfpolicy test は、モックの attrs/prior_attrs をプロバイダーのスキーマと照合する事前チェックを行いません。また、core::alltrue/core::anytrue は存在せず、この 0.2.x 系列に限り、モックの resource {} ブロックでは attrs/prior_attrs を完全に省略できます。
  • CLI が 0.3.x 以降の場合、上記の他のガイダンスも適用されますが、リソース状態の省略を許可する 0.2.x の例外は適用されません。.policytest.hcl ファイル内のすべてのモック resource {} ブロックには、attrs または prior_attrs を宣言する必要があります。両方の評価結果が空の場合、そのテストケースはスキップされます(provider {} と module {} のモックには影響しません)(tfpolicy-test を参照)。tfpolicy test は、対象の .policy.hcl に既存のトップレベル policy { required_providers { ... } } ブロックがあればそれを再利用し(.policytest.hcl レベルに別途宣言する必要はありません)、すべてのテストの実行前に、解決済みのプロバイダースキーマと照合してプロバイダー、リソース、データソースのポリシー、および core::getdatasource()/core::getresources() の引数を検証します。スキーマが一致しない場合、実行全体が失敗します(tfpolicy-test を参照)。core::alltrue(list) と core::anytrue(list) も使用できます。core::length() を使ったリスト内包表記による回避策よりも、これらを優先してください(tfpolicy-author を参照)。meta.tfe_stack と meta.tfe_workspace.tags は、リソース、プロバイダー、モジュールの各ポリシーで使用できます。Stack の評価以外では、Stack のフィールドは空です。
  • CLI のバージョンが不明な場合は、まずユーザーに確認してもらうか、0.2.x と 0.3.x の手順を明確に区別したガイダンスを提示してください。

次の場合には使用しないでください:

  • Terraform モジュール用の .tftest.hcl ファイルを作成する場合 — terraform-test を使用してください
  • 一般的な Terraform HCL を作成する場合 — terraform-style-guide を使用してください

振り分け

タスクサブスキル
.policy.hcl ポリシーを作成または変換するtfpolicy-author
.policytest.hcl テストを作成またはデバッグするtfpolicy-test

例

  • 「暗号化されていない EC2 インスタンスをブロックする」→ tfpolicy-author
  • 「この Sentinel ポリシーを tfpolicy に変換する」→ tfpolicy-author
  • 「EBS ポリシー用の policytest を作成する」→ tfpolicy-test

トラブルシューティング

  • 誤ったスキルが呼び出されましたか? 上の振り分け表からサブスキルを直接読み込んでください。
npx skills add hashicorp/agent-skills/terraform/terraform-policy/skills/tfpolicy-author
npx skills add hashicorp/agent-skills/terraform/terraform-policy/skills/tfpolicy-test

コメント