Actuellement, nous utilisons le modèle de déploiement bleu/vert pour notre application utilisant Terraform.Évitez la mise à jour des ressources dans Terraform
Et nos fichiers TF ont des ressources pour les & Blue Green comme on le voit ci-dessous -
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}"
}
Ma question - est-il un moyen de mettre à jour les ressources vertes sans mise à jour des ressources bleu et vice versa Without Using Targeted Plan
. Par exemple. Si nous mettons à jour les groupes de sécurité (var.security_groups)
qui est une variable commune, la mise à jour aura lieu pour les bleu et vert et je vais devoir faire un plan ciblé (seen below)
pour éviter des ressources bleues de se faire jour avec le Groupe de New Security -
terraform plan -out=green.plan -target=<green_resource_name>
Comment voulez-vous appeler terraform? Je ne pense pas que vous puissiez échanger automatiquement entre le vert et le bleu chaque fois que vous l'exécutez, si c'est ce que vous demandez. – l0b0
Je suis en train de faire un plan ciblé pour arrêter la mise à jour de Blue Resources si je veux mettre à jour Green. Je voulais savoir s'il y avait une meilleure façon de le faire. –