#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 при выполнении конвейера, давайте посмотрим.