У меня есть модуль terraform, который создает кластер aws elastiache и обновляет частную запись DNS с адресом конечной точки redis.С жизненным циклом (создать, прежде чем уничтожить) все работает нормально.Проблема в том, что если я изменю тип_узла, я получу время простоя (они изменят узел вместо создания нового).
Итак, я добавляю случайное имя в кластер, но теперьУ меня другая проблема.Terraform сначала создаст новый кластер, затем уничтожит старый, но не будет обновлять de DNS. НО, если я перезапущу применение terraform после, он увидит diff и обновит DNS.Я думаю, что проблема связана с записью DNS: aws_elasticache_cluster.camshub-redis.cache_nodes.0.address.
################
# data sources #
################
data "aws_vpc" "selected" {
tags {
Name = "VPC_${var.env}"
}
}
data "aws_subnet" "sb_private_az_a" {
vpc_id = "${data.aws_vpc.selected.id}"
tags {
Name = "${var.env}_Private_Subnet_${var.az_a}"
}
}
data "aws_subnet" "sb_private_az_b" {
vpc_id = "${data.aws_vpc.selected.id}"
tags {
Name = "${var.env}_Private_Subnet_${var.az_b}"
}
}
data "aws_route53_zone" "zone" {
name = "${var.zone_name}"
private_zone = true
vpc_id = "${data.aws_vpc.selected.id}"
}
################
# Elasticache #
################
resource "random_id" "server" {
byte_length = 4
}
resource "aws_elasticache_cluster" "camshub-redis" {
cluster_id = "${var.env}-redis-${random_id.server.hex}"
engine = "redis"
node_type = "${var.node_type}"
num_cache_nodes = 1
parameter_group_name = "default.redis4.0"
engine_version = "4.0.10"
port = 6379
subnet_group_name = "${aws_elasticache_subnet_group.elasticache_subnet_group.name}"
security_group_ids = ["${aws_security_group.sg-elasticache-redis.id}"]
lifecycle {
create_before_destroy = true
}
depends_on = [
"aws_elasticache_subnet_group.elasticache_subnet_group",
]
}
resource "aws_elasticache_subnet_group" "elasticache_subnet_group" {
name = "${var.env}-elasticache-subnet-group"
subnet_ids = ["${data.aws_subnet.sb_private_az_a.id}", "${data.aws_subnet.sb_private_az_b.id}"]
}
resource "aws_security_group" "sg-elasticache-redis" {
name = "${var.env}-sg-elasticache-redis"
description = "Allow HTTP, HTTPS, and SSH"
vpc_id = "${data.aws_vpc.selected.id}"
// Redis
ingress {
from_port = 6379
to_port = 6379
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
################
# Route53 #
################
resource "aws_route53_record" "route53" {
zone_id = "${data.aws_route53_zone.zone.zone_id}"
name = "${var.sub_domain}"
type = "${var.type}"
ttl = "${var.ttl}"
records = [
"${aws_elasticache_cluster.camshub-redis.cache_nodes.0.address}",
]
depends_on = [
"aws_elasticache_cluster.camshub-redis",
]
}