مدیریت DNS با Namecheap ، Cloudflare و Terraform: یک راهنمای کامل

تنظیم DNS دامنه شما می تواند یک فرآیند دستی خسته کننده باشد ، اما با وجود زیرساخت ها به عنوان ابزارهای کد مانند Terraform ، می توانید این تنظیمات را به صورت خودکار انجام داده و از سازگاری در محیط ها اطمینان حاصل کنید. در این راهنما ، ما چگونه می خواهیم:
- مدیریت DNS دامنه Namecheap خود را به CloudFlare منتقل کنید
- Terraform را برای مدیریت سوابق CloudFlare DNS خود تنظیم کنید
- CI/CD را با اقدامات GitHub برای خودکارسازی به روزرسانی DNS پیاده سازی کنید
پیش نیازهای
- دامنه ای که در Namecheap ثبت شده است
- یک حساب Cloudflare
- مخزن GitHub برای کد زیرساخت شما
- درک اساسی از مفاهیم DNS
مرحله 1: تنظیم NameCheap برای استفاده از نام های CloudFlare
قبل از اینکه بتوانیم سوابق DNS را با Terraform مدیریت کنیم ، باید دامنه Namecheap خود را به نام های نام CloudFlare اشاره کنیم.
اضافه کردن دامنه خود به Cloudflare
- وارد حساب CloudFlare خود شوید
- روی “افزودن یک سایت” کلیک کنید و نام دامنه خود را وارد کنید (به عنوان مثال ، مثال. com)
- طرح رایگان را انتخاب کنید (یا برنامه دیگری که متناسب با نیازهای شما باشد)
- CloudFlare برای سوابق DNS موجود اسکن می کند – تأیید کنید که این سوابق صحیح هستند
- CloudFlare آدرس های Nameserver را به شما ارائه می دهد (به طور معمول در قالب
ns1.cloudflare.com
وتns2.cloudflare.com
)
به روزرسانی Namecheap
- وارد حساب namecheap خود شوید
- به “لیست دامنه” بروید و روی “مدیریت” در کنار دامنه خود کلیک کنید
- گزینه “Custom DNS” را تحت “Nameservers” انتخاب کنید
- CloudFlare Nameservers ارائه شده در هنگام راه اندازی را وارد کنید (معمولاً 2 نام دهنده)
- مثال:
ns1.cloudflare.com
وتns2.cloudflare.com
- مثال:
- تغییرات خود را ذخیره کنید
ممکن است 24-48 ساعت طول بکشد تا تغییر دهنده Nameser در سطح جهان پخش شود. می توانید با استفاده از تغییر نام NameServer را تأیید کنید:
dig NS example.com
مرحله 2: مدیریت DNS با Terraform
اکنون که CloudFlare در حال دستیابی به DNS شما است ، می توانیم از Terraform برای مدیریت سوابق استفاده کنیم.
تنظیم پرونده های پیکربندی terraform
پرونده های زیر را در فهرست پروژه خود ایجاد کنید:
main.tf
terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "~> 5.0"
}
}
}
provider "cloudflare" {
api_token = var.cloudflare_api_token
}
variable "cloudflare_api_token" {
sensitive = true
}
variable "zone_id" {
default = "abcdef1234567890abcdef1234567890" # Replace with your Cloudflare zone ID
}
variable "domain" {
default = "example.com" # Replace with your domain
}
dns.tf
# A record for the root domain
resource "cloudflare_dns_record" "a_root" {
zone_id = var.zone_id
name = "@"
type = "A"
content = "203.0.113.10" # Replace with your server IP
ttl = 1
proxied = true
}
# A record for a subdomain
resource "cloudflare_dns_record" "app_server" {
zone_id = var.zone_id
name = "app"
type = "A"
content = "203.0.113.20" # Replace with your server IP
ttl = 1
proxied = false
}
# CNAME record example
resource "cloudflare_dns_record" "www" {
zone_id = var.zone_id
name = "www"
type = "CNAME"
content = "example.com"
ttl = 1
proxied = true
}
terraform.tfvars (این را به .gitignore اضافه کنید تا اسرار از کنترل نسخه خارج شود)
cloudflare_api_token = "your_cloudflare_api_token_here"
.gitignore
.terraform/
*.tfstate
*.tfstate.*
.terraform.lock.hcl
terraform.tfvars
دریافت شناسه Zone Cloudflare Zone و API
-
شناسه منطقه:
- وارد CloudFlare شوید
- دامنه خود را انتخاب کنید
- شناسه منطقه در سمت راست صفحه نمای کلی نمایش داده می شود
-
نشانه API:
- در CloudFlare ، به “پروفایل من”> “Tokens API” بروید
- با الگوی “ویرایش منطقه DNS” یا مجوزهای سفارشی یک نشانه ایجاد کنید
- توکن تولید شده را کپی کنید
اجرای Terraform به صورت محلی
پیکربندی Terraform خود را اولیه کنید و اعمال کنید:
terraform init
terraform plan -var="cloudflare_api_token=your_token_here"
terraform apply -var="cloudflare_api_token=your_token_here"
مرحله 3: تنظیم CI/CD با اقدامات GitHub
برای خودکار سازی تغییرات DNS هنگام به روزرسانی پرونده های Terraform ، یک گردش کار Actions GitHub ایجاد کنید.
یک فایل در ایجاد کنید .github/workflows/terraform.yml
:
name: 'Terraform Apply'
on:
push:
paths:
- '*.tf'
- '*.tfvars'
branches:
- main
permissions:
contents: read
jobs:
terraform:
runs-on: ubuntu-latest
name: Terraform Apply
environment: production
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
- name: Terraform Init
run: terraform init
- name: Terraform Plan
run: terraform plan -var="cloudflare_api_token=${{ secrets.CLOUDFLARE_API_TOKEN }}"
- name: Terraform Apply
run: terraform apply -var="cloudflare_api_token=${{ secrets.CLOUDFLARE_API_TOKEN }}" --auto-approve --input=false
- name: Terraform Output
run: terraform output
تنظیم اسرار GitHub
- در مخزن GitHub خود ، به “تنظیمات”> “اسرار و متغیرها”> “اقدامات” بروید
- یک راز مخزن جدید با نام اضافه کنید
CLOUDFLARE_API_TOKEN
و API CloudFlare API شما به عنوان مقدار
اکنون ، هر زمان که به پرونده های Terraform خود در شاخه اصلی فشار می دهید ، Actions GitHub به طور خودکار آن تغییرات را در پیکربندی CloudFlare DNS شما اعمال می کند.
تأیید تنظیمات خود
پس از تنظیم همه چیز ، می توانید تأیید کنید که سوابق DNS شما به درستی پیکربندی شده است:
dig example.com
dig app.example.com
همچنین می توانید داشبورد CloudFlare را بررسی کنید تا سوابق ایجاد شده را ببینید.
بهترین روشها
- از Backend State Terraform استفاده کنید: برای ذخیره پرونده های حالت خود از یک پس زمینه از راه دور مانند AWS S3 یا Terraform Cloud استفاده کنید.
- کنترل نسخه: تمام کد Terraform خود را در کنترل نسخه نگه دارید.
- چندین محیط: استفاده از فضای کاری یا دایرکتوری های جداگانه را برای محیط های مختلف در نظر بگیرید.
-
تغییرات آزمون: استفاده کنید
terraform plan
برای بررسی تغییرات قبل از استفاده از آنها.
پایان
با ترکیب Namecheap ، CloudFlare و Terraform با اقدامات GitHub ، شما یک سیستم قوی و خودکار برای مدیریت سوابق DNS ایجاد کرده اید. این رویکرد به شما امکان می دهد:
- نسخه پیکربندی DNS خود را کنترل کنید
- برای کاهش خطای انسانی تغییرات را خودکار کنید
- تغییرات را با گذشت زمان دنبال کنید
- تنظیمات را به راحتی در محیط ها تکرار کنید
این رویکرد زیرساخت به عنوان کد ، قابلیت اطمینان و تکرارپذیری شیوه های مدرن DevOps را به گردش کار مدیریت دامنه شما می آورد.