INTEGRITY Документация

2. Отслеживание истории

В Initialize Terraform руководстве вы создали и применили базовую конфигурацию Cloudflare. Теперь вы сохраните эту конфигурацию в системе контроля версий, чтобы отслеживать изменения, проводить их проверку и при необходимости откатывать.

1. Используйте переменные окружения для аутентификации

Удалите учётные данные из файлов Terraform перед коммитом в систему контроля версий. Провайдер Cloudflare v5 автоматически считывает данные аутентификации из переменных окружения. Обновите main.tf файл, чтобы удалить жёстко заданный API-токен:

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

provider "cloudflare" {
  # API token will be read from CLOUDFLARE_API_TOKEN environment variable
}

variable "zone_id" {
  description = "Cloudflare Zone ID"
  type        = string
  sensitive   = true
}

variable "account_id" {
  description = "Cloudflare Account ID"
  type        = string
  sensitive   = true
}

variable "domain" {
  description = "Domain name"
  type        = string
  default     = "example.com"
}

resource "cloudflare_dns_record" "www" {
  zone_id = var.zone_id
  name    = "www"
  content = "203.0.113.10"
  type    = "A"
  ttl     = 1
  proxied = true
  comment = "Domain verification record"
}

Обновите ваш terraform.tfvars файле:

zone_id    = "your-zone-id-here"
account_id = "your-account-id-here"
domain     = "your-domain.com"

Убедитесь, что ваш API-токен задан в качестве переменной среды:

export CLOUDFLARE_API_TOKEN="your-api-token-here"

Убедитесь, что аутентификация работает:

terraform plan

Terraform может обнаружить изменения при сравнении новой конфигурации на основе переменных с существующими ресурсами. Это нормально при переходе от жёстко заданных значений к переменным:

# cloudflare_dns_record.www will be updated in-place
~ resource "cloudflare_dns_record" "www" {
    ~ name     = "www.your-domain.com" -> "www"
    ~ zone_id  = (sensitive value)
    # (other attributes may show changes)
}

Plan: 0 to add, 1 to change, 0 to destroy.

2. Сохраните конфигурацию в GitHub

Создайте .gitignore файл со следующим содержимым:

.terraform/
*.tfstate*
.terraform.lock.hcl
terraform.tfvars

Инициализируйте Git и зафиксируйте конфигурацию:

git init
git add main.tf .gitignore
git commit -m "Step 2 - Initial Terraform v5 configuration"

Создайте репозиторий GitHub (через веб-интерфейс или GitHub CLI) и выполните push:

git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/cf-config.git
git push -u origin main

Теперь конфигурация Terraform находится под контролем версий и готова для совместной работы команды. Конфиденциальные данные (API-токены, идентификаторы зон) хранятся отдельно от кода и остаются в безопасности.