检查集群参数组是否存在,如果不存在则仅使用 terraform 创建

Check if cluster parameter group exists , if not then only create using terraform

要求 - 我想通过首先检查创建一个集群参数组,如果它已经存在(可能不是由 terraform 创建的),那么不要 运行 创建资源块。如果没有则只创建它。

第 1 期 - 我找不到数据源来获取现有的集群参数组。请帮助我。

2nd - 如果有任何更好的方法来实现此目的或是否存在任何其他问题,这些问题可能会在下面的代码中出现。

module "pg" {
  count                               = 2
  source                              = "./module/pg"
  cluster_parameter_group             = var.aurora_mysql[count.index].cluster_parameter_group
  cluster_parameter_group_family      = var.aurora_mysql[count.index].cluster_parameter_group_family
}

输入变量 在这里我给出了相同的输入变量,因此对于 aurora_mysql[0] 它将创建它,但是对于 aurora_mysql[1] 不应该尝试创建资源。

aurora_mysql = [
    {
                cluster_parameter_group          = "aurora-mysql-cluster-parameter-group"     
                cluster_parameter_group_family   = "aurora-mysql5.7"
    },
    {
                cluster_parameter_group          = "aurora-mysql-cluster-parameter-group"     
                cluster_parameter_group_family   = "aurora-mysql5.7"
    }
]

模块

data "block to fetch existing parameter group" {
}

resource "aws_rds_cluster_parameter_group" "pg" {
  count                               = data.aws_rds_cluster_parameter_group.cpg.id != "" ? 1 : 0
  name                                = var.cluster_parameter_group
  family                              = var.cluster_parameter_group_family
  description                         = "rds aurora mysql paramter group"
}

if it already exists

Terraform (TF) 没有任何内置工具来检查是否存在某些东西。这违反了 TF 工作原理。 TF的核心原则是,如果一个资源不被TF管理,那么它就不存在。同样在数据源方面,它们必须已经存在,因为没有中间地带可以存在也可以不存在。

话虽如此,有多种方法可以根据您的要求破解解决方案。也就是说,您可以创建自己的 External Data Source。由于这是您的自定义数据源,您可以将其设计为检查是否存在资源并 return true/false 到 TF 以供进一步使用。