Terraform: Задержка Поставщика Mysql

  • Автор темы Sergeydrag
  • Обновлено
  • 21, Oct 2024
  • #1

У меня есть проект Terraform, который использует провайдера MySQL. Из-за особенностей работы Terraform поставщик MySQL не сможет правильно загрузиться, поскольку экземпляр AWS_RDS не существует. Есть ли способ отложить или разделить мой проект, чтобы провайдер MySQL не загружался во время основного «применения»?

Я исследовал рабочие области и вижу, что вы можете использовать счетчик, чтобы активировать загрузку или не загрузку ресурса в зависимости от имени рабочей области. Но это все равно не сработало, подумал я.

Я также видел упоминание об этой проблеме на Hashicorp GitHub, но один из них, похоже, предлагает обходной путь.

Любая помощь очень ценится.

Вот фрагмент моей конфигурации хранилища данных:

resource "aws_db_subnet_group" "default" {

name       = "${var.database_subnet_group_name}"

subnet_ids = ["${var.database_subnets}"]

tags {

Name = "${var.database_subnet_group_name}"

}
}

resource "aws_rds_cluster_instance" "cluster_instances" {

count              = 1

identifier         = "app-aurora-cluster-${count.index}"

cluster_identifier = "${aws_rds_cluster.some_cluster.id}"

instance_class     = "db.t2.medium"

db_subnet_group_name = "${var.database_subnet_group_name}"

publicly_accessible = true
}

resource "aws_rds_cluster" "some_cluster" {

cluster_identifier = "app-aurora-cluster"

availability_zones = ["${var.database_azs}"]

database_name      = "${var.database_name}"

db_subnet_group_name = "${var.database_subnet_group_name}"

master_username    = "auroradmin"

master_password    = "%XwPn}gU6sX<y8Wx"

skip_final_snapshot =  true

vpc_security_group_ids = ["${var.database_security_groups}"]
}
/*
# This has to be commented out during the first pass
# because Terraform will try to connect to the 
# MySQL Aurora server to refresh the state even 
# though it currently doesn't exist.
# Configure the MySQL provider
provider "mysql" {

endpoint = "${aws_rds_cluster.some_cluster.endpoint}"

username = "auroradmin"

password = "%XwPn}gU6sX<y8Wx"
}

#terraform #mysql #terraform-module #terraform-workspace

Sergeydrag


Рег
29 Sep, 2009

Тем
87

Постов
185

Баллов
640
  • 25, Oct 2024
  • #2

Я думаю, вы могли бы добиться чего-то подобного, сначала запустив Terraform на ваших ресурсах RDS, а затем снова запустив Terraform на всех ресурсах.

При первом проходе вы можете использовать

-target
option to target only a subset of the resources. (ie. RDS resources).

Имейте в виду, что использование этой опции не рекомендуется в документации Terraform. На вашем месте я бы использовал его какое-то время и изменил бы, как только будет решена одна из этих проблем: https://github.com/hashicorp/terraform/issues/10462 https://github.com/hashicorp/terraform/issues/2430 https://github.com/hashicorp/terraform/issues/4149

Подробности о том, как использовать

-target
and its caveats, see: https://www.terraform.io/docs/commands/plan.html#resource-targeting

 

Sportan


Рег
02 Apr, 2014

Тем
68

Постов
177

Баллов
547
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно