使用 aws_kms_key 强制实例替换
Using aws_kms_key forces instance replacement
我有一个奇怪的问题,我创建了“aws_kms_keys”,它很好并且工作正常,然后我使用以下代码将创建的密钥分配给我的 ebs_block:
#root disk
root_block_device {
volume_size = "120"
volume_type = "gp2"
encrypted ="true"
kms_key_id = aws_kms_key.aws-wm-wmad-prod.key_id
delete_on_termination = true
}
然而,如果我 运行 terraform apply 它将尝试在创建后替换整个实例。 ~ kms_key_id = "arn:aws:kms:us-east-1:1433:key/9c93acdd-etc" -> "9c93acdd-etc" # forces replacement
我正在使用 TF 版本 0.14.7 和提供程序版本 3.72.0 很好奇这个问题的解决方法或修复方法是什么?或者我应该升级到可能解决这个问题的最新 TF?
我使用以下方法找到了解决方法:
lifecycle {
ignore_changes = [root_block_device[0].kms_key_id]
}
然而这很烦人,哈哈,不知道为什么这是必需的,但想要一些输入。
对此没有解决方法或修复方法。这就是它的工作原理。对 KmsKeyId 的更改需要 替换 ,您无法更改此行为。
因此您必须从给定的 EBS 卷备份数据,进行替换,然后将数据复制回来。
如果您添加:
lifecycle {
ignore_changes = [
root_block_device[0].kms_key_id,
security_groups
]
}
最初的创作会发生,但更新不会强制Destroy/Create
这允许更新实例,而无需强制替换。即:标签等。不幸的是,它会阻止更新 SG。
我有一个部署 50 多个虚拟机的脚本;它并不总是在第一次尝试时就成功。希望这有助于...
我有一个奇怪的问题,我创建了“aws_kms_keys”,它很好并且工作正常,然后我使用以下代码将创建的密钥分配给我的 ebs_block:
#root disk
root_block_device {
volume_size = "120"
volume_type = "gp2"
encrypted ="true"
kms_key_id = aws_kms_key.aws-wm-wmad-prod.key_id
delete_on_termination = true
}
然而,如果我 运行 terraform apply 它将尝试在创建后替换整个实例。 ~ kms_key_id = "arn:aws:kms:us-east-1:1433:key/9c93acdd-etc" -> "9c93acdd-etc" # forces replacement
我正在使用 TF 版本 0.14.7 和提供程序版本 3.72.0 很好奇这个问题的解决方法或修复方法是什么?或者我应该升级到可能解决这个问题的最新 TF?
我使用以下方法找到了解决方法:
lifecycle {
ignore_changes = [root_block_device[0].kms_key_id]
}
然而这很烦人,哈哈,不知道为什么这是必需的,但想要一些输入。
对此没有解决方法或修复方法。这就是它的工作原理。对 KmsKeyId 的更改需要 替换 ,您无法更改此行为。
因此您必须从给定的 EBS 卷备份数据,进行替换,然后将数据复制回来。
如果您添加:
lifecycle {
ignore_changes = [
root_block_device[0].kms_key_id,
security_groups
]
}
最初的创作会发生,但更新不会强制Destroy/Create 这允许更新实例,而无需强制替换。即:标签等。不幸的是,它会阻止更新 SG。
我有一个部署 50 多个虚拟机的脚本;它并不总是在第一次尝试时就成功。希望这有助于...