
Установите и забудьте: резервную копию ресурсов CloudFlare с помощью CF-TerraForming
11 июля 2025 г.В этом руководстве я покажу, как я использовалcf-terraforming
импортировать ресурсы CloudFlare в код Terraform.
Важное примечание:В текущей итерации я использую Terraform в основном в качестве механизма резервного хранения для ресурсов CloudFlare. Управление и модификации будут по -прежнему выполняться вручную через приборную панель CloudFlare, так как этот подход, как правило, быстрее и эффективнее.
Настройка доступа к Cloudflare
Прежде чем использовать Terraform с CloudFlare, пользователи должны настроить соответствующие переменные среды.
Использование ключа API
Если подлинность через ключ API, экспортируйте следующие переменные среды:
export CLOUDFLARE_API_KEY=<EXAMPLE_KEY>
export CLOUDFLARE_EMAIL=<EXAMPLE_EMAIL>
Использование токена API
В качестве альтернативы, аутентификация может быть сделана с помощью токена API, экспортируя только эту переменную:
export CLOUDFLARE_API_TOKEN=<EXAMPLE_TOKEN>
Аутентификация токена API CloudFlare является гибкой, но требует сложной конфигурации. Чтобы упростить процесс, мы рекомендуем использовать ключ API, связанный с учетной записью пользователя. Тем не менее, используйте его с осторожностью, так как ключ API дает полный доступ ко всем действиям CloudFlare.
Чтобы найти глобальный ключ API или создать токен API, посетитеCloudFlare API токеныПолем
С использованиемcf-terraforming
Cloudflare предоставляет официальный инструмент,cf-terraforming, который может генерировать конфигурацию Terraform и состояние из существующих ресурсов. Это рекомендуемый подход для автоматизации процесса импорта.
- Протестировано на
cf-terraforming
версия0.23.3
Полем - Не все ресурсы поддерживаются
cf-terraforming
Полем Найдите список поддерживаемых ресурсовздесьПолем - Имейте в виду, что после обновления поставщика Trustflare Terraform до версии 5.X.x или выше, определения ресурсов могут измениться.
Пошаговое руководство: импорт с помощью CF-TerraFormingcf-terraforming
1. Инициализируйте поставщика терраформ:
Чтобы использовать этот инструмент, инициализируйте поставщика. Создать временный файл, например,,providers.tf
, со следующей конфигурацией:
terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "4.43.0"
}
}
}
provider "cloudflare" {}
Затем инициализируйте Terraform:
terraform init
2. Установитеcf-terraforming
:
brew install cloudflare/cloudflare/cf-terraforming
Или скачать релиз изРепозиторий GitHubПолем
3. Сгенерируйте конфигурацию ресурса Terraform (например, для записи DNS):
cf-terraforming generate --resource-type cloudflare_record --zone <ZONE_ID> > generate.tf
Пример вывода:
resource "cloudflare_record" "terraform_managed_resource_<RESOURCE_ID>" {
content = "EXAMPLE_CONTENT"
name = "EXAMPLE_NAME"
proxied = false
ttl = 1
type = "TXT"
zone_id = "<ZONE_ID>"
}
4. Сгенерировать конфигурацию импорта Terraform:
cf-terraforming import --resource-type cloudflare_record --zone <ZONE_ID> --modern-import-block > import.tf
Пример вывода:
import {
to = cloudflare_record.terraform_managed_resource_<RESOURCE_ID>
id = "<ZONE_ID>/<RESOURCE_ID>"
}
5 Применить конфигурацию Terraform:
terraform apply
Ключевые соображения
Важный аспект использованияcf-terraforming
различает ресурсы на уровне счетов и уровня зоны. Перед использованиемcf-terraforming
, см.Поддерживаемая документация ресурсовЧтобы понять объем ресурсов.
Чтобы упростить процесс импорта, автоматизироватьcf-terraforming
Используя цикл для обработки несколькихZONE_ID
значения одновременно.
Важные примечания
- В этом контексте использования Terraform основной целью является резервное хранилище, а не прямое управление ресурсами.
- Если у вас большое количество ресурсов, сгенерированный код может стать обширным, что затрудняет навигацию и техническое обслуживание.
- Чтобы сохранить управляемое государство Terraform, рассмотрите возможность структурирования ресурсов в логические модули вместо создания одного монолитного состояния.
- Мы рекомендуем не изменять автоматически сгенерированный код. Вместо этого внесите изменения в приборную панель CloudFlare и повторно импортируйте ресурсы по мере необходимости.
Следуя этому подходу, вы можете эффективно подтвердить ресурсы CloudFlare, сохраняя при этом четкое и управляемое состояние Terraform.
Оригинал