使用Terraform快速搭建私有域名解析服务

智能云解析 DNS

  • 产品定价
  • 功能发布记录
  • 产品描述
    • 使用限制
    • 产品概述
    • 产品优势
    • 应用场景
    • 产品功能
  • 快速入门
    • 使用解析服务
    • 开通服务
  • 典型实践
    • 使用Terraform快速搭建私有域名解析服务
    • 通过Nginx实现URL转发
    • 本地IDC通过解析器互通云上DNS服务
  • 操作指南
    • 多用户访问控制
    • 解析日志管理
    • 内网DNS服务
      • 解析器
      • 删除私有域
      • 添加私有域
      • 添加解析记录
      • 关联VPC
    • 公网DNS服务
      • 升级域名到企业版操作指南
      • 线路分组功能
      • 添加解析
      • 添加域名
      • 解析线路选择
      • 开启解析服务
      • 管理解析
  • 服务等级协议SLA
    • 公网DNS服务等级协议SLA
    • 内网DNS服务等级协议SLA
  • API参考
    • 通用说明
    • 接口概览
    • 附录
    • 公共头和错误返回
    • API服务域名
    • API功能发布记录
    • 概述
    • 内网DNS相关接口
      • 查询PrivateZone列表
      • 删除解析记录
      • 查询PrivateZone详情
      • 解关联VPC
      • 设置解析记录状态
      • 查询解析记录列表
      • 创建PrivateZone
      • 添加解析记录
      • 删除PrivateZone
      • 关联VPC
      • 修改解析记录
    • 公网DNS相关接口
      • 线路组相关接口
      • 域名相关接口
      • 解析记录相关接口
  • 常见问题
    • 一般类常见问题
  • SDK
    • Python-SDK
      • 内网DNS
      • 公网DNS
      • 版本说明
      • 初始化
      • 安装SDK工具包
      • 概述
    • Java-SDK
      • 内网DNS
      • 公网DNS
      • 版本说明
      • 安装SDK工具包
      • 概述
    • Golang-SDK
      • 内网DNS
      • 异常处理
      • 版本说明
      • 初始化
      • 安装SDK工具包
      • 概述
所有文档
menu
没有找到结果,请重新输入

智能云解析 DNS

  • 产品定价
  • 功能发布记录
  • 产品描述
    • 使用限制
    • 产品概述
    • 产品优势
    • 应用场景
    • 产品功能
  • 快速入门
    • 使用解析服务
    • 开通服务
  • 典型实践
    • 使用Terraform快速搭建私有域名解析服务
    • 通过Nginx实现URL转发
    • 本地IDC通过解析器互通云上DNS服务
  • 操作指南
    • 多用户访问控制
    • 解析日志管理
    • 内网DNS服务
      • 解析器
      • 删除私有域
      • 添加私有域
      • 添加解析记录
      • 关联VPC
    • 公网DNS服务
      • 升级域名到企业版操作指南
      • 线路分组功能
      • 添加解析
      • 添加域名
      • 解析线路选择
      • 开启解析服务
      • 管理解析
  • 服务等级协议SLA
    • 公网DNS服务等级协议SLA
    • 内网DNS服务等级协议SLA
  • API参考
    • 通用说明
    • 接口概览
    • 附录
    • 公共头和错误返回
    • API服务域名
    • API功能发布记录
    • 概述
    • 内网DNS相关接口
      • 查询PrivateZone列表
      • 删除解析记录
      • 查询PrivateZone详情
      • 解关联VPC
      • 设置解析记录状态
      • 查询解析记录列表
      • 创建PrivateZone
      • 添加解析记录
      • 删除PrivateZone
      • 关联VPC
      • 修改解析记录
    • 公网DNS相关接口
      • 线路组相关接口
      • 域名相关接口
      • 解析记录相关接口
  • 常见问题
    • 一般类常见问题
  • SDK
    • Python-SDK
      • 内网DNS
      • 公网DNS
      • 版本说明
      • 初始化
      • 安装SDK工具包
      • 概述
    • Java-SDK
      • 内网DNS
      • 公网DNS
      • 版本说明
      • 安装SDK工具包
      • 概述
    • Golang-SDK
      • 内网DNS
      • 异常处理
      • 版本说明
      • 初始化
      • 安装SDK工具包
      • 概述
  • 文档中心
  • arrow
  • 智能云解析DNS
  • arrow
  • 典型实践
  • arrow
  • 使用Terraform快速搭建私有域名解析服务
本页目录
  • 概览
  • 需求场景
  • 方案概述
  • 配置步骤
  • 1、环境准备
  • 2、部署过程
  • 3、查询云上资源详细信息
  • 4、资源删除
  • 5、测试验证
  • 总结
  • 相关产品

使用Terraform快速搭建私有域名解析服务

更新时间:2025-08-21

概览

本文介绍了使用百度智能云内网DNS功能,实现私有域名映射到资源的IP地址,并通过Terraform实现内网DNS的快速创建、部署和管理。

需求场景

当内网资源较为复杂时,通过IP地址来管理过于繁琐,这时能够通过域名去进行管理,将私有域名的解析记录映射到资源的IP地址。同时,内部的域名不能暴露在公网上,内网的环境要和公网隔离。此时可以使用内网DNS服务来进行实现。

方案概述

内网DNS服务基于百度智能云私有网络环境,支持私有域名解析和管理服务。可以在自定义的一个或多个私有网络中快速构建DNS系统,实现私有域名映射到资源IP地址。通过内网DNS服务,您可以方便地使用私有域名记录来管理VPC中的BCC、BLB等百度智能云资源,而这些私有域名在VPC之外将无法访问。

服务搭建完成后,用户可在关联了VPC的私有域中,通过添加解析记录,实现私有域名到资源IP地址的映射。(如下图中云服务器A和云服务器B通信)的需求场景,这样方便运维管理。 流程图-202208231305.png

配置步骤

1、环境准备

  • Terraform:是一种安全有效地构建、更改和版本控制基础设施的工具。它以配置文件为驱动,您在文件中定义各种组件,Terraform会基于该文件完成所有组件的创建、变更和管理。目前百度智能云已与 Terraform集成,您可通过Terraform来创建、管理CFC、BOS、VPC、BCC等多种百度智能云资源,具体请参考Terraform BaiduCloud Provider。
  • 私有网络VPC:私有网络VPC(Virtual private Cloud)是一个用户能够自定义的虚拟网络,灵活设置网络地址空间,实现私有网络隔离,多个虚拟网络之间(同城、跨城)稳定高速对等互通。具体信息请参考私有网络VPC。

2、部署过程

  1. 登录Terraform官网下载适用于您的操作系统的程序包。
  2. 配置terraform baidu provider信息,配置文件可参考如下的代码,在当前文件夹内保存为version.tf。
Plain Text
1    terraform {
2      required_providers {
3        baiducloud = {
4          source = "baidubce/baiducloud"
5          version = "1.14.5" #版本号 可去官网查询版本更新信息
6        }
7      }
8    }
  1. 执行命令terraform init,Terraform会根据当前文件夹内的version.tf文件初始化工作空间。
  2. 编辑Terraform配置文件。新建文件main.tf,在文件中指定VPC、私有域、解析记录的元信息。参考配置和步骤如下:

    更多参数信息可参考baidu provider官方文档

  • 创建VPC
Plain Text
1    resource "baiducloud_vpc" "test-vpc" {
2          name        = "test_vpc"          # VPC名称
3          description = "test_description"  # 描述
4          cidr        = "192.168.0.0/16"    # cidr信息
5     }
  • 创建私有域
Plain Text
1    resource "baiducloud_localdns_privatezone" "my-private-zone" {
2          zone_name = "terrraform.com"     # 私有域名称
3    }
  • 绑定私有域和VPC
Plain Text
1    resource "baiducloud_localdns_vpc" "bind-zone-vpc" {
2      # 私有域id 这里使用了上一步创建出来的私有域 也可以直接填入私有域id
3      zone_id = "${baiducloud_localdns_privatezone.my-private-zone.id}"
4      # 资源区域
5      region  = "bj"
6      # 需要绑定的VPCs 一个私有域可绑定多个VPC
7      vpc_ids = [
8        "${baiducloud_vpc.default-vpc.id}"
9      ]
10    }
  • 在私有域内创建解析记录
Plain Text
1    resource "baiducloud_localdns_record" "local-dns-test" {
2      # 私有域id 这里使用了上一步创建出来的私有域 也可以直接填入私有域id
3      zone_id     = "${baiducloud_localdns_privatezone.my-private-zone.id}"
4      # 主机记录,不能与已有记录重复,记录值和zone的name长度加在一起不能超过255
5      rr          = "www"
6      # 解析记录值
7      value       = "1.1.1.1"
8      # 解析记录类型 目前支持A, AAAA,CNAME, TXT, MX, PTR, SRV
9      type        = "A"
10      # 解析记录的生存时间
11      ttl         = "3000"
12      # 解析记录优先级 只有MX类型的解析记录有优先级 其余类型应为0
13      priority    = 0
14      # 解析记录描述
15      description = "terraform_test"
16      # 解析记录状态 应为 enable 或者 pause
17      status      = "enable"
18    }

完整的配置文件信息可参考如下代码:

Plain Text
1    provider "baiducloud" {
2      access_key = "<YOUR_BAIDUCLOUD_ACCESS_KEY>"
3      secret_key = "<YOUR_BAIDUCLOUD_SECRET_KEY>"
4      region = "bj"
5    }
6    # 1.创建VPC
7    resource "baiducloud_vpc" "test-vpc" {
8      name        = "test_vpc"
9      description = "test_description"
10      cidr        = "192.168.0.0/16"
11      tags        = {
12        "testKey"  = "testValue"
13        "testKey2" = "testValue2"
14      }
15    }
16    # 2.创建私有域
17    resource "baiducloud_localdns_privatezone" "my-private-zone" {
18      zone_name = "terrraform.com"
19    }
20    # 3.私有域和VPC绑定
21    resource "baiducloud_localdns_vpc" "bind-zone-vpc" {
22      zone_id = "${baiducloud_localdns_privatezone.my-private-zone.id}"
23      region  = "bj"
24      vpc_ids = [
25        "${baiducloud_vpc.test-vpc.id}"
26      ]
27    }
28    # 4.创建解析记录
29    resource "baiducloud_localdns_record" "local-dns-test" {
30      zone_id     = "${baiducloud_localdns_privatezone.my-private-zone.id}"
31      rr          = "www"
32      value       = "1.1.1.1"
33      type        = "A"
34      ttl         = "3000"
35      priority    = 0
36      description = "terraform_test"
37      status      = "enable"
38    }
39    
  1. 执行命令terraform plan,Terraform会根据当前配置文件中的信息列出资源变更计划。
  2. 执行命令terraform apply,根据提示输入yes,即自动执行资源创建。

3、查询云上资源详细信息

可使用Terraform的datasource进行云上资源详细信息的查询,并且支持关键字过滤,步骤如下:

  1. 编写配置文件
  • VPC列表查询
Plain Text
1    data "baiducloud_vpcs" "default" {
2      vpc_id = "id"  # id非必填 不填时查询所有
3      # 可根据提供的字段值的正则表达在结果中过滤 以下示例为查询 name = tf-test-acc* 的VPCs
4      filter {
5        name = "name"
6        values = ["tf-test-acc*"]
7      }
8    }
  • 私有域信息查询
Plain Text
1    data "baiducloud_localdns_privatezones" "default" {
2          # 非必填
3          filter {
4            name = "name"
5            values = ["tf-test-zone*"]
6          }
7    }
  • 查询私有域绑定的VPC列表
Plain Text
1    data "baiducloud_localdns_vpcs" "default" {
2        zone_id = "id" #私有域id 必填
3    }
  • 私有域内解析记录详细信息查询
Plain Text
1    data "baiducloud_localdns_records" "local-dns-data" {
2      zone_id = "id" #私有域id 必填
3      # 非必填
4      filter {
5        name = "description"
6        values = ["terraform_test"]
7      }
8    }
  1. 执行terraform apply。
  2. 输入命令terraform show查看结果。

4、资源删除

可使用如下命令进行资源的删除:

Plain Text
1    #命令默认会释放当前main.tf中的所有资源
2    terraform destroy 
3    #可以通过 -target 选项销毁特定的资源,格式为:-target=<资源类型>.<资源名称>,例如:
4    terraform destroy -target baiducloud_vpc.test-vpc

5、测试验证

在完成全部配置后,可在VPC内创建两台BCC,去测试是否能够通过内网DNS解析记录去获得正确的IP地址。参考思路如下:

  1. 通过步骤2的部署过程搭建出内网DNS服务。
  2. 在VPC内创建两台BCC。
  3. 添加一条解析记录指向其中的一台BCC。
  4. 在另一台BCC内通过Ping命令,查看是否能够通过域名解析获得IP地址。

至此,成功通过Terraform建立私有域名解析服务。

总结

借助Terraform,您可以一键搭建私有域名解析服务,快速配置VPC、私有域、解析记录等多种资源,实现内网DNS解析服务的的快速建立。

相关产品

云服务器BCC、私有网络VPC、智能云解析DNS

上一篇
快速入门
下一篇
通过Nginx实现URL转发