Terraform aws_elasticache_cluster: как принудительно создать новый redis при изменении типа узла? - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть модуль 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",
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...