Мне нужно проверить мое доменное имя с Google, чтобы подтвердить, что у меня есть. Для этого мне нужно создать запись TXT в DNS, который в настоящее время размещен в CloudFlare. Некоторое время я хотел на некоторое время забрать свой CloudFlare DNS на террафом, поэтому в этой статье мы собираемся импортировать мои существующие настройки DNS в файл штата Terraform, а затем добавить новую запись TXT для проверки с Google.
Если вам нужно установить Terraform, проверьте мою статью на Начало работы с террафом Отказ
- Установка нашего нового файла Terraform
- Получите нашу клавишу CloudFlare API
- (Необязательно) Импортируйте нашу уже существующую конфигурацию DNS из CloudFlare
- Создайте наши DNS-ресурсы в нашем файле Terraform
- Запустите нашу конфигурацию 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.
- Войдите в CloudFlare с вашими учетными данными
- Нажмите на мой профиль в правом верхнем углу
- Нажмите на 3-й вкладку «Токены API»
- Нажмите на вид рядом с Global API-ключ
- Введите свой пароль еще раз, чтобы подтвердить, что это вы
- Скопируйте ключ API и сохраните его где-то супер безопасным. Не отдавайте это никому, кого вы не хотите получить доступ и изменить ваши DNS.
- Добавьте сгенерированный токен в ваш файл 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»