Установите и забудьте: резервную копию ресурсов CloudFlare с помощью CF-TerraForming

Установите и забудьте: резервную копию ресурсов 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.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE