terraform route53在托管区域中创建指向ec2实例的公共IP的dns记录的最简单示例



我正在尝试创建一个最简单的例子,在这个例子中我可以

  • 创建一个DNS a记录,指向在默认VPC中创建的EC2实例的公共IP

我有相同的以下代码

hostedzone.tf

resource "aws_route53_zone" "devopslink-public-zone" {
name = var.domain_mydevops_link
comment = "${var.domain_mydevops_link} public zone"
provider = aws
}

instance.tf

data "aws_ami" "ubuntu" {
most_recent = true
filter {
name   = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
}
filter {
name   = "virtualization-type"
values = ["hvm"]
}
owners = ["099720109477"] # Canonical
}
resource "aws_instance" "web" {
ami           = data.aws_ami.ubuntu.id
instance_type = "t2.micro"
tags = {
Name = "HelloWorld"
}
}

路线53记录.tf

resource "aws_route53_record" "server1-record" {
zone_id = aws_route53_zone.devopslink-public-zone.zone_id
name    = "server1.devops.link"
type    = "A"
ttl     = "300"
records = [aws_instance.web.public_ip]
}
  • Terraform申请成功给我这个
Outputs:
devopslink-name-servers = [
"ns-1363.awsdns-42.org",
"ns-1707.awsdns-21.co.uk",
"ns-466.awsdns-58.com",
"ns-941.awsdns-53.net",
]
devopslink-public-zone-id = Z06137733F7SHPRF6K9Q3

我可以看到route53记录是在AWS控制台中创建的,带有route53控制台上实例的公共IP

server1.devops.link A   Simple  -   35.174.12.184

然而,当我在线或使用电脑进行nslookup时,它无法解决

✗ nslookup server1.devops.link
Server:         127.0.0.53
Address:        127.0.0.53#53
** server can't find server1.devops.link: NXDOMAIN

我在这里做错了什么?我不拥有域devops.link。我的假设是,它应该由上面的地形代码来处理。

公共托管区域是托管DNS配置的解决方案的一部分,它将保存您的DNS记录。从我所看到的,你的公共托管区域和记录是正确的。

第二部分涉及您无法解析该记录,因为您不拥有该域——没有到公共托管区域的映射,这会阻止任何人将该域解析为您的DNS记录。

您需要拥有该域才能将其解析为名称服务器,一旦您拥有该域,您就会将其名称服务器值设置为等于公共托管区域中的名称服务器记录。

到目前为止,Terraform中还没有官方支持Route 53 Domains服务,这是购买和配置域的服务。

基本上,对于此任务,我们需要以下

  • 您拥有的类似mydomain.link的域。当我们说拥有时,这意味着域名已在域名注册机构注册。当你这样做时,你可以选择他们(域名注册商(的默认名称服务器,也可以选择在托管区域的AWS(或任何其他云提供商(中创建的自定义名称服务器
  • 默认VPC中具有公共IP的EC2实例
  • 托管分区
  • route53dns记录解析到我们实例的公共IP

使用问题中给出的所有资源,我们创建了一个EC2实例、一个托管区域和一个route53记录。因此,现在我们需要在域注册商的设置中添加由terraform代码生成的名称服务器的fqdn,以便它使用我们的名称服务器来解析记录集。

链接到示例-任务链接

最新更新