Terraform 如何关联现有的安全组

112次阅读
没有评论

问题描述

想知道在创建 RDS 时,是否有办法将现有的安全组关联到 RDS 上,或者唯一的方法是重新创建安全组以便将其添加到状态文件中。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以使用 Terraform 的数据源来检索现有的安全组,并将其关联到 RDS 上。以下是具体步骤:
1. 在 Terraform 配置文件中定义一个变量 security_group_id,用于存储现有安全组的 ID。
2. 使用 data 数据源来检索指定 ID 的安全组。
下面是一个示例配置文件:

variable "security_group_id" {}

data "aws_security_group" "selected" {
  id = var.security_group_id
}

在上面的示例中,我们定义了一个变量 security_group_id,用于存储现有安全组的 ID。然后,使用 data 数据源来检索指定 ID 的安全组。你可以在其他资源中引用这个数据源,以关联现有的安全组到 RDS 上。

方案2

使用 terraform import 命令可以导入安全组,以便你可以将其作为 Terraform 创建的资源进行引用。
另一种方法是使用 terraform import 命令导入安全组,以便你可以将其作为 Terraform 创建的资源进行引用。以下是具体步骤:
1. 执行以下命令导入安全组:

terraform import aws_security_group.example sg-12345678

其中,aws_security_group.example 是你在 Terraform 配置文件中定义的资源名称,sg-12345678 是现有安全组的 ID。
2. 在 Terraform 配置文件中引用导入的安全组:

resource "aws_instance" "example" {
  # 其他配置
  vpc_security_group_ids = [aws_security_group.example.id]
}

在上面的示例中,我们首先使用 terraform import 命令导入现有的安全组。然后,在 Terraform 配置文件中引用导入的安全组,将其关联到其他资源(如 EC2 实例)上。
请注意,使用 terraform import 命令导入安全组时,你需要确保 Terraform 配置文件中已经定义了相应的资源,并且与导入的安全组具有相同的配置。

正文完