Terraform и GCP: Как получить инвентарь текущих дисков?

Моя цель - использовать функцию "google_compute_snapshot" в terraform ( https://www.terraform.io/docs/providers/google/r/compute_snapshot.html ) для планирования ежедневных снимков для все диски в проекте.

Мы будем делать предположение, что все ВМ ' s будут создаваться с использованием terraform на протяжении всего жизненного цикла проекта. Как мне создать список доступных дисков, чтобы передать этот список аргументу "source_disk"?

Спасибо!

1
задан 2 October 2018 в 22:40
2 ответа

Чтобы сгенерировать список доступных дисков в вашем проекте, вы можете запустить команду gcloud ниже:

gcloud compute disks list --format="csv[no-heading](name,zone)"

Эта команда выведет список в формате csv, включая только имя и зону без заголовка , если вы хотите, чтобы это было как Json или table, это тоже можно сделать. см. документацию

Если вы хотите поместить информацию в файл, вам нужно просто добавить >> [имя файла] в конце команды gcloud.

Вы можете увидеть все возможные поля, введя

gcloud compute disks list --format=flattened
0
ответ дан 4 December 2019 в 03:39

Когда создавалось это сообщение, в GCP не было функции для запланированных моментальных снимков, эта функция была реализована в августе 2019 года как общедоступная версия.

В настоящее время очень легко запланировать моментальный снимок с помощью пользовательского интерфейса или gcloud.

Например, в пользовательском интерфейсе можно выполнить следующие шаги:

  1. В Google Cloud Console перейдите на страницу Снимки.
  2. В верхней части страницы нажмите «Создать расписание моментальных снимков».
  3. Введите название расписания.
  4. Выберите регион для расписания снимков. Ваши постоянные диски должны находиться в зонах, которые находятся в регионе, содержащем расписание моментальных снимков.
  5. При желании выберите местоположение для снимка или примите выбор по умолчанию.
  6. Выберите частоту расписания.
  7. Введите количество дней, через которое снимки будут автоматически удаляться.
  8. Выберите правило удаления, чтобы определить, что произойдет с моментальными снимками при удалении исходного диска расписания.
  9. Выберите количество дней, в течение которых будут храниться моментальные снимки, созданные по этому расписанию.
  10. Если вы используете Windows, вы можете включить VSS.
  11. При необходимости укажите любые соответствующие метки, которые вы хотите применить к этим снимкам.
  12. Нажмите «Создать», чтобы создать расписание снимков.

Я следил за следующей документацией

Также вы можете использовать команду 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

1
ответ дан 19 August 2020 в 17:32

Теги

Похожие вопросы