Terraform Создает новый снимок EBS при каждом применении Terraform

#terraform #continuous-deployment

#terraform #непрерывное развертывание

Вопрос:

Я пытаюсь использовать Terraform как часть моего конвейера непрерывного развертывания. Я использую Terraform для создания снимка моего производственного тома EBS (в целях резервного копирования) перед выполнением любых других задач конвейера.

Я могу заставить terraform делать снимок, однако проблема в том, что Terraform не создает новый снимок при каждом запуске. Вместо этого он обнаруживает, что уже существует снимок, и ничего не делает.

Например.

Выполнение Terraform Apply 1 — Снимок успешно сделан. Выполнение Terraform Apply 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 при каждом запуске?

Комментарии:

1. для всех, кого это интересует, вы можете использовать интерфейс командной строки AWS, в частности команду create-snapshot, чтобы делать снимок при каждом запуске вашего конвейера. docs.aws.amazon.com/cli/latest/reference/ec2 /…

Ответ №1:

Чтобы избежать любых повторяющихся задач вручную, если вы работаете над конвейером непрерывного развертывания, одним из вариантов может быть запуск правил событий CloudWatch в соответствии с расписанием, автоматизирующим моментальные снимки Amazon EBS. Вы можете проверить это здесь, в этом руководстве, предложенном AWS в документации CloudWatch.

Вы можете использовать Amazon Data Lifecycle Manager (Amazon DLM) для автоматизации создания, хранения и удаления снимков, сделанных для резервного копирования томов Amazon EBS, всегда используя terraform, например, через aws_dlm_lifecycle_policy ресурс.

Комментарии:

1. Спасибо за советы, резервное копирование по расписанию — отличная идея, и я фактически уже использую Amazon DLM для ежедневного создания резервных копий моего производственного сервера. Однако, когда я запускаю свой конвейер непрерывного развертывания, я хотел бы, чтобы резервная копия создавалась непосредственно перед выполнением конвейера, чтобы в случае сбоя конвейера по какой-либо причине я мог восстановить сервер в его точном состоянии до операции развертывания, а не в состоянии, которое было в последний раз скопировано по расписанию. Есть идеи о том, как это сделать?

2. Я понимаю, что вы могли бы использовать AWS CLI при выполнении конвейера, давайте посмотрим.