【问题标题】:Terraform Create a New EBS Snapshot on each Terraform applyTerraform 在每个 Terraform 应用上创建一个新的 EBS 快照
【发布时间】:2019-08-16 10:04:32
【问题描述】:

我正在尝试将 Terraform 用作我的持续部署管道的一部分。在执行任何其他管道任务之前,我正在使用 Terraform 创建我的生产 EBS 卷的快照(用于备份目的)。

我可以让 terraform 拍摄快照,但问题是 Terraform 不会在每次运行时创建新快照。相反,它检测到已经存在一个快照并且什么都不做。

例如。

Terraform Apply Execution 1 - 已成功拍摄快照。 Terraform 应用执行 2 - 未拍摄快照。

下面提供了我用于 Terraform 的代码。

provider "aws" {
  access_key = "..."
  secret_key = "..."
  region     = "..."
}

resource "aws_ebs_snapshot" "example_snapshot" {

  volume_id = "vol-xyz"

  tags = {
    Name = "continuous_deployment_backup"
  }

}

有谁知道我如何强制 Terraform 在每次运行时创建一个新的 EBS 快照?

【问题讨论】:

标签: terraform continuous-deployment


【解决方案1】:

如果您正在处理持续部署管道,为避免任何重复性和手动任务,可以选择根据自动化 Amazon EBS 快照的计划运行 CloudWatch Events 规则。 您可以查看 AWS 在其 CloudWatch 文档中建议的 here in this tutorial

您也可以使用 Amazon Data Lifecycle Manager (Amazon DLM) 自动创建、保留和删除用于备份 Amazon EBS 卷的快照,例如始终通过 aws_dlm_lifecycle_policy resource 使用 terraform。

【讨论】:

  • 感谢您的提示,按计划备份是个好主意,实际上我已经使用 Amazon DLM 每天备份我的生产服务器。但是,当我运行我的持续部署管道时,我希望在管道执行之前立即进行备份,因此如果管道由于某种原因失败,我可以将服务器恢复到部署操作之前的确切状态,而不是状态上次按计划备份。关于如何做到这一点的任何想法?
  • 我明白了,所以您可以在管道执行中使用 AWS CLI,让我们看看。
猜你喜欢
  • 2019-04-06
  • 2019-07-11
  • 2019-04-07
  • 1970-01-01
  • 2018-09-04
  • 2020-07-27
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
相关资源
最近更新 更多