我有一个terraform脚本,用于部署包含route53记录的微服务(在这里叫 myservice )。
该脚本在东京区域可以正常运行,因为该区域具有 myservice 所需的所有AWS服务。
现在,我要将 myservice 部署到中国的宁夏地区cn-norhthwest-1。
由于在AWS中国中不存在route53,目前我的解决方案是在普通的AWS账户(即包含东京,俄亥俄州,俄勒冈州的AWS账户)中手动设置中国的 myservice 的域名。 ...地区)。
例如,将www.myservice.com.cn
指向C myservice-ningxia-elb-1234567890.cn-northwest-1.elb.amazonaws.com.cn
的CNAME记录,这是宁夏地区的ELB域名。
如何使用terraform自动化此过程?
这是我的文件夹结构:
.
├── environments
│ ├── ningxia
│ │ ├── main.tf
│ │ └── versions.tf
│ └── tokyo
│ ├── main.tf
│ └── versions.tf
└── modules
├── cloud-init.yaml
├── outputs.tf
├── myservice.tf
└── variables.tf
我可以通过运行
在东京地区创建 myservicecd environments && \
terraform init && \
terraform apply
此post表明我们可以使用以下代码在aws_route53_zone
区域中创建cn-northwest-1
# 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。
答案 0 :(得分:0)
您可以使用来自外部数据的自定义资源,如下所示:
data "external" "dns" {
program = ["${path.module}/dns.sh"]
query = {
region = "${var.region}"
profile = "${lower(var.env)}"
dns = "dnsname"
}
}
只需编写一个连接到route53区域的cli dns.sh即可创建记录。