برنامه نویسی

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

تنظیم DNS دامنه شما می تواند یک فرآیند دستی خسته کننده باشد ، اما با وجود زیرساخت ها به عنوان ابزارهای کد مانند Terraform ، می توانید این تنظیمات را به صورت خودکار انجام داده و از سازگاری در محیط ها اطمینان حاصل کنید. در این راهنما ، ما چگونه می خواهیم:

  1. مدیریت DNS دامنه Namecheap خود را به CloudFlare منتقل کنید
  2. Terraform را برای مدیریت سوابق CloudFlare DNS خود تنظیم کنید
  3. CI/CD را با اقدامات GitHub برای خودکارسازی به روزرسانی DNS پیاده سازی کنید

پیش نیازهای

  • دامنه ای که در Namecheap ثبت شده است
  • یک حساب Cloudflare
  • مخزن GitHub برای کد زیرساخت شما
  • درک اساسی از مفاهیم DNS

مرحله 1: تنظیم NameCheap برای استفاده از نام های CloudFlare

قبل از اینکه بتوانیم سوابق DNS را با Terraform مدیریت کنیم ، باید دامنه Namecheap خود را به نام های نام CloudFlare اشاره کنیم.

اضافه کردن دامنه خود به Cloudflare

  1. وارد حساب CloudFlare خود شوید
  2. روی “افزودن یک سایت” کلیک کنید و نام دامنه خود را وارد کنید (به عنوان مثال ، مثال. com)
  3. طرح رایگان را انتخاب کنید (یا برنامه دیگری که متناسب با نیازهای شما باشد)
  4. CloudFlare برای سوابق DNS موجود اسکن می کند – تأیید کنید که این سوابق صحیح هستند
  5. CloudFlare آدرس های Nameserver را به شما ارائه می دهد (به طور معمول در قالب ns1.cloudflare.com وت ns2.cloudflare.com)

به روزرسانی Namecheap

  1. وارد حساب namecheap خود شوید
  2. به “لیست دامنه” بروید و روی “مدیریت” در کنار دامنه خود کلیک کنید
  3. گزینه “Custom DNS” را تحت “Nameservers” انتخاب کنید
  4. CloudFlare Nameservers ارائه شده در هنگام راه اندازی را وارد کنید (معمولاً 2 نام دهنده)
    • مثال: ns1.cloudflare.com وت ns2.cloudflare.com
  5. تغییرات خود را ذخیره کنید

ممکن است 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

  1. شناسه منطقه:

    • وارد CloudFlare شوید
    • دامنه خود را انتخاب کنید
    • شناسه منطقه در سمت راست صفحه نمای کلی نمایش داده می شود
  2. نشانه 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

  1. در مخزن GitHub خود ، به “تنظیمات”> “اسرار و متغیرها”> “اقدامات” بروید
  2. یک راز مخزن جدید با نام اضافه کنید CLOUDFLARE_API_TOKEN و API CloudFlare API شما به عنوان مقدار

اکنون ، هر زمان که به پرونده های Terraform خود در شاخه اصلی فشار می دهید ، Actions GitHub به طور خودکار آن تغییرات را در پیکربندی CloudFlare DNS شما اعمال می کند.

تأیید تنظیمات خود

پس از تنظیم همه چیز ، می توانید تأیید کنید که سوابق DNS شما به درستی پیکربندی شده است:

dig example.com
dig app.example.com
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

همچنین می توانید داشبورد CloudFlare را بررسی کنید تا سوابق ایجاد شده را ببینید.

بهترین روشها

  1. از Backend State Terraform استفاده کنید: برای ذخیره پرونده های حالت خود از یک پس زمینه از راه دور مانند AWS S3 یا Terraform Cloud استفاده کنید.
  2. کنترل نسخه: تمام کد Terraform خود را در کنترل نسخه نگه دارید.
  3. چندین محیط: استفاده از فضای کاری یا دایرکتوری های جداگانه را برای محیط های مختلف در نظر بگیرید.
  4. تغییرات آزمون: استفاده کنید terraform plan برای بررسی تغییرات قبل از استفاده از آنها.

پایان

با ترکیب Namecheap ، CloudFlare و Terraform با اقدامات GitHub ، شما یک سیستم قوی و خودکار برای مدیریت سوابق DNS ایجاد کرده اید. این رویکرد به شما امکان می دهد:

  • نسخه پیکربندی DNS خود را کنترل کنید
  • برای کاهش خطای انسانی تغییرات را خودکار کنید
  • تغییرات را با گذشت زمان دنبال کنید
  • تنظیمات را به راحتی در محیط ها تکرار کنید

این رویکرد زیرساخت به عنوان کد ، قابلیت اطمینان و تکرارپذیری شیوه های مدرن DevOps را به گردش کار مدیریت دامنه شما می آورد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا