4

現在、Terraform を使用するアプリケーションに Blue/Green デプロイ モデルを使用しています。

また、以下に示すように、TF ファイルには青と緑の両方のリソースがあります -

resource "aws_instance" "green_node" {
  count = "${var.node_count * var.keep_green * var.build}"

  lifecycle = {
    create_before_destroy = true
  }

  ami                         = "${var.green_ami_id}"
  instance_type               = "${lookup(var.instance_type,lower(var.env))}"
  security_groups             = "${split(",", lookup(var.security_groups, format("%s-%s", lower(var.env),var.region)))}"
  subnet_id                   = "${element(split(",", lookup(var.subnets, format("%s-%s", lower(var.env),var.region))), count.index)}"
  iam_instance_profile        = "${var.iam_role}"
  key_name                    = "${var.key_name}"
  associate_public_ip_address = "false"

  tags {
    Name            = "node-green-${var.env}-${count.index + 1}"
  }

  user_data = "${data.template_cloudinit_config.green_node.rendered}"

}


resource "aws_instance" "blue_node" {
  count = "${var.node_count * var.keep_blue * var.build}"

  lifecycle = {
    create_before_destroy = true
  }

  ami                         = "${var.blue_ami_id}"
  instance_type               = "${lookup(var.instance_type,lower(var.env))}"
  security_groups             = "${split(",", lookup(var.security_groups, format("%s-%s", lower(var.env),var.region)))}"
  subnet_id                   = "${element(split(",", lookup(var.subnets, format("%s-%s", lower(var.env),var.region))), count.index)}"
  iam_instance_profile        = "${var.iam_role}"
  key_name                    = "${var.key_name}"
  associate_public_ip_address = "false"

  tags {
    Name              = "node-blue-${var.env}-${count.index + 1}"
  }
  user_data = "${data.template_cloudinit_config.blue_node.rendered}"

}

私の質問 - 青のリソースを更新せずに緑のリソースを更新する方法はありますか、またその逆の方法はありますかWithout Using Targeted Plan? たとえば。共通の変数であるセキュリティ グループ(var.security_groups)を更新すると、Blue と Green の両方で更新が行われ、(seen below)Blue リソースが新しいセキュリティ グループで更新されないように、ターゲットを絞った計画を実行する必要があります。

terraform plan -out=green.plan -target=<green_resource_name>
4

1 に答える 1