Рубрики
Uncategorized

Террафор — настройка домена DNS с CloudFlare

Мне нужно проверить мое доменное имя с Google, чтобы подтвердить, что у меня есть. Для этого мне нужно создать т … Помечено CloudFlare, Terraform, DevOps.

Мне нужно проверить мое доменное имя с Google, чтобы подтвердить, что у меня есть. Для этого мне нужно создать запись TXT в DNS, который в настоящее время размещен в CloudFlare. Некоторое время я хотел на некоторое время забрать свой CloudFlare DNS на террафом, поэтому в этой статье мы собираемся импортировать мои существующие настройки DNS в файл штата Terraform, а затем добавить новую запись TXT для проверки с Google.

Если вам нужно установить Terraform, проверьте мою статью на Начало работы с террафом Отказ

  1. Установка нашего нового файла Terraform
  2. Получите нашу клавишу CloudFlare API
  3. (Необязательно) Импортируйте нашу уже существующую конфигурацию DNS из CloudFlare
  4. Создайте наши DNS-ресурсы в нашем файле Terraform
  5. Запустите нашу конфигурацию DNS Terraporm DNS

Создайте наш новый файл Terraform в новом каталоге проекта

mkdir cloudflare-terraform
cd cloudflare-terraform
touch main.tf

Добавьте поставщик CloudFlare на наш файл Terraform

provider "cloudflare" {
  version = "~> 2.0"
  email = "you@example.com"
  api_key = "your-api-key"
}

Run Terraporm Init.

Запустите Terraporm init, чтобы настроить папку и загрузить поставщики, объявленные в нашем файле Terraform Main.tf.

terraform init

Мы видим, что террафом вытащил версию 2.3 поставщика CloudFlare.

  1. Войдите в CloudFlare с вашими учетными данными
  2. Нажмите на мой профиль в правом верхнем углу
  3. Нажмите на 3-й вкладку «Токены API»
  4. Нажмите на вид рядом с Global API-ключ
  5. Введите свой пароль еще раз, чтобы подтвердить, что это вы
  6. Скопируйте ключ API и сохраните его где-то супер безопасным. Не отдавайте это никому, кого вы не хотите получить доступ и изменить ваши DNS.
  7. Добавьте сгенерированный токен в ваш файл Main.tf.

1. Добавьте зону на наш файл террафора

Давайте запросим API CloudFlare, чтобы получить идентификатор зоны домена, который мы хотим импортировать записи DNS. Запрос https://api.cloudflare.com/client/v4/zones/ Это выпустит все зоны информации.

curl -X GET "https://api.cloudflare.com/client/v4/zones/" -H "X-Auth-Key:YOUR_API_KEY" -H "X-Auth-Email:you@example.com" -H "Content-Type:application/json" | jq .

Найдите домен (зона), который вы хотите импортировать и скопировать значение идентификатора, это то, что мы будем использовать для импорта в файл состояния.

2. Создайте запись зоны в нашем файле Terraform

Создайте новый ресурс с типом CloudFlare_Zone И назовите его что-то подходящее.

Мой выглядит так:

resource "cloudflare_zone" "owendavies-net" {
 zone= "owendavies.net"
}

3. Импортируйте зону в файл штата Terraform, чтобы он знал об этом.

Запустите следующую команду, замена ZONE_ID с идентификатором, который вы скопировали на первом шаге.

terraform import cloudflare_zone.owendavies-net ZONE_ID

4. Проверьте файл террафора правильный

Теперь давайте запустим План террафора И посмотрите на выход, если он жалуется и говорит, что он собирается внести изменения, это означает, что CloudFlare_Zone Ресурс, созданный в вашем файле Terraform, отличается от того, что Terraporm импортируется в состояние государства, он расскажет вам, какие изменения существуют, измените ресурс, пока он не говорит, что нет никаких изменений, чтобы сделать, когда вы запускаете План террафора .

terraform plan

5. Получить DNS Records из CloudFlare API

Запустите следующую команду curl, заменяя your_zone_id и your_api_key и адрес электронной почты.

curl -X GET "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/dns_records" -H "X-Auth-Key:YOUR_API_KEY" -H "X-Auth-Email:you@example.com" -H "Content-Type:application/json" | jq . | tee importedcloudflare.json

Это будет запрашивать API CloudFlare и вернуть все записи DNS для указанного вами ZONE_ID, он отформатирует его в JSON и сохраняет его на importedCloudflare.json.

6. Создайте ресурс террафора, чтобы соответствовать вышеуказанному выходу

Откройте importedCloudflare.json Файл и создайте новый ресурс CloudFlare_record, сопоставив значения в importedCloudflare.json файл.

Когда вы создали ресурс, найдите значение идентификатора в importedCloudflare.json файл.

7. Импортировать ресурс

Запустите следующую команду (замена ZONE_ID & DNS_RECORD_ID с вашими идентификаторами), чтобы импортировать ресурс в файл штата Terraform.

terraform import cloudflare_record.www-owendavies-net ZONE_ID/DNS_RECORD_ID

8. Тест, чтобы увидеть, соответствует ли файлу состояния

Беги План террафора Что покажет вам, какие изменения будут запущены (различия между файлом вашего состояния и файлом Main.tf).

Убедитесь, что он говорит, что есть «без изменений», если есть какие-либо изменения, которые он делает, вернитесь и отредактируйте свой ресурс в своем файле Main.tf и попробуйте снова.

terraform plan

Мой последний файл террафора:

В моем случае у меня есть 2 записи CNAME, а также сама зона облака (домен).

provider "cloudflare" {
  version = "~> 2.0"
  email = "you@example.com"
  api_key = "your-api-key"
}

resource "cloudflare_zone" "owendavies-net" {
 zone= "owendavies.net"
}

resource "cloudflare_record" "owendavies-net" {
  zone_id = "ZONE_ID"
  name = "owendavies.net"
  value = "owen-davies.github.io"
  type = "CNAME"
  proxied = true
  ttl = 1
}

resource "cloudflare_record" "www-owendavies-net" {
  zone_id = "ZONE_ID"
  name = "www"
  value = "owen-davies.github.io"
  type = "CNAME"
  proxied = true
  ttl = 1
}

Теперь, когда я бегу План террафора Он говорит, что нет никаких изменений, которые необходимо применять

Добавить ресурс зоны облака

Если вы уже не сделали это во время (необязательно) импорта, вам понадобится CloudFlare_Zone ресурс.

resource "cloudflare_zone" "example" {
  zone = "example.com"
}

Добавьте запись в домен

В моем случае я добавляю новую запись TXT к домену, что Google хочет увидеть, чтобы проверить мою владение доменом:

resource "cloudflare_record" "txt-owendavies-net" {
  zone_id = "ZONE_ID"
  name = "owendavies.net"
  value = "google-site-verification=JZMrzi_LveMVIyP8g5ZICIcPVYg39UPvyOjbLmRLuWU"
  type = "TXT"
  proxied = false 
  ttl = 1

Проверьте план

Беги План террафора чтобы увидеть изменения, которые произойдут

terraform plan

Проверьте выход из вышеперечисленного План террафора И убедитесь, что все, что собирается сделать Terraporm, это добавить новую DNS-запись, не следует меняться ничего другого, если вы правильно добавили ресурсы.

Внести изменения

Теперь наступает время Toe Run Террафом применяется и внести изменения в CloudFlare.

terraform apply

Надеюсь, если все прошло хорошо, у вас сейчас есть ваш домен в Terraform, а новая запись в DNS. Теперь вы можете совершить эти изменения в контроль источника, а в будущем может управлять всеми изменениями инфраструктурой в качестве кода (IAC).

Оригинал: «https://dev.to/owendavies/terraform-setting-up-domain-dns-with-cloudflare-bji»