Adding Cloudflare resources.
This commit is contained in:
@@ -1,73 +1,181 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to generate Terraform resources using cf-terraforming for OpenTofu
|
||||
cf_generate () {
|
||||
resources=(
|
||||
cloudflare_account
|
||||
cloudflare_account_member
|
||||
cloudflare_account_subscription
|
||||
cloudflare_address_map
|
||||
cloudflare_api_shield_discovery_operation
|
||||
cloudflare_api_shield_operation
|
||||
cloudflare_api_shield_operation_schema_validation_settings
|
||||
cloudflare_api_shield_schema
|
||||
cloudflare_api_shield_schema_validation_settings
|
||||
cloudflare_argo_smart_routing
|
||||
cloudflare_argo_tiered_caching
|
||||
cloudflare_authenticated_origin_pulls
|
||||
cloudflare_authenticated_origin_pulls_certificate
|
||||
cloudflare_bot_management
|
||||
cloudflare_calls_sfu_app
|
||||
cloudflare_calls_turn_app
|
||||
cloudflare_certificate_pack
|
||||
cloudflare_content_scanning_expression
|
||||
cloudflare_custom_hostname
|
||||
cloudflare_custom_hostname_fallback_origin
|
||||
cloudflare_d1_database
|
||||
cloudflare_dns_firewall
|
||||
cloudflare_dns_record
|
||||
cloudflare_dns_zone_transfers_acl
|
||||
cloudflare_dns_zone_transfers_incoming
|
||||
cloudflare_dns_zone_transfers_outgoing
|
||||
cloudflare_dns_zone_transfers_peer
|
||||
cloudflare_dns_zone_transfers_tsig
|
||||
cloudflare_email_routing_address
|
||||
cloudflare_email_routing_catch_all
|
||||
cloudflare_email_routing_dns
|
||||
cloudflare_email_routing_rule
|
||||
cloudflare_email_routing_settings
|
||||
cloudflare_email_security_block_sender
|
||||
cloudflare_email_security_impersonation_registry
|
||||
cloudflare_email_security_trusted_domains
|
||||
cloudflare_filter
|
||||
cloudflare_healthcheck
|
||||
cloudflare_hostname_tls_setting
|
||||
cloudflare_keyless_certificate
|
||||
cloudflare_leaked_credential_check
|
||||
cloudflare_leaked_credential_check_rule
|
||||
cloudflare_list
|
||||
cloudflare_list_item
|
||||
cloudflare_load_balancer
|
||||
cloudflare_load_balancer_monitor
|
||||
cloudflare_load_balancer_pool
|
||||
cloudflare_logpull_retention
|
||||
cloudflare_logpush_job
|
||||
cloudflare_magic_wan_static_route
|
||||
cloudflare_managed_transforms
|
||||
cloudflare_mtls_certificate
|
||||
cloudflare_notification_policy
|
||||
cloudflare_notification_policy_webhooks
|
||||
cloudflare_observatory_scheduled_test
|
||||
cloudflare_origin_ca_certificate
|
||||
cloudflare_page_rule
|
||||
cloudflare_page_shield_policy
|
||||
cloudflare_pages_domain
|
||||
cloudflare_pages_project
|
||||
cloudflare_queue
|
||||
cloudflare_queue_consumer
|
||||
cloudflare_r2_bucket
|
||||
cloudflare_r2_custom_domain
|
||||
cloudflare_r2_managed_domain
|
||||
cloudflare_rate_limit
|
||||
cloudflare_regional_hostname
|
||||
cloudflare_regional_tiered_cache
|
||||
cloudflare_registrar_domain
|
||||
cloudflare_ruleset
|
||||
cloudflare_snippet_rules
|
||||
cloudflare_snippets
|
||||
cloudflare_spectrum_application
|
||||
cloudflare_stream
|
||||
cloudflare_stream_key
|
||||
cloudflare_stream_live_input
|
||||
cloudflare_stream_watermark
|
||||
cloudflare_stream_webhook
|
||||
cloudflare_tiered_cache
|
||||
cloudflare_total_tls
|
||||
cloudflare_turnstile_widget
|
||||
cloudflare_url_normalization_settings
|
||||
cloudflare_user
|
||||
cloudflare_waiting_room
|
||||
cloudflare_waiting_room_event
|
||||
cloudflare_waiting_room_rules
|
||||
cloudflare_waiting_room_settings
|
||||
cloudflare_web3_hostname
|
||||
cloudflare_web_analytics_rule
|
||||
cloudflare_web_analytics_site
|
||||
cloudflare_workers_cron_trigger
|
||||
cloudflare_workers_custom_domain
|
||||
cloudflare_workers_deployment
|
||||
cloudflare_workers_for_platforms_dispatch_namespace
|
||||
cloudflare_workers_kv_namespace
|
||||
cloudflare_workers_script_subdomain
|
||||
cloudflare_zero_trust_access_application
|
||||
cloudflare_zero_trust_access_custom_page
|
||||
cloudflare_zero_trust_access_group
|
||||
cloudflare_zero_trust_access_identity_provider
|
||||
cloudflare_zero_trust_access_infrastructure_target
|
||||
cloudflare_zero_trust_access_key_configuration
|
||||
cloudflare_zero_trust_access_mtls_certificate
|
||||
cloudflare_zero_trust_access_mtls_hostname_settings
|
||||
cloudflare_zero_trust_access_policy
|
||||
cloudflare_zero_trust_access_service_token
|
||||
cloudflare_zero_trust_access_short_lived_certificate
|
||||
cloudflare_zero_trust_access_tag
|
||||
cloudflare_zero_trust_device_custom_profile
|
||||
cloudflare_zero_trust_device_default_profile
|
||||
cloudflare_zero_trust_device_default_profile_certificates
|
||||
cloudflare_zero_trust_device_default_profile_local_domain_fallback
|
||||
cloudflare_zero_trust_device_managed_networks
|
||||
cloudflare_zero_trust_device_posture_integration
|
||||
cloudflare_zero_trust_device_posture_rule
|
||||
cloudflare_zero_trust_dex_test
|
||||
cloudflare_zero_trust_dlp_custom_profile
|
||||
cloudflare_zero_trust_dlp_dataset
|
||||
cloudflare_zero_trust_dlp_predefined_profile
|
||||
cloudflare_zero_trust_dns_location
|
||||
cloudflare_zero_trust_gateway_certificate
|
||||
cloudflare_zero_trust_gateway_policy
|
||||
cloudflare_zero_trust_gateway_proxy_endpoint
|
||||
cloudflare_zero_trust_gateway_settings
|
||||
cloudflare_zero_trust_list
|
||||
cloudflare_zero_trust_organization
|
||||
cloudflare_zero_trust_risk_behavior
|
||||
cloudflare_zero_trust_risk_scoring_integration
|
||||
cloudflare_zero_trust_tunnel_cloudflared
|
||||
cloudflare_zero_trust_tunnel_cloudflared_config
|
||||
cloudflare_zero_trust_tunnel_cloudflared_route
|
||||
cloudflare_zero_trust_tunnel_cloudflared_virtual_network
|
||||
cloudflare_zone
|
||||
cloudflare_zone_cache_reserve
|
||||
cloudflare_zone_cache_variants
|
||||
cloudflare_zone_dnssec
|
||||
cloudflare_zone_lockdown
|
||||
cloudflare_zone_setting
|
||||
)
|
||||
|
||||
resources=(
|
||||
cloudflare_access_application
|
||||
cloudflare_access_group
|
||||
cloudflare_access_identity_provider
|
||||
cloudflare_access_mutual_tls_certificate
|
||||
cloudflare_access_policy
|
||||
cloudflare_access_rule
|
||||
cloudflare_access_service_token
|
||||
cloudflare_account_member
|
||||
cloudflare_api_shield
|
||||
cloudflare_api_token
|
||||
cloudflare_argo
|
||||
cloudflare_authenticated_origin_pulls
|
||||
cloudflare_authenticated_origin_pulls_certificate
|
||||
cloudflare_bot_management
|
||||
cloudflare_byo_ip_prefix
|
||||
cloudflare_certificate_pack
|
||||
cloudflare_custom_hostname
|
||||
cloudflare_custom_hostname_fallback_origin
|
||||
cloudflare_custom_pages
|
||||
cloudflare_custom_ssl
|
||||
cloudflare_filter
|
||||
cloudflare_firewall_rule
|
||||
cloudflare_healthcheck
|
||||
cloudflare_ip_list
|
||||
cloudflare_list
|
||||
cloudflare_load_balancer
|
||||
cloudflare_load_balancer_monitor
|
||||
cloudflare_load_balancer_pool
|
||||
cloudflare_logpull_retention
|
||||
cloudflare_logpush_job
|
||||
cloudflare_logpush_ownership_challenge
|
||||
cloudflare_magic_firewall_ruleset
|
||||
cloudflare_origin_ca_certificate
|
||||
cloudflare_page_rule
|
||||
cloudflare_rate_limit
|
||||
cloudflare_record
|
||||
cloudflare_ruleset
|
||||
cloudflare_spectrum_application
|
||||
cloudflare_tiered_cache
|
||||
cloudflare_teams_list
|
||||
cloudflare_teams_location
|
||||
cloudflare_teams_proxy_endpoint
|
||||
cloudflare_teams_rule
|
||||
cloudflare_tunnel
|
||||
cloudflare_turnstile_widget
|
||||
cloudflare_url_normalization_settings
|
||||
cloudflare_waf_group
|
||||
cloudflare_waf_override
|
||||
cloudflare_waf_package
|
||||
cloudflare_waf_rule
|
||||
cloudflare_waiting_room
|
||||
cloudflare_worker_cron_trigger
|
||||
cloudflare_worker_route
|
||||
cloudflare_worker_script
|
||||
cloudflare_workers_kv
|
||||
cloudflare_workers_kv_namespace
|
||||
cloudflare_zone
|
||||
cloudflare_zone_dnssec
|
||||
cloudflare_zone_lockdown
|
||||
cloudflare_zone_settings_override
|
||||
)
|
||||
for resource in "${resources[@]}"; do
|
||||
echo "Generating ${resource}.tf..."
|
||||
cf-terraforming generate --config .cf-terraforming.yaml --resource-type ${resource} > ${resource}.tf
|
||||
done
|
||||
|
||||
for resource in "${resources[@]}"; do
|
||||
echo "Generating ${resource}.tf..."
|
||||
cf-terraforming generate --provider-registry-hostname registry.opentofu.org --resource-type $resource > "${resource}.tf_v5"
|
||||
done
|
||||
echo "🧹 Cleaning up empty files..."
|
||||
find . -size 0 -name "*.tf" | xargs rm
|
||||
echo "✅ All Terraform files generated!"
|
||||
}
|
||||
|
||||
echo "✅ All Terraform files generated!"
|
||||
cf_import () {
|
||||
for cfresource in $(find . -type f -name "cloudflare_*.tf"); do
|
||||
echo "Importing ${cfresource}..."
|
||||
cf-terraforming import --modern-import-block --config .cf-terraforming.yaml --resource-type ${cfresource}
|
||||
done
|
||||
|
||||
echo "✅ All Cloudflare resources import."
|
||||
}
|
||||
|
||||
# Prompt user for input
|
||||
echo "Choose an option:"
|
||||
echo "1) Generate Cloudflare Terraform resources"
|
||||
echo "2) Import Cloudflare Terraform resources"
|
||||
read -rp "Enter 1 or 2: " user_choice
|
||||
|
||||
case "$user_choice" in
|
||||
1)
|
||||
cf_generate
|
||||
;;
|
||||
2)
|
||||
cf_import
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option. Please enter 1 or 2."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user