HCP TerraformのInfracost Cloud統合を試してみた

HCP TerraformのInfracost Cloud統合を試してみた

2025.10.02

Infracost CloudはHCP Terraformと統合が可能です。

HCP TerraformのRun TasksにInfracostを組み込むことで、HCP Terraform上でコスト見積もりの確認やポリシーの適用等が可能です。

やってみた

以下の手順を参考に統合を試してみます。

https://www.infracost.io/docs/integrations/terraform_cloud_enterprise/

Infracost: InfracostエンドポイントURLの発行

HCP Terraformとの連携はHCP TerraformのRun Tasksを利用します。

Run Tasks設定に、Infracost Endpoint URLとHMAC Keyが必要です。

これをInfracost側で発行します。

Infracost Cloudにログインして、Settings -> Org settings -> Integrations -> Terraform Run Task: Add Integrationの順に選択します。

Organization_settings_-_Infracost.png

エンドポイントURLとHMACキーが作成される旨が表示されます。

Enableを選択します。

Terraform_Run_Tasks_integration_-_Infracost.png

Endpoint URLHMAC keyを控えておきます。

Terraform_Run_Tasks_integration_-_Infracost.png

HCP Terraform: Infracost用Run Task作成

HCP Terraformにログインします。

Settings -> Run tasks -> Create Run taskの順に選択します。

Run_Tasks___classmethod-sandbox___HCP_Terraform_と_2BoO7kw5IQRVHgTVWVWPI8_md_—_blog.png

以下を設定して、Createを選択します。

  • Name: 任意の名前
  • Endpoint URL: Infracost Cloudで発行したEndpoint URL
  • Description: 任意
  • HMAC Key: Infracost Cloudで発行したHMAC key

Create_Run_Task___classmethod-sandbox___HCP_Terraform.png

WorkspaceにRun Tasksを設定

Run TasksはOrgまたはWorkspace単位で設定可能です。

今回はテスト用のWorkspaceにInfracost Run Taskを設定します。

HCP Terraformで任意のWorkspaceを選択し、Settings -> Run tasksを選択します。

どのタイミングでRun Tasksを実行するか選択できます。

今回はPlan時にInfracostでコストを見積もりたいため、Post-plan: Add run taskを選択します。

Run_Tasks___classmethod-sandbox___HCP_Terraform_と_2BoO7kw5IQRVHgTVWVWPI8_md_—_blog.png

ちなみに、Post-Plan以外はInfracost側が対応していないようです。ご注意ください。

Enable the Run Task as a post-plan stage in your workspaces (only this "stage" option is supported by Infracost).

https://www.infracost.io/docs/integrations/terraform_cloud_enterprise/#3-configure-a-run-task

Infracost用のRun Taskを選択して、Saveを選択します。

これで設定完了です。

Run Taskの実行確認

以下のコードを格納したGitHubリポジトリと連携したWorkspaceでRunをやってみます。

Nat Gatewayもfalseにしているため、見積もりコストは0になるはずです。

			
			# VPC Module
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "~> 6.0.1"

  name = "${var.environment}-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["ap-northeast-1a", "ap-northeast-1c"]
  private_subnets = ["10.0.101.0/24", "10.0.102.0/24"]
  public_subnets  = ["10.0.1.0/24", "10.0.2.0/24"]

  enable_nat_gateway   = false
  enable_vpn_gateway   = false
  enable_dns_hostnames = true
  enable_dns_support   = true

}

		

無事Infracostが実行されて、見積もり0USDになっていることが確認できました。

run-Q3enzTi3DsRZvgCT___Runs___classmethod-sandbox___HCP_Terraform.png

View more detailsを選択すると、Infracost Cloudの画面に遷移して詳細を確認できます。

Cost_estimate_-_Infracost.png

VPC内にEC2を追加するPull Requestを作ってみました。

既存のVPC内にEC2インスタンスを作成__Issue__10__by_msato0731_·_Pull_Request__16_·_msato0731_cc-hcptf-demo.png

自動的にHCP Terraform上でRunが開始されます。

Run Taskから変更によって、$11の月額コストが追加されることが確認できました。

run-4pTFZWc7wonQG5GX___Runs___classmethod-sandbox___HCP_Terraform.png

Infracost Cloudからコストの内訳も確認できます。

Cost_estimate_-_Infracost.png

Infracost Cloudのポリシーを使ってTerraform実行のガバナンスを効かせる

Infracost Cloudのポリシーで、Gravitonを利用していないことに対してInfracost Cloud側のポリシー失敗を確認できました。

このポリシーはデフォルトでは、解決の強制設定は入っていません。

そのため、Run Taskの結果はpassになり、HCP TerraformでApplyが可能です。

Infracost Cloud側でRequire engineers to resolve or dismiss issuesを有効化することで、問題の解決を強制できます。

EC2_-_consider_using_Graviton_instances_-_Infracost.png

再度Runをすると、Run TaskがFailedになりApplyができないことを確認できました。

run-4jZjheou1jFt49Zf___Runs___classmethod-sandbox___HCP_Terraform.png

この機能を使うことでガバナンスを効かせたパイプライン構築に役立ちます。(今回の例では、Gravitonを使っていないEC2のデプロイを拒否)

おわりに

HCP TerraformとInfracost Cloudの統合についてでした。

統合設定はかなりシンプルです。

統合を行うことでコストの見積もりだけではなく、Infracost Cloudのもつポリシーを使ってリソース作成のガバナンスを効かせることができます。

この記事をシェアする

FacebookHatena blogX

関連記事

HCP TerraformのInfracost Cloud統合を試してみた | DevelopersIO