【问题标题】:Conditional TLS cert management in terraformterraform 中的条件 TLS 证书管理
【发布时间】:2017-08-30 10:39:03
【问题描述】:

我正在尝试在 Terraform 中创建一个解决方案,借此我可以使用让加密创建 TLS 证书或在 S3 存储桶中提供我自己的证书。我面临的问题是我似乎无法有条件地运行 Let's Encrypt 证书生成和上传步骤。

如何使最后两个步骤成为条件?我正在考虑将它们包装在 null_resource 中,如何根据外部数据进行触发器?

非常感谢任何提示!谢谢大家。

没有

resource "null_resource" "sync_certs" {
  provisioner "local-exec" {
    command = "mkdir -p ./tmp/certs"
  }
  provisioner "local-exec" {
    command =  "aws s3 sync s3://xxxxxx/${var.root_domain_name}/${var.env_name} ./tmp/certs/ && ls -l ./tmp/certs/"
  }
}

resource "tls_private_key" "cert_private_key" {
  count     = "${var.bank_count}"
  algorithm = "RSA"
}

resource "acme_registration" "reg" {
  server_url = "${var.acme_url}"

  account_key_pem = "${tls_private_key.generated_key.private_key_pem}"

  email_address = "xxxxx"
}

resource "acme_certificate" "certificate" {
  count           = "${var.bank_count}"
  server_url      = "${var.acme_url}"
  account_key_pem = "${tls_private_key.generated_key.private_key_pem}"
  common_name     = "${var.bank_names[count.index]}.${var.env_name}.${var.root_domain_name}"

  dns_challenge {
    provider = "route53"
  }

  registration_url = "${acme_registration.reg.id}"
}

resource "local_file" "privkey" {
  count       = "${var.bank_count}"
  content     = "${tls_private_key.generated_key.private_key_pem}"
  filename = "./tmp/certs/${var.bank_names[count.index]}.privkey.pem"
}


resource "aws_s3_bucket_object" "tls_private_key_file" {
  count       = "${var.bank_count}"
  bucket      = "xxxx"
  key         = "${var.root_domain_name}/${var.env_name}/${var.bank_names[count.index]}.privkey.pem"
  source      = "./tmp/certs/${var.bank_names[count.index]}.privkey.pem"
  content_type = "text/plain"
  depends_on  = ["local_file.privkey"]
}

}

【问题讨论】:

    标签: amazon-web-services devops terraform


    【解决方案1】:

    不确定我的理解是否正确,您是否正在寻找这样的东西?

    首先定义一个开关变量enable=true|false

    将计数代码放入您要控制的任何资源中。

    count = "${var.enable ? var.bank_count : 0}"
    

    【讨论】:

      【解决方案2】:

      我最终通过将 terraform 包装在脚本中解决了这个问题。在这里,我可以检查是否要在 s3 中使用证书,并将 terraform 的相应文件移出覆盖目录。不漂亮,但很管用!

      【讨论】:

        猜你喜欢
        • 2020-01-17
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2020-01-11
        • 1970-01-01
        • 2021-05-06
        • 2021-06-06
        • 2021-02-09
        相关资源
        最近更新 更多