Terraform & GCP: Как провести инвентаризацию текущих дисков?
Моя цель - использовать функцию terraform "google_compute_snapshot" ( https://www.terraform.io/docs/providers/google/r/compute_snapshot.html) для планирования ежедневных снимков для всех дисков в проекте.
Мы будем исходить из того, что все виртуальные машины будут создаваться с использованием terraform на протяжении всего жизненного цикла проекта. Как мне создать список доступных дисков, чтобы я мог передать этот список аргументу "source_disk"?
Спасибо!
1 ответ
Когда этот пост был создан, в GCP не было функции для запланированных снимков, эта функция была реализована в августе 2019 года как GA.
В настоящее время очень легко запланировать моментальный снимок с помощью пользовательского интерфейса или gcloud.
Например, в пользовательском интерфейсе вы можете выполнить следующие шаги:
- В консоли Google Cloud перейдите на страницу снимков.
- Вверху страницы нажмите "Создать расписание снимков".
- Введите название расписания.
- Выберите регион для расписания моментальных снимков. Ваши постоянные диски должны находиться в зонах, которые находятся в области, содержащей расписание моментальных снимков.
- При желании выберите местоположение снимка или примите выбор по умолчанию.
- Выберите периодичность расписания.
- Введите количество дней, по истечении которых будет выполнено автоматическое удаление снимков.
- Выберите правило удаления, чтобы определить, что произойдет со снимками, если исходный диск расписания будет удален.
- Выберите количество дней для хранения снимков, созданных по этому расписанию.
- Если вы используете Windows, вы можете включить VSS.
- При желании укажите любые соответствующие метки, которые вы хотите применить к этим снимкам.
- Щелкните Создать, чтобы создать расписание моментальных снимков.
Я следил за следующей документацией
Также вы можете использовать
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
С другой стороны, у нас есть Resource: 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