Terraform 在每个 Terraform 应用上创建一个新的 EBS 快照

标签 terraform continuous-deployment

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

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

例如。

Terraform Apply Execution 1 - 成功拍摄快照。
Terraform Apply Execution 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 快照?

最佳答案

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

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

关于Terraform 在每个 Terraform 应用上创建一个新的 EBS 快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55350091/

相关文章:

heroku - 如何关闭部署在 Heroku 上的应用程序?

amazon-web-services - 代码部署 : Script at specified location: scripts/stop_server run as user root failed with exit code 1

terraform - 将字符串追加到Terraform中的列表的每个元素

cloudbees - 我希望在 CloudBees 上部署零停机时间 - 但我的应用程序需要预热

continuous-integration - Gitlab CI 部署失败 : "bash: pm2: command not found" during gitlab-ci. yml 运行

amazon-web-services - 如何触发Terraform上传新的Lambda代码

mysql - 如何在 devops 管道中持续交付数据库更改

amazon-ec2 - 无法通过 Terraform 创建 AWS 安全组

terraform - 重命名从 terraform 模块创建的每个子网的私有(private)子网 "Name"属性

amazon-web-services - 找不到与 ID 为 vpc 的 vpc 匹配的子网