ウェブサイト検索

CloudFlareでTerraformを使用する方法


Terraformは人気のあるインフラストラクチャーとしてコードのツールであり、CloudFlareと組み合わせることで、CloudFlare内の複雑な構成の管理がずっと簡単になります。知らない方のために説明すると、TerraformはHCL構成言語を使用してインフラストラクチャー構成を定義し、それをプロバイダーに要求された設定を適用するために使用できます。CloudFlareはDNSサービス、セキュリティ、およびエッジコンピューティングサービスを提供しており、これらはTerraformツールと完璧に組み合わせることができます。

Terraformのインストール

TerraformはWindowsまたはLinuxのいずれかで使用できます。Terraformのバイナリ自体は単一の実行可能ファイルであり、単にダウンロードしてシステムのパスに配置する必要があります。

ウィンドウズのインストール

まず、Windows用のTerraform実行可能ファイルをダウンロードする必要があります。ダウンロードしたら、その実行可能ファイルをWindowsのパスの場所に置いてください。実行可能ファイルを別の場所に置く必要があるが、いつでもアクセスできるようにしたい場合は、次のPowerShellコードを使用してユーザーのPATH環境変数を変更できます。

[System.Environment]::SetEnvironmentVariable("PATH",(($Env:PATH, "C:\Tools") -Join ";"),"User")

これを使用して、PATHシステムを変更することができます。UserをMachineに変更することで。この操作を行うには管理者権限が必要です。

Linuxのインストール

Windowsと同様に、Terraformの最新リリースをダウンロードします。GUIを使用していないこともあるので、次のシェルコードを使用してこれを行うことができます。{release}をコードのバージョンに置き換えてください。たとえば、0.13.0のように。

wget <https://releases.hashicorp.com/terraform/{release}/terraform_{release}_linux_amd64.zip>
unzip terraform_{release}_linux_amd64.zip
mv terraform /usr/bin/

CloudFlareのためのTerraformの設定

Terraformの設定を含むために、Terraform設定ファイルの拡張子である.tfファイルを保持するディレクトリを作成します。設定を保持する新しいディレクトリを作成してください。

Windows上のPowerShell 7

New-Item -Name 'CF_Terraform' -Type 'Directory'
Set-Location -Path 'CF_Terraform'

Linux上のBashシェル

mkdir cf_terraform
cd cf_terraform

ディレクトリを作成して移動したら、Terraformの設定を初期化する必要があります。まず、設定ファイルを作成する必要があります。私たちは、設定ファイルに資格情報をハードコーディングしないことを選択しています。代わりに、バージョン管理から除外された資格情報を渡すファイルを使用します。なお、変更を追跡するためにGitを強く推奨します。

cloudflare.tf

variable "api_token" {}
provider "cloudflare" {
  version = "~> 2.9"
  api_token = var.api_token
}

次の .auto.tfvars ファイルには、Terraformに渡すがバージョン管理履歴にコミットしたくない秘密が含まれます。

cloudflare.auto.tfvars

Zone.DNS Permissions
Example token below
api_token = "as3uo7WkxL6asdfasdfaME7IdLofKBG9C_Zi-gf"

.tfvarsファイルの.autoセクションの理由は、Terraformが操作時にこの変数フォルダを自動的に読み込むためであり、明示的に-var-file="cloudflare.tfvars"で渡す必要がないからです。

両方のファイルの設定が完了したので、設定を初期化する時間です。これにより、Terraform設定ファイルのproviderセクションで指定されたプロバイダーがインストールされます。

terraform init

Terraform CloudFlare構成の定義

ドメインに正常に接続したので、設定を作成する必要があります。最初に行うべきことは、DNSレコードの変更を対象とするzone_idを含むようにcloudflare.auto.tfvarsファイルを修正することです。次の行をcloudflare.auto.tfvarsファイルに追加してください。

Zone.DNS Permissions
api_token = "as3uo7WkxL6asdfasdfaME7IdLofKBG9C_Zi-gf"
Specific Domain Zone ID
zone_id = "fddd89b6e1d52ebdfdasdc8bc02186333"

次に、CloudFlareに追加するレコードを定義する必要があります。これを行うために、レコードを作成するためにcloudflare_recordリソースを使用します。これのフォーマットは以下の通りです:resource {type} {name}。タイプはcloudflare_recordであり、名前にはa_mydomain_comおよびcname_wwwを使用します。これらの名前は任意のものであり、あなたが好きなもので構いません。

resource "cloudflare_record" "a_mydomain_com" {
  zone_id = var.zone_id
  name = "mydomain.com"
  value = "133.145.220.110"
  type = "A"
  ttl = 1
  proxied = true
}
resource "cloudflare_record" "cname_www" {
  zone_id = var.zone_id
  name = "www"
  value = "mydomain.com"
  type = "CNAME"
  ttl = 1
  proxied = true
}

名前についての一つの注意点です。特定のレコードに対して状態をインポートするためにterraform importを使用する場合、次のようにインポートレコードと名前を一致させる必要があります:

terraform import cloudflare_record.a_mydomain_com {zone_id}/{record_id}

Terraformの変更を計画する

設定が定義されたので、terraform plan コマンドを実行できます。これにより、.tfstate ファイルを介して Terraform が知識を持っている内容と CloudFlare 環境との間の変更が生成されます。リソースがインポートされていない場合、またはこのコマンドを初めて実行する場合、Terraform は環境についての知識を持っていないため、すべての変更は新しいものとして扱われます。

terraform plan

Terraformの変更を適用する

設定に自信が持てるようになったら、単にapplyコマンドを使用してください。これにより確認が求められるので、yesと入力する必要があります。出力には適用する設定と状態が表示されます。

terraform apply

結論

CloudFlareとTerraformを組み合わせることは強力な組み合わせです。コードで環境を設計し、変更を時間の経過とともに追跡できると(バージョン管理を使用して)、新しい効率とコントロールが手に入ります。設定が誤っている場合は、以前の設定に簡単にロールバックできるため、エラーから回復するのが非常に迅速かつ苦痛なく行えます。

関連記事: