首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform不断迫使aws_iam_server_certificate资源的再创造

Terraform不断迫使aws_iam_server_certificate资源的再创造
EN

Stack Overflow用户
提问于 2020-07-16 21:10:05
回答 2查看 813关注 0票数 3
代码语言:javascript
复制
✦ ➜ terraform --version                       
Terraform v0.12.28
+ provider.aws v2.60.0
+ provider.kubernetes v1.11.3
+ provider.local v1.4.0
+ provider.null v2.1.2
+ provider.random v2.2.1
+ provider.template v2.1.2

只需为SSL证书放置2个新文件即可。

代码语言:javascript
复制
  # module.ssl-certificate.aws_iam_server_certificate.cert must be replaced
+/- resource "aws_iam_server_certificate" "cert" {
      ~ arn               = "arn:aws:iam::XXX:server-certificate/xxx-ssl-certxxx" -> (known after apply)
      ~ certificate_body  = "721e444119806928d19ef830740057c52580ba71" -> "cd6882dff1edb0223a20fe5f1c2b4b594f07526f" # forces replacement
      - certificate_chain = "7e85cb3e40dff5a9f83ff75576d71fd98fdfdd89" -> null # forces replacement
      ~ id                = "XXX" -> (known after apply)
      ~ name              = "XXX-ssl-cert20200716210119477600000001" -> (known after apply)
        name_prefix       = "XXX-ssl-cert"
        path              = "/"
        private_key       = (sensitive value)
    }

每次运行terraform apply时,我总是要求“替换”证书。每次创建一个新的。

文件(crt,key)没有改变

/main.tf

代码语言:javascript
复制
module "ssl-certificate" {
  source = "./modules/certificates"
  certificate = {
    name        = "xxx-ssl-cert"
    body        = file("assets/ssl/_.xxx.com/xxx.crt")
    private_key = file("assets/ssl/_.xxx.com/xxx.key")
  }
  team        = var.team
  project     = var.project
  component   = ""
  environment = var.environment
  tags        = module.project_config.tags
}

/modules/certificates/main.tf

代码语言:javascript
复制
resource "aws_iam_server_certificate" "cert" {
  name_prefix      = var.certificate.name
  certificate_body = var.certificate.body
  private_key      = var.certificate.private_key

  lifecycle {
    create_before_destroy = true
  }
}

怎么啦?在此之前,我有自己签署的证书,从来没有这种行为。添加了新的证书--并开始在apply中获得这些“重新创建”所需的计划。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2020-07-16 22:06:11

我建议对ignore_changes使用生命周期。

代码语言:javascript
复制
Example:   lifecycle {
    ignore_changes = [certificate_body]
  }
票数 3
EN

Stack Overflow用户

发布于 2021-06-01 06:39:38

若要防止在证书内容不发生更改时terraform重新创建证书,

  1. 将证书链内容从"certificate_body“移动到"aws_iam_server_certificate”资源中的"certificate_chain“terraform参数&

  1. 确保certificate_body & certificate_contents中的行尾与实际行尾相同(对于我的用例,cert中的行尾为LF)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62943524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档