TerraformでGitHub ActionsのIPリストを参照する

GitHubのTerraform Providerを使ってみたら便利だった、というメモ。

GitHub ActionsのIPリストとは

GitHub Actionsの実行環境のIPアドレスは公開されており、以下のURLから取得できるようになっている。 https://api.github.com/meta

JSONデータのactionsというフィールドが、GitHub ActionsのIPアドレスに相当する。
以下のようにjqコマンド等を用いれば簡単に抽出できる。(ただしIPv4とIPv6は分離されておらず混在している)

curl https://api.github.com/meta | jq '.actions[]'

GitHubのTerraform Providerとは

GitHubは公式にTerraform Providerを公開している。(リポジトリはこちら
dataとしてgithub_ip_rangesが定義されており、actions_ipv4actions_ipv6が参照することができる。 https://registry.terraform.io/providers/integrations/github/6.2.2/docs/data-sources/ip_ranges

IPv4とIPv6をそれぞれ参照できるのもありがたい。

サンプル:GitHubのTerraform ProviderでIPリストを参照する

required_providersにGitHubのProviderを追加し、data定義を参照すればよい。

terraform {
  required_version = ">= 1.6.6"
  required_providers {
    github = {
      source  = "integrations/github"
      version = "~> 6.0"
    }
  }
}

data "github_ip_ranges" "test" {}

output "github_actions_ipv4_list" {
    value = data.github_ip_ranges.test.actions_ipv4
}

IP Rangesについては、GitHubのアクセストークンを設定しなくても参照できるようだ。

その他

同様に、DatadogなどもTerraform Providerを公開している。
例えばSyntheticsで使用されるIPv4は以下を用いて参照することができる。 https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/ip_ranges#synthetics_ipv4

関連記事


  1. Dependency Review Actionのライセンスチェック機能に関する調査メモ
  2. クエリパラメータを使ってお手軽にGitHubのプルリクを作成する
  3. 他の人には読めない形式でGitHubのSecretsの値を読み出す
  4. GitHub Actionsでプルリクのコメントに複数行テキストを投稿する
  5. GitHub Actionsでエラーの時だけ特定の処理を実行する
  6. プルリクレビューのノウハウ&観点集
  7. Tera Termのマクロで、パスワードを扱う操作を自動化する

comments powered by Disqus