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_ipv4
やactions_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