Моя цель - использовать функцию "google_compute_snapshot" terraform (https://www.terraform.io/docs/providers/google/r/compute_snapshot.html), чтобы запланировать ежедневные снимки для всех дисков в проекте.
Мы будем исходить из предположения, что все виртуальные машины будут создаваться с использованием terraform на протяжении всего жизненного цикла проекта. Как мне создать список доступных дисков, чтобы передать этот список аргументу "source_disk"?
Спасибо!
Когда был создан этот пост, в GCP не было функции запланированных снимков, эта функция была реализована в августе 2019 года как GA.
В настоящее время очень легко запланировать моментальный снимок с помощью пользовательского интерфейса или gcloud.
Например, в пользовательском интерфейсе вы можете выполнить следующие шаги:
Я следил за следующим документация
Также вы можете использовать compute resource-policies create snapshot-schedule
gcloud
команда.
gcloud compute resource-policies create snapshot-schedule [SCHEDULE_NAME] \
--description "[SCHEDULE_DESCRIPTION]" \
--max-retention-days [MAX_RETENTION_DAYS] \
--start-time [START_TIME] \
--hourly-schedule [SNAPSHOT_INTERVAL] \
--daily-schedule \
--weekly-schedule [SNAPSHOT_INTERVAL] \
--weekly-schedule-from-file [FILE_NAME] \
--on-source-disk-delete [DELETION_OPTION]
В этом примере расписание моментальных снимков начинается в 22:00 UTC и выполняется каждую неделю во вторник и четверг.
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
--description "MY WEEKLY SNAPSHOT SCHEDULE" \
--max-retention-days 10 \
--start-time 22:00 \
--weekly-schedule tuesday,thursday \
--region us-west1 \
--on-source-disk-delete keep-auto-snapshots \
--snapshot-labels env=dev,media=images \
--storage-location US
С другой стороны, у нас есть Ресурс: resourcePolicies Вы можете использовать политики ресурсов для планирования действий для некоторых ресурсов Compute Engine.
Например, вы можете использовать их для планирования моментальных снимков постоянного диска.
Представление JSON:
{
"id": string,
"creationTimestamp": string,
"selfLink": string,
"region": string,
"description": string,
"name": string,
"status": enum,
"kind": string,
// Union field policy can be only one of the following:
"snapshotSchedulePolicy": {
"schedule": {
// Union field policy can be only one of the following:
"hourlySchedule": {
"hoursInCycle": integer,
"startTime": string,
"duration": string
},
"dailySchedule": {
"daysInCycle": integer,
"startTime": string,
"duration": string
},
"weeklySchedule": {
"dayOfWeeks": [
{
"day": enum,
"startTime": string,
"duration": string
}
]
}
// End of list of possible types for union field policy.
},
"retentionPolicy": {
"maxRetentionDays": integer,
"onSourceDiskDelete": enum
},
"snapshotProperties": {
"labels": {
string: string,
...
},
"storageLocations": [
string
],
"guestFlush": boolean,
"chainName": string
}
},
"groupPlacementPolicy": {
"vmCount": integer,
"availabilityDomainCount": integer,
"collocation": enum
}
// End of list of possible types for union field policy.
}
Дополнительно вы можете увидеть следующее Почта где кто-то добавил пример для планировщика снимков GCP
Чтобы сгенерировать список доступных дисков в вашем проекте, вы можете запустить команду gcloud ниже:
gcloud compute disks list --format="csv[no-heading](name,zone)"
Эта команда принесет список в формате csv, включая только имя и зону без заголовка, если вы хотите, чтобы это было как Json или таблицу, это также можно сделать. видеть документация
Если вы хотите поместить информацию в файл, вам нужно просто добавить >> [file name]
в конце команды gcloud.
Вы можете увидеть все возможные поля, запустив
gcloud compute disks list --format=flattened