我目前正在尝试使用 TF + AWS(RDS - Aurora)实施 PITR,但由于状态不一致而陷入困境。
我的 RDS 模块如下所示:
module "aurora_db_green" {
#checkov:skip=CKV_TF_1: Ensure Terraform module sources use a commit hash
source = "terraform-aws-modules/rds-aurora/aws"
version = "7.6.0"
[...]
restore_to_point_in_time = var.restore_enabled ? {
restore_to_time = var.rds_pitr_time
source_cluster_identifier = var.cluster_id
} : {}
[...]
}
所以,我想根据这个var是否是
restore_enaled = true
来执行恢复。恢复在我的管道中成功发生,但是当我重新运行 terraform apply 时,会看到漂移,我猜是因为 restore_enaled = false
,然后导致 restore_to_point_in_time = {}
有任何解决方法或任何其他人能想到的选择吗?我尝试了很多方法,但都导致了同样的问题...我真的很想尝试让 PITR 使用这个条件。
提前致谢。
在这种情况下可能有用的是使用
lifecycle
元参数。在您的示例中,可行的方法如下:
module "aurora_db_green" {
#checkov:skip=CKV_TF_1: Ensure Terraform module sources use a commit hash
source = "terraform-aws-modules/rds-aurora/aws"
version = "7.6.0"
[...]
restore_to_point_in_time = var.restore_enabled ? {
restore_to_time = var.rds_pitr_time
source_cluster_identifier = var.cluster_id
} : {}
[...]
lifecycle {
ignore_changes = [
restore_to_point_in_time
]
}
}