Cloudflare
Use with Cloudflare
Section titled “Use with Cloudflare”Example using a Cloudflare API Key and corresponding email:
export CLOUDFLARE_API_KEY=[CLOUDFLARE_API_KEY]export CLOUDFLARE_EMAIL=[CLOUDFLARE_EMAIL]export CLOUDFLARE_ACCOUNT_ID=[CLOUDFLARE_ACCOUNT_ID]./terraformer import cloudflare --resources=dns,firewall,ruleset,access,storage,settingsor using a Cloudflare API Token:
export CLOUDFLARE_API_TOKEN=[CLOUDFLARE_API_TOKEN]export CLOUDFLARE_ACCOUNT_ID=[CLOUDFLARE_ACCOUNT_ID]./terraformer import cloudflare --resources=dns,firewall,ruleset,access,storage,settingsList of supported Cloudflare services:
-
accesscloudflare_zero_trust_access_applicationcloudflare_zero_trust_access_custom_pagecloudflare_zero_trust_access_groupcloudflare_zero_trust_access_identity_providercloudflare_zero_trust_access_infrastructure_targetcloudflare_zero_trust_access_mtls_certificatecloudflare_zero_trust_access_policycloudflare_zero_trust_access_service_tokencloudflare_zero_trust_access_short_lived_certificatecloudflare_zero_trust_access_tag
-
account_membercloudflare_account_member
-
certificatescloudflare_certificate_authorities_hostname_associationscloudflare_certificate_packcloudflare_client_certificatecloudflare_custom_hostnamecloudflare_custom_origin_trust_storecloudflare_mtls_certificatecloudflare_origin_ca_certificate
-
connectivitycloudflare_connectivity_directory_service
-
dnscloudflare_dns_recordcloudflare_zone
-
email_routingcloudflare_email_routing_addresscloudflare_email_routing_catch_allcloudflare_email_routing_dnscloudflare_email_routing_rulecloudflare_email_routing_settings
Avoid importing
email_routingwithdnswhen you intend to manage Email Routing DNS records throughcloudflare_email_routing_dns. -
firewallcloudflare_access_rulecloudflare_filtercloudflare_firewall_rulecloudflare_rate_limitcloudflare_zone_lockdown
-
listscloudflare_list
-
load_balancingcloudflare_healthcheckcloudflare_load_balancercloudflare_load_balancer_monitorcloudflare_load_balancer_pool
-
logpushcloudflare_logpush_job
-
magic_wancloudflare_magic_wan_gre_tunnelcloudflare_magic_wan_ipsec_tunnelcloudflare_magic_wan_static_route
-
media_platformcloudflare_image_variantcloudflare_pipelinecloudflare_pipeline_stream
media_platformrequiresCLOUDFLARE_ACCOUNT_ID. Pipeline streams with schema field types outside the Terraform provider’s scalar/json validator are skipped. -
network_edgecloudflare_address_mapcloudflare_magic_network_monitoring_rulecloudflare_magic_transit_sitecloudflare_magic_transit_site_aclcloudflare_magic_transit_site_lancloudflare_magic_transit_site_wancloudflare_regional_hostnamecloudflare_spectrum_applicationcloudflare_web3_hostname
-
notificationscloudflare_notification_policycloudflare_notification_policy_webhooks
-
page_rulecloudflare_page_rule
-
pagescloudflare_pages_domaincloudflare_pages_project
-
rulesetcloudflare_ruleset
-
securitycloudflare_api_shieldcloudflare_api_shield_operationcloudflare_cloud_connector_rulescloudflare_custom_page_assetcloudflare_custom_pagescloudflare_email_security_block_sendercloudflare_email_security_impersonation_registrycloudflare_leaked_credential_check_rulecloudflare_page_shield_policycloudflare_schema_validation_schemascloudflare_token_validation_configcloudflare_token_validation_rulescloudflare_user_agent_blocking_rulecloudflare_vulnerability_scanner_credential_setcloudflare_vulnerability_scanner_target_environment
securityrequiresCLOUDFLARE_ACCOUNT_IDfor account-scoped Email Security and custom page resources. Default Cloudflare custom pages are skipped; only customized pages are imported. -
settingscloudflare_account_dns_settings_internal_viewcloudflare_argo_smart_routingcloudflare_argo_tiered_cachingcloudflare_authenticated_origin_pulls_settingscloudflare_custom_hostname_fallback_origincloudflare_dns_firewallcloudflare_dns_zone_transfers_aclcloudflare_dns_zone_transfers_incomingcloudflare_dns_zone_transfers_outgoingcloudflare_dns_zone_transfers_peercloudflare_leaked_credential_checkcloudflare_logpull_retentioncloudflare_managed_transformscloudflare_regional_tiered_cachecloudflare_tiered_cachecloudflare_total_tlscloudflare_universal_ssl_settingcloudflare_url_normalization_settingscloudflare_waiting_room_settingscloudflare_zone_cache_reservecloudflare_zone_cache_variantscloudflare_zone_dnsseccloudflare_zone_holdcloudflare_zone_setting
Account-scoped settings and DNS transfer resources require
CLOUDFLARE_ACCOUNT_ID. Zone singleton settings are imported only when Terraformer can see durable, explicit user-owned configuration. Cloudflare defaults are skipped so generated Terraform does not claim ownership of unset account or zone settings. Generic zone settings use a conservative allowlist and require Cloudflare modification metadata before import. -
storagecloudflare_d1_databasecloudflare_queuecloudflare_queue_consumercloudflare_r2_bucketcloudflare_r2_bucket_corscloudflare_r2_bucket_event_notificationcloudflare_r2_bucket_lifecyclecloudflare_r2_bucket_lockcloudflare_r2_custom_domaincloudflare_r2_data_catalogcloudflare_workers_kv_namespace
-
turnstilecloudflare_turnstile_widget
-
tunnelcloudflare_zero_trust_tunnel_cloudflaredcloudflare_zero_trust_tunnel_cloudflared_routecloudflare_zero_trust_tunnel_cloudflared_virtual_network
-
waiting_roomcloudflare_waiting_roomcloudflare_waiting_room_eventcloudflare_waiting_room_rules
-
web_analyticscloudflare_web_analytics_site
-
workerscloudflare_workercloudflare_workers_cron_triggercloudflare_workers_custom_domaincloudflare_workers_for_platforms_dispatch_namespacecloudflare_workers_route
-
zero_trust_device_dlpcloudflare_zero_trust_dex_rulecloudflare_zero_trust_dex_testcloudflare_zero_trust_device_custom_profilecloudflare_zero_trust_device_custom_profile_local_domain_fallbackcloudflare_zero_trust_device_default_profilecloudflare_zero_trust_device_default_profile_local_domain_fallbackcloudflare_zero_trust_device_ip_profilecloudflare_zero_trust_device_managed_networkscloudflare_zero_trust_dlp_custom_entrycloudflare_zero_trust_dlp_custom_profilecloudflare_zero_trust_dlp_settings
DLP custom profiles with profile-owned
entries,shared_entries, or activecontext_awarenessare skipped because the Cloudflare provider marks those fields as no-refresh state. -
zero_trust_gatewaycloudflare_zero_trust_dns_locationcloudflare_zero_trust_gateway_certificatecloudflare_zero_trust_gateway_loggingcloudflare_zero_trust_gateway_pacfilecloudflare_zero_trust_gateway_policycloudflare_zero_trust_gateway_proxy_endpointcloudflare_zero_trust_gateway_settingscloudflare_zero_trust_listcloudflare_zero_trust_network_hostname_route
Unsupported and deferred Cloudflare import decisions are tracked in unsupported_resources.json.