首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform更新Route53域NameServers

Terraform更新Route53域NameServers
EN

Stack Overflow用户
提问于 2021-10-22 04:45:52
回答 1查看 47关注 0票数 0

是否可以创建terraform脚本来更新域名服务器?我想要更新域本身的名称服务器,而不是区域。“注册域”下的域需要将名称服务器设置为指向区域的名称服务器。

我有一个我创建的区域:

代码语言:javascript
复制
resource "aws_route53_zone" "redrebelgames" {
  name = "redrebelgames.com"
}

我可以使用:aws_route53_zone.redrebelgames.nameservers访问名称服务器

有没有人知道,如果不使用置备程序在本地运行aws sdk方法,这是否可能?我能想到的唯一方法是使用"local-exec“配置器,它将运行python或ruby脚本来直接调用aws sdk方法。基本上,我想知道是否有可能运行这个函数:直接在Terraform中运行https://docs.aws.amazon.com/Route53/latest/APIReference/API_domains_UpdateDomainNameservers.html,而不使用外部脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-22 16:41:07

我最终只使用了一个local-exec配置器,它运行了我用ruby编写的脚本:

代码语言:javascript
复制
require 'aws-sdk-route53domains'

Aws.use_bundled_cert!

AWS_ACCESS_KEY = ARGV[0]
AWS_SECRET_KEY = ARGV[1]
name_servers = ARGV[2].to_s.split ','

# At the time of writing this, there is only one endpoint for route53domains, at us-east-1, see link below
# https://docs.aws.amazon.com/general/latest/gr/r53.html
client = Aws::Route53Domains::Client.new(
  region: "us-east-1",
  access_key_id: AWS_ACCESS_KEY,
  secret_access_key: AWS_SECRET_KEY
)

response = client.update_domain_nameservers({
  domain_name: "redrebelgames.com",
  nameservers: name_servers.map{|ns| {name: ns}}
})

以下是terraform设置:

代码语言:javascript
复制
resource "aws_route53_zone" "redrebelgames" {
  name = "redrebelgames.com"

  provisioner "local-exec" {
    command = "ruby scripts/update_domain_nameservers.rb ${var.AWS_ACCESS_KEY} ${var.AWS_SECRET_KEY} ${element(aws_route53_zone.redrebelgames.name_servers, 0)},${element(aws_route53_zone.redrebelgames.name_servers, 1)},${element(aws_route53_zone.redrebelgames.name_servers, 2)},${element(aws_route53_zone.redrebelgames.name_servers, 3)}"
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69671536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档