cf-terraforming: Cloudflare DNS 설정을 테라폼 코드로 추출

💡 핵심 요약 (Executive Summary)

본 가이드는 terraform cf terraforming 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents
installation
  • brew
bash
brew tap cloudflare/cloudflare
  brew install cloudflare/cloudflare/cf-terraforming
  • go
bash
go install github.com/cloudflare/cf-terraforming/cmd/cf-terraforming@latest
  • amd64
bash
# latest 찾기
  version=$(curl -I https://github.com/cloudflare/cf-terraforming/releases/latest | grep -i location | sed 's%location: https://github.com/cloudflare/cf-terraforming/releases/tag/v%%g' | tr -d '\r')
  wget https://github.com/cloudflare/cf-terraforming/releases/download/v${version}/cf-terraforming_${version}_linux_amd64.tar.gz
  tar xvzf cf-terraforming_${version}_linux_amd64.tar.gz
  sudo mv ./cf-terraforming /usr/local/bin/cf-terraforming
Exec
bash
export CLOUDFLARE_EMAIL=
export CLOUDFLARE_API_TOKEN=
export CLOUDFLARE_ZONE_ID=
export CLOUDFLARE_ACCOUNT_ID=

# Zone-Type Resources
cf-terraforming generate --email $CLOUDFLARE_EMAIL --token $CLOUDFLARE_API_TOKEN -z $CLOUDFLARE_ZONE_ID --resource-type cloudflare_record > main-record.tf
cf-terraforming generate --email $CLOUDFLARE_EMAIL --token $CLOUDFLARE_API_TOKEN -z $CLOUDFLARE_ZONE_ID --resource-type cloudflare_zone_settings_override > main-zone_settings_override.tf

# Account-Type Resources
cf-terraforming generate --email $CLOUDFLARE_EMAIL --token $CLOUDFLARE_API_TOKEN -a $CLOUDFLARE_ACCOUNT_ID --resource-type cloudflare_access_application > main-access_application.tf
cf-terraforming generate --email $CLOUDFLARE_EMAIL --token $CLOUDFLARE_API_TOKEN -a $CLOUDFLARE_ACCOUNT_ID --resource-type cloudflare_tunnel > main-cloudflare_tunnel.tf
.cf-terraforming.yaml 사용 예제
bash
# Home dir 사용시 --config 제거 가능
vi ~/.cf-terraforming.yaml
cf-terraforming generate --resource-type cloudflare_record

# 특정 dir 사용시
vi ./.cf-terraforming.yaml
cf-terraforming generate --resource-type cloudflare_record --config .cf-terraforming.yaml
for-loop
bash
#!/bin/bash

zone_config="--config .cf-terraforming-zone.yaml"
account_config="--config .cf-terraforming-account.yaml"

resource_names=(
...
)

for resource_name in "${resource_names[@]}"; do
        cf-terraforming generate $zone_config --resource-type $resource_name > cf-zone/main-${resource_name}.tf
        cf-terraforming generate $account_config --resource-type $resource_name > cf-account/main-${resource_name}.tf
don
Resources of Provider Release


provider v4 all

Resource Resource Scope Generate Supported Import Supported
[cloudflare\_access\_application](https://www.terraform.io/docs/providers/cloudflare/r/access_application) Account ✅ ✅
[cloudflare\_access\_group](https://www.terraform.io/docs/providers/cloudflare/r/access_group) Account ✅ ✅
[cloudflare\_access\_identity\_provider](https://www.terraform.io/docs/providers/cloudflare/r/access_identity_provider) Account ✅ ❌
[cloudflare\_access\_mutual\_tls\_certificate](https://www.terraform.io/docs/providers/cloudflare/r/access_mutual_tls_certificate) Account ✅ ❌
[cloudflare\_access\_policy](https://www.terraform.io/docs/providers/cloudflare/r/access_policy) Account ❌ ❌
[cloudflare\_access\_rule](https://www.terraform.io/docs/providers/cloudflare/r/access_rule) Account ✅ ✅
[cloudflare\_access\_service\_token](https://www.terraform.io/docs/providers/cloudflare/r/access_service_token) Account ✅ ❌
[cloudflare\_account\_member](https://www.terraform.io/docs/providers/cloudflare/r/account_member) Account ✅ ✅
[cloudflare\_api\_shield](https://www.terraform.io/docs/providers/cloudflare/r/api_shield) Zone ✅ ❌
[cloudflare\_api\_token](https://www.terraform.io/docs/providers/cloudflare/r/api_token) User ❌ ❌
[cloudflare\_argo](https://www.terraform.io/docs/providers/cloudflare/r/argo) Zone ✅ ✅
[cloudflare\_authenticated\_origin\_pulls](https://www.terraform.io/docs/providers/cloudflare/r/authenticated_origin_pulls) Zone ❌ ❌
[cloudflare\_authenticated\_origin\_pulls\_certificate](https://www.terraform.io/docs/providers/cloudflare/r/authenticated_origin_pulls_certificate) Zone ❌ ❌
[cloudflare\_bot\_management](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/bot_management) Zone ✅ ✅
[cloudflare\_byo\_ip\_prefix](https://www.terraform.io/docs/providers/cloudflare/r/byo_ip_prefix) Account ✅ ✅
[cloudflare\_certificate\_pack](https://www.terraform.io/docs/providers/cloudflare/r/certificate_pack) Zone ✅ ✅
[cloudflare\_custom\_hostname](https://www.terraform.io/docs/providers/cloudflare/r/custom_hostname) Zone ✅ ✅
[cloudflare\_custom\_hostname\_fallback\_origin](https://www.terraform.io/docs/providers/cloudflare/r/custom_hostname_fallback_origin) Account ✅ ❌
[cloudflare\_custom\_pages](https://www.terraform.io/docs/providers/cloudflare/r/custom_pages) Account or Zone ✅ ✅
[cloudflare\_custom\_ssl](https://www.terraform.io/docs/providers/cloudflare/r/custom_ssl) Zone ✅ ✅
[cloudflare\_filter](https://www.terraform.io/docs/providers/cloudflare/r/filter) Zone ✅ ✅
[cloudflare\_firewall\_rule](https://www.terraform.io/docs/providers/cloudflare/r/firewall_rule) Zone ✅ ✅
[cloudflare\_healthcheck](https://www.terraform.io/docs/providers/cloudflare/r/healthcheck) Zone ✅ ✅
[cloudflare\_ip\_list](https://www.terraform.io/docs/providers/cloudflare/r/ip_list) Account ❌ ✅
[cloudflare\_list](https://www.terraform.io/docs/providers/cloudflare/r/list) Account ✅ ❌
[cloudflare\_load\_balancer](https://www.terraform.io/docs/providers/cloudflare/r/load_balancer) Zone ✅ ✅
[cloudflare\_load\_balancer\_monitor](https://www.terraform.io/docs/providers/cloudflare/r/load_balancer_monitor) Account ✅ ✅
[cloudflare\_load\_balancer\_pool](https://www.terraform.io/docs/providers/cloudflare/r/load_balancer_pool) Account ✅ ✅
[cloudflare\_logpull\_retention](https://www.terraform.io/docs/providers/cloudflare/r/logpull_retention) Zone ❌ ❌
[cloudflare\_logpush\_job](https://www.terraform.io/docs/providers/cloudflare/r/logpush_job) Zone ✅ ❌
[cloudflare\_logpush\_ownership\_challenge](https://www.terraform.io/docs/providers/cloudflare/r/logpush_ownership_challenge) Zone ❌ ❌
[cloudflare\_magic\_firewall\_ruleset](https://www.terraform.io/docs/providers/cloudflare/r/magic_firewall_ruleset) Account ❌ ❌
[cloudflare\_origin\_ca\_certificate](https://www.terraform.io/docs/providers/cloudflare/r/origin_ca_certificate) Zone ✅ ✅
[cloudflare\_page\_rule](https://www.terraform.io/docs/providers/cloudflare/r/page_rule) Zone ✅ ✅
[cloudflare\_rate\_limit](https://www.terraform.io/docs/providers/cloudflare/r/rate_limit) Zone ✅ ✅
[cloudflare\_record](https://www.terraform.io/docs/providers/cloudflare/r/record) Zone ✅ ✅
[cloudflare\_ruleset](https://www.terraform.io/docs/providers/cloudflare/r/ruleset) Account or Zone ✅ ✅
[cloudflare\_spectrum\_application](https://www.terraform.io/docs/providers/cloudflare/r/spectrum_application) Zone ✅ ✅
[cloudflare\_tiered\_cache](https://www.terraform.io/docs/providers/cloudflare/r/tiered_cache) Zone ✅ ❌
[cloudflare\_teams\_list](https://www.terraform.io/docs/providers/cloudflare/r/teams_list) Account ✅ ✅
[cloudflare\_teams\_location](https://www.terraform.io/docs/providers/cloudflare/r/teams_location) Account ✅ ✅
[cloudflare\_teams\_proxy\_endpoint](https://www.terraform.io/docs/providers/cloudflare/r/teams_proxy_endpoint) Account ✅ ✅
[cloudflare\_teams\_rule](https://www.terraform.io/docs/providers/cloudflare/r/teams_rule) Account ✅ ✅
[cloudflare\_tunnel](https://www.terraform.io/docs/providers/cloudflare/r/tunnel) Account ✅ ✅
[cloudflare\_turnstile\_widget](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/turnstile_widget) Account ✅ ✅
[cloudflare\_url\_normalization\_settings](https://www.terraform.io/docs/providers/cloudflare/r/url_normalization_settings) Zone ✅ ❌
[cloudflare\_waf\_group](https://www.terraform.io/docs/providers/cloudflare/r/waf_group) Zone ❌ ❌
[cloudflare\_waf\_override](https://www.terraform.io/docs/providers/cloudflare/r/waf_override) Zone ✅ ✅
[cloudflare\_waf\_package](https://www.terraform.io/docs/providers/cloudflare/r/waf_package) Zone ✅ ❌
[cloudflare\_waf\_rule](https://www.terraform.io/docs/providers/cloudflare/r/waf_rule) Zone ❌ ❌
[cloudflare\_waiting\_room](https://www.terraform.io/docs/providers/cloudflare/r/waiting_room) Zone ✅ ✅
[cloudflare\_worker\_cron\_trigger](https://www.terraform.io/docs/providers/cloudflare/r/worker_cron_trigger) Account ❌ ❌
[cloudflare\_worker\_route](https://www.terraform.io/docs/providers/cloudflare/r/worker_route) Zone ✅ ✅
[cloudflare\_worker\_script](https://www.terraform.io/docs/providers/cloudflare/r/worker_script) Account ❌ ❌
[cloudflare\_workers\_kv](https://www.terraform.io/docs/providers/cloudflare/r/workers_kv) Account ❌ ❌
[cloudflare\_workers\_kv\_namespace](https://www.terraform.io/docs/providers/cloudflare/r/workers_kv_namespace) Account ✅ ✅
[cloudflare\_zone](https://www.terraform.io/docs/providers/cloudflare/r/zone) Account ✅ ✅
[cloudflare\_zone\_dnssec](https://www.terraform.io/docs/providers/cloudflare/r/zone_dnssec) Zone ❌ ❌
[cloudflare\_zone\_lockdown](https://www.terraform.io/docs/providers/cloudflare/r/zone_lockdown) Zone ✅ ✅
[cloudflare\_zone\_settings\_override](https://www.terraform.io/docs/providers/cloudflare/r/zone_settings_override) Zone ✅ ❌


provider v5 importable

Any resources not listed may have known issues or may not yet support import.

Resource Type Identifier Type CLI Flags Example
cloudflare_account account
cloudflare_account_member account
cloudflare_address_map account
cloudflare_api_shield_operation zone
cloudflare_bot_management zone
cloudflare_certificate_pack zone
cloudflare_custom_hostname zone
cloudflare_custom_hostname_fallback_origin zone
cloudflare_d1_database account
cloudflare_dns_firewall account
cloudflare_dns_record zone
cloudflare_dns_zone_transfers_acl account
cloudflare_dns_zone_transfers_incoming zone
cloudflare_dns_zone_transfers_outgoing zone
cloudflare_dns_zone_transfers_peer account
cloudflare_dns_zone_transfers_tsig account
cloudflare_email_routing_address account
cloudflare_email_routing_catch_all zone
cloudflare_email_routing_dns zone
cloudflare_email_routing_rule zone
cloudflare_email_routing_settings zone
cloudflare_email_security_block_sender account
cloudflare_email_security_impersonation_registry account
cloudflare_email_security_trusted_domains account
cloudflare_filter zone
cloudflare_healthcheck zone
cloudflare_hostname_tls_setting zone cloudflare_hostname_tls_setting=ciphers,min_tls_version
cloudflare_keyless_certificate zone
cloudflare_list account
cloudflare_list_item account cloudflare_list_item=2a4b8b2017aa4b3cb9e1151b52c81d22
cloudflare_load_balancer zone
cloudflare_load_balancer_monitor account
cloudflare_load_balancer_pool account
cloudflare_logpush_job account or zone
cloudflare_managed_transforms zone
cloudflare_mtls_certificate account
cloudflare_notification_policy account
cloudflare_notification_policy_webhooks account
cloudflare_origin_ca_certificate zone
cloudflare_page_rule zone
cloudflare_page_shield_policy zone
cloudflare_pages_domain account cloudflare_pages_domain=ykfjmcgpfs
cloudflare_pages_project account
cloudflare_queue account
cloudflare_r2_bucket account
cloudflare_r2_custom_domain account cloudflare_r2_custom_domain=jb-test-bucket,bnfywlzwpt
cloudflare_r2_managed_domain account cloudflare_r2_managed_domain=jb-test-bucket,bnfywlzwpt
cloudflare_rate_limit zone
cloudflare_regional_hostname zone
cloudflare_regional_tiered_cache zone
cloudflare_ruleset account or zone
cloudflare_spectrum_application zone
cloudflare_tiered_cache zone
cloudflare_total_tls zone
cloudflare_turnstile_widget account
cloudflare_url_normalization_settings zone
cloudflare_waiting_room zone
cloudflare_waiting_room_event zone cloudflare_waiting_room_event=e7f9e4c190ea8d6c66cab32ac110f39a
cloudflare_waiting_room_rules zone cloudflare_waiting_room_rules=8bbd1b13450f6c63ab6ab4e08a63762d
cloudflare_waiting_room_settings zone
cloudflare_web3_hostname zone
cloudflare_web_analytics_rule account cloudflare_web_analytics_rule=2fa89d8f-35f7-49ef-87d3-f24e866a5d5e
cloudflare_web_analytics_site account
cloudflare_workers_custom_domain account
cloudflare_workers_for_platforms_dispatch_namespace account
cloudflare_workers_kv_namespace account
cloudflare_zero_trust_access_application account or zone

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *