相关疑难解决方法(0)

在 Terraform 0.12 中,如果资源名称已存在,如何跳过资源的创建?

我正在使用 Terraform 0.12 版。如果已存在具有相同名称的资源,我需要跳过资源创建。

我为此做了以下工作:

阅读自定义图像列表,

data "ibm_is_images" "custom_images" {
}
Run Code Online (Sandbox Code Playgroud)

检查图像是否已经存在,

locals {
 custom_vsi_image = contains([for x in data.ibm_is_images.custom_images.images: "true" if x.visibility == "private" && x.name == var.vnf_vpc_image_name], "true")
}

output "abc" {
value="${local.custom_vsi_image}"
}
Run Code Online (Sandbox Code Playgroud)

仅当图像存在时创建为假。

resource "ibm_is_image" "custom_image" {
  count            = "${local.custom_vsi_image == true ? 0 : 1}"
  depends_on       = ["data.ibm_is_images.custom_images"]
  href             = "${local.image_url}"
  name             = "${var.vnf_vpc_image_name}"
  operating_system = "centos-7-amd64"

  timeouts {
    create = "30m"
    delete = "10m"
  }
}
Run Code Online (Sandbox Code Playgroud)

这在第一次使用“terraform apply”时效果很好。它发现图像不存在,因此创建图像。

当我第二次运行“terraform apply”时。它正在删除上面创建的资源“custom_image”。知道为什么要在第二次运行时删除资源吗?

另外,如何根据某些条件创建资源(例如仅当它不存在时)?

resources exists terraform

25
推荐指数
1
解决办法
4万
查看次数

Terraform RDS 数据库凭据

我正在尝试使用 AWS 秘密管理器来声明 RDS 管理员凭据。

  1. 在变量 RdsAdminCred 中将 rds.tf 中的凭据声明为键/值对
  2. 也在同一个 tf 文件中声明秘密
variable "RdsAminCred" {
    default = {
        username = "dbadmin"
        password = "dbadmin#02avia"
    }
    type = map(string)
}

resource "aws_secretsmanager_secret" "RdsAminCred" {
  name = "RdsAminCred"
}
resource "aws_secretsmanager_secret_version" "RdsAminCred" {
  secret_id     = aws_secretsmanager_secret.RdsAminCred.id
  secret_string = jsonencode(var.RdsAminCred)
}
Run Code Online (Sandbox Code Playgroud)
  1. 我不确定如何使用下面声明中的秘密字符串来替换用户名和密码的硬编码值。
resource "aws_db_instance" "default" {
  identifier            = "testdb"
  allocated_storage    = 20
  storage_type         = "gp2"
  engine               = "mysql"
  engine_version       = "5.7"
  instance_class       = "db.t2.medium"
  name                 = "mydb"
 
  username             = "dbadmin"
  password             = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform secret-manager

25
推荐指数
3
解决办法
4万
查看次数