🚀 Terraform Setup for Cloudflare DNS Management

Этот проект предоставляет Terraform-конфигурации для управления DNS-записями в Cloudflare. Он позволяет создавать различные записи DNS, включая A, CNAME, MX и TXT, используя API Cloudflare.

🔗 Репозиторий: GitHub

📌 Обзор

Конфигурация Terraform позволяет автоматизировать управление записями DNS в Cloudflare, включая:

1️⃣ A Records: Указывает домен или поддомен на IP-адрес.
2️⃣ CNAME Records: Создаёт алиасы для доменов.
3️⃣ MX Records: Настраивает почтовые серверы для домена.
4️⃣ TXT Records: Хранит текстовые данные, такие как SPF-записи для электронной почты.


🛠 Требования

Перед началом работы убедитесь, что у вас есть:

✔️ Аккаунт Cloudflare.
✔️ API-токен с разрешением на управление DNS-записями.
✔️ ID аккаунта и зоны Cloudflare для вашего домена.
✔️ Terraform установлен (рекомендуемая версия: 1.3+).


🔧 Переменные

Terraform использует следующие переменные:

variable "cf_account_id" {
  description = "Cloudflare account ID"
  type        = string
}

variable "cf_api_token" {
  description = "Cloudflare API token"
  type        = string
}

variable "cloudflare_zone_id" {
  description = "Cloudflare zone ID для домена"
  type        = string
}

variable "domain" {
  description = "Доменное имя"
  type        = string
  default     = "example.com"
}

⚙️ Конфигурация Terraform

📦 Providers

Terraform требует Cloudflare-провайдер для работы с API:

terraform {
  required_providers {
    cloudflare = {
      source  = "cloudflare/cloudflare"
      version = "~> 4.0"
    }
  }
}

provider "cloudflare" {
  api_token = var.cf_api_token
}

📌 Пример ресурсов

Создание A-записи

resource "cloudflare_record" "test" {
  name    = "test"
  type    = "A"
  value   = "IP-ADDRESS"
  ttl     = 1
  proxied = false
  zone_id = var.cloudflare_zone_id
}

🚀 Использование

🔹 1. Экспорт переменных окружения

export TF_VAR_cf_account_id="your_account_id"
export TF_VAR_cf_api_token="your_api_token"
export TF_VAR_cloudflare_zone_id="your_zone_id"

🔹 2. Инициализация Terraform

Запустите следующую команду для загрузки необходимых провайдеров:

terraform init

🔹 3. Планирование изменений

Чтобы увидеть, какие изменения будут применены:

terraform plan

🔹 4. Применение конфигурации

Запустите следующую команду для создания записей DNS:

terraform apply

🔹 5. Удаление ресурсов (при необходимости)

Чтобы удалить все записи DNS, управляемые Terraform:

terraform destroy

🎯 Заключение

Эта Terraform-конфигурация значительно упрощает управление DNS-записями в Cloudflare, обеспечивая консистентность и автоматизацию настроек.

Вы можете легко настроить переменные и ресурсы в соответствии с вашими потребностями.🚀