Terraform
| 要件 |
|---|
| あなたのマシンにインストールされたTerraform ↗ |
| 適切に設定されたCloudflareプロバイダー ↗ |
Terraform ↗は、インフラストラクチャを構築、変更、バージョン管理するためのツールであり、Cloudflareリソース ↗を構築するためのコンポーネントとドキュメントを提供します。以下に、Terraformを使用してアクセスを構築するための例を示します。CloudflareとTerraformの設定に関するより一般的なガイドについては、TerraformとCloudflareの始め方 ↗のブログ記事をご覧ください。
-
アプリケーションを作成します。
こちらが設定の例です:
variable "domain" {default = "example.com"}variable "zone_id" {default = <CLOUDFLARE_ZONE_ID>}resource "cloudflare_access_application" "cf_app" {zone_id = var.zone_idname = "My Example App"domain = var.domainsession_duration = "24h"} -
次に、環境変数と秘密情報をエクスポートする必要があります:
Terminal window export CLOUDFLARE_EMAIL=<CLOUDFLARE_EMAIL>export CLOUDFLARE_API_KEY=<CLOUDFLARE_API_KEY> -
これで、提案された変更を出力する
terraform planを実行できます。計画を注意深く確認してください:Terminal window terraform planプランの前にメモリ内のTerraform状態を更新しています...更新された状態はこのプランの計算に使用されますが、ローカルまたはリモートの状態ストレージに保存されることはありません。------------------------------------------------------------------------実行プランが生成され、以下に示されています。リソースアクションは次の記号で示されます:+ createTerraformは次のアクションを実行します:# cloudflare_access_application.cf_appが作成されます+ resource "cloudflare_access_application" "cf_app" {+ aud = (適用後に知られる)+ domain = "example.com"+ id = (適用後に知られる)+ name = "My Example App"+ session_duration = "24h"+ zone_id = "1ce82492016e71df631bf4af9c02587f"}プラン:1を追加、0を変更、0を破棄。------------------------------------------------------------------------注意:このプランを保存するための"-out"パラメータを指定しなかったため、Terraformは"terraform apply"がその後実行された場合に正確にこれらのアクションが実行されることを保証できません。 -
これらの変更が正確であり、進めることに自信がある場合は、
applyコマンドを使用してこれらの変更を適用します:Terminal window terraform apply --auto-approvecloudflare_access_application.cf_app: 作成中...cloudflare_access_application.cf_app: 2秒後に作成完了 [id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]適用完了!リソース:1が追加され、0が変更され、0が破棄されました。
アプリケーションを作成した後、ポリシーを作成し、それをアプリケーションに添付することができます:
resource "cloudflare_access_policy" "cf_policy" { application_id = cloudflare_access_application.cf_app.id zone_id = var.zone_id name = "Example Policy" precedence = "1" decision = "allow"
include { email = ["test@example.com"] } }そのためには:
-
terraform planを実行します:Terminal window terraform planプランの前にメモリ内のTerraform状態を更新しています...更新された状態はこのプランの計算に使用されますが、ローカルまたはリモートの状態ストレージに保存されることはありません。cloudflare_access_application.cf_app: 状態を更新中... [id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]------------------------------------------------------------------------実行プランが生成され、以下に示されています。リソースアクションは次の記号で示されます:+ createTerraformは次のアクションを実行します:# cloudflare_access_policy.cf_policyが作成されます+ resource "cloudflare_access_policy" "cf_policy" {+ application_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"+ decision = "allow"+ id = (適用後に知られる)+ name = "My Example Policy"+ precedence = 1+ zone_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"+ include {+ email = [+ "test@example.com",]}}プラン:1を追加、0を変更、0を破棄。------------------------------------------------------------------------注意:このプランを保存するための"-out"パラメータを指定しなかったため、Terraformは"terraform apply"がその後実行された場合に正確にこれらのアクションが実行されることを保証できません。 -
次に、これらの変更が正確であり、進めることに自信がある場合は、
applyコマンドを使用してこれらの変更を適用します:Terminal window terraform apply --auto-approve
以下の例は、アイデンティティプロバイダーを設定し、それをポリシーに添付する方法を示しています:
resource "cloudflare_access_identity_provider" "github_oauth" { account_id = <CLOUDFLARE_ACCOUNT_ID> name = "GitHub OAuth" type = "github" config { client_id = <GITHUB_CLIENT_ID> client_secret = <GITHUB_CLIENT_SECRET> }}
resource "cloudflare_access_policy" "cf_policy" { application_id = cloudflare_access_application.cf_app.id zone_id = var.zone_id name = "My Example Policy" precedence = "1" decision = "allow"
include { email = ["test@example.com"] github { name = "My GitHub Org" identity_provider_id = cloudflare_access_identity_provider.github_oauth.id } }}これが、AccessとTerraformを使用して始めるための基本です。他のエンドポイントをTerraform経由で管理するための詳細については、APIドキュメントを参照してください。