Назад | Перейти на главную страницу

terraform: принудительно создавать route_table_association при каждом запуске

Каждый раз, когда я запускал план / заявку, двое из aws_route_table_association ресурсы принудительно воссоздаются:

Terraform will perform the following actions:

<= module.mon.data.aws_subnet_ids.snetid
      id:             <computed>
      ids.#:          <computed>
      tags.%:         "1"
      tags.Name:      "zencopl-mon-*"
      vpc_id:         "vpc-0xxxxxxxxxxxxxxf"

-/+ module.mon.aws_route_table_association.snet[0] (new resource required)
      id:             "rtbassoc-058a3a92f42c51c9b" => <computed> (forces new resource)
      route_table_id: "rtb-05401d41b7281d81f" => "rtb-05401d41b7281d81f"
      subnet_id:      "subnet-032a4ee6fc6ebe945" => "${data.aws_subnet_ids.snetid.ids[count.index]}" (forces new resource)

-/+ module.mon.aws_route_table_association.snet[1] (new resource required)
      id:             "rtbassoc-09858f67c89412e90" => <computed> (forces new resource)
      route_table_id: "rtb-05401d41b7281d81f" => "rtb-05401d41b7281d81f"
      subnet_id:      "subnet-0bd026945b213219d" => "${data.aws_subnet_ids.snetid.ids[count.index]}" (forces new resource)

Похоже, это из-за источника данных, который я определил для получения идентификатора подсети:

data "aws_subnet_ids" "snetid" {
  vpc_id     = "${var.vpc_ids[var.idx]}"
  depends_on = [ "aws_subnet.snets" ]
  tags = {
    Name = "${var.vpc_names[var.idx]}-${var.inst_role}-*"
  }
}

а затем он используется так:

locals {
   a_zones = ["${slice(data.aws_availability_zones.azs.names,0,2)}"]
}
#
resource "aws_route_table_association" "snet" {
  count          = "${length(local.a_zones)}"
  route_table_id = "${aws_route_table.rtb.id}"
  subnet_id      = "${data.aws_subnet_ids.snetid.ids[count.index]}"
  depends_on     = [ "aws_subnet.snets" ]
}
#
module "mon" {
  source         = "../../modules/core-network"
  idx            = "0"
  inst_role      = "mon"
  vpc_names      = "${module.vpc.vpc_names}"
  vpc_ids        = "${module.vpc.vpc_ids}"
  ......
  ......
}

и я не могу узнать, что изношено (или это ошибка). Я пробовал использовать lifecycle { ignore_changes = [ .... ]} но не мог понять, что игнорировать. Хотя это не создает реальной проблемы (со стороны развертывания), но создает много путаницы и действительно хочет исправить это. Может ли кто-нибудь указать, что я делаю неправильно или упускаю? Спасибо заранее !!

-Сан