[英]How to generate dynamic DNS entries in AWS Route 53 using Terraform?
[英]Terraform using Route 53 in another AWS Account
我有一個 terraform 腳本,它部署了一個包含 route53 記錄的微服務(這里我們稱之為myservice )。
此腳本在東京區域運行正常,因為該區域具有myservice所需的所有 AWS 服務。
現在我要把myservice部署到中國寧夏地區的cn-norhthwest-1。
由於AWS中國不存在route53,目前我的解決方案是在普通AWS賬戶(即包含東京、俄亥俄、俄勒岡...區域的AWS賬戶)中手動設置中國myservice的域名。
例如,指向www.myservice.com.cn
到的CNAME記錄myservice-ningxia-elb-1234567890.cn-northwest-1.elb.amazonaws.com.cn
,這是在寧夏地區的ELB的域名。
如何使用 terraform 自動化此過程?
這是我的文件夾結構:
.
├── environments
│ ├── ningxia
│ │ ├── main.tf
│ │ └── versions.tf
│ └── tokyo
│ ├── main.tf
│ └── versions.tf
└── modules
├── cloud-init.yaml
├── outputs.tf
├── myservice.tf
└── variables.tf
我可以通過運行在東京地區創建myservice
cd environments && \
terraform init && \
terraform apply
這篇文章表明我們可以使用以下代碼在cn-northwest-1
區域創建aws_route53_zone
# configure AWS provider for China region.
provider "aws" {
region = "cn-northwest-1"
access_key = AK
secret_key = SK
endpoints {
route53 = "https://api.route53.cn"
}
}
# create a route 53 pub zone
resource "aws_route53_zone" "test" {
name = "bobtest3.cn"
comment = "try to create a pub zone with terraform in China region v2!"
}
這怎么可能?
我什至在寧夏地區的 AWS 控制台中都找不到 route53。
您可以使用外部數據使用自定義資源,如下所示:
data "external" "dns" {
program = ["${path.module}/dns.sh"]
query = {
region = "${var.region}"
profile = "${lower(var.env)}"
dns = "dnsname"
}
}
只需編寫一個連接到 route53 區域的 cli dns.sh 來創建記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.