Я пытался создать политику аварийного переключения для домена в AWS с использованием terraform. Проблема заключается в том, что за обоими ресурсами route53 в качестве ОСНОВНОГО и ВТОРИЧНОГО указывается только одно имя elb dns.Я на самом деле хочу, чтобы это использовало имя северного вирджинского имени как ПЕРВИЧНОЕ, а Орегон как ВТОРИЧНОЕ.
Это многорегиональная архитектура, и я создал модули с одним и тем же исходным каталогом.
Имя файла: route53.tf
resource "aws_route53_record" "www1" {
zone_id = "Zone-ID"
name = "www1"
type = "A"
#ttl = "5"
failover_routing_policy {
type = "PRIMARY"
}
set_identifier = "www1"
#records = ["${aws_elb.web.dns_name}"]
alias {
name = "${aws_elb.web.dns_name}"
zone_id = "${aws_elb.web.zone_id}"
evaluate_target_health = true
}
}
resource "aws_route53_record" "www2" {
zone_id = "Zone-ID"
name = "www2"
type = "A"
#ttl = "5"
failover_routing_policy {
type = "SECONDARY"
}
set_identifier = "www2"
#records = ["${aws_elb.web.dns_name}"]
alias {
name = "${aws_elb.web.dns_name}"
zone_id = "${aws_elb.web.zone_id}"
evaluate_target_health = true
}
}
Имя файла: alb_elb.tf
resource "aws_elb" "web" {
name = "web-elb"
availability_zones = "${var.az}"
listener {
instance_port = 8000
instance_protocol = "http"
lb_port = 80
lb_protocol = "http"
}
health_check {
healthy_threshold = 2
unhealthy_threshold = 2
timeout = 3
target = "HTTP:8000/"
interval = 30
}
instances = ["${aws_instance.web.*.id}"]
cross_zone_load_balancing = true
idle_timeout = 400
connection_draining = true
connection_draining_timeout = 400
tags {
Name = "foobar-terraform-elb"
}
}
Имя файла: main.tf.
module "north-virginia" {
source = "./modules/production"
region = "us-east-1"
az = ["us-east-1a", "us-east-1b", "us-east-1c"]
}
module "oregon" {
source = "./modules/production"
region = "us-west-2"
az = ["us-west-2a", "us-west-2b", "us-west-2c"]
}
Имя файла: ./production/module/main.tf
variable region { }
variable az {
type = "list"
}
provider "aws" {
region = "${var.region}"
profile = "personal"
shared_credentials_file = "~/.aws/credentials"
}
data "aws_caller_identity" "current" {}
output "account_id" {
value = "${data.aws_caller_identity.current.account_id}"
}
Дерево каталогов:
.
├── main.tf
└── modules
├── dev
│ ├── ec2.tf
│ ├── main.tf
│ └── route53.tf
├── production
│ ├── aws_elb.tf
│ ├── aws_instance.tf
│ ├── main.tf
│ └── route53.tf
└── qa
├── ec2.tf
├── main.tf
└── route53.tf