gpt4 book ai didi

amazon-web-services - 使用 Terraform 从快照创建 RDS 实例

转载 作者:行者123 更新时间:2023-12-04 17:30:17 24 4
gpt4 key购买 nike

在 Terraform 项目中,我通过抓取和使用最新的生产数据库快照来创建 RDS 集群:

# Get latest snapshot from production DB
data "aws_db_snapshot" "db_snapshot" {
most_recent = true
db_instance_identifier = "${var.db_instance_to_clone}"
}

#Create RDS instance from snapshot
resource "aws_db_instance" "primary" {
identifier = "${var.app_name}-primary"
snapshot_identifier = "${data.aws_db_snapshot.db_snapshot.id}"
instance_class = "${var.instance_class}"
vpc_security_group_ids = ["${var.security_group_id}"]
skip_final_snapshot = true
final_snapshot_identifier = "snapshot"
parameter_group_name = "${var.parameter_group_name}"
publicly_accessible = true
timeouts {
create = "2h"
}
}

这种方法的问题在于,在运行 terraform 代码之后(拍摄另一个快照后)想要使用数据库的最新快照重新创建主 RDS 实例(以及随后的只读副本)。我正在考虑指定第一次运行的 bool 计数参数,但设置 count = 0在快照资源上导致 db 资源的 snapshot_id 参数出现问题。同样设置一个 count = 0在 db 资源上将表明它会破坏 db。

用例是能够对此 terraform 计划管理的生产基础架构的其他方面进行更改,而无需重新创建整个 RDS 集群,这是销毁/创建非常耗时的资源。

最佳答案

尝试放置一个 ignore_changes您的 aws_db_instance 中的生命周期块定义:

lifecycle {
ignore_changes = [
"snapshot_identifier",
]
}

这将导致 Terraform 只查找对数据库 snapshot_identifier 的更改。在最初创建时。

如果数据库已经存在,Terraform 将忽略对现有数据库 snapshot_identifier 的任何更改。字段——即使从那时起已经创建了新的快照。

关于amazon-web-services - 使用 Terraform 从快照创建 RDS 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51486890/

24 4 0
文章推荐: wpf - 在后面的代码中设置一个 AutomationProperties.AutomationId
文章推荐: javascript - 到达部分时从垂直滚动更改为水平滚动
文章推荐: r - 预测 cv.glmnet 为每一行 r 提供相同的值
文章推荐: object - 为什么 HTML anchor 标记不包装可缩放的 SVG