Перейти к содержимому

Быстрый старт

Создайте неизменяемый образ ВМ с помощью Packer и плагина mws и начните с ним работать:

  1. Получите учетные данные для авторизации плагина в облачной платформе MWS одним из способов:

    Если ни один из способов авторизации не задан, а Packer запущен на виртуальной машине в сервисе Compute с привязанным сервисным аккаунтом, плагин автоматически возьмет учетные данные из сервиса метаданных.

  2. Убедитесь, что текущих квот достаточно для работы Packer. Packer автоматически создает вспомогательные ресурсы, если они не указаны в конфигурации. Все ресурсы, созданные Packer, расходуют квоты. Минимально для работы Packer необходимы виртуальная машина, сеть, подсеть и сетевой диск.

  1. Установите Packer с зеркала MWS или используйте официальный дистрибутив.

  2. Проверьте установку:

    bash
    packer version

    Пример вывода:

    bash
    Packer v1.16.0
  1. Создайте файл конфигурации Packer и добавьте в него блок packer с указанием плагина:

    hcl
    packer {
    required_plugins {
    mws = {
    version = ">= 0.6.0"
    source = "github.com/mws-cloud-platform/mws"
    }
    }
    }
  2. Установите плагин mws:

    bash
    packer init <путь к файлу конфигурации Packer>

    Packer скачает бинарный файл плагина нужной версии и установит его.

  1. Дополните конфигурацию Packer параметрами создаваемого образа:

    hcl
    packer {
    required_plugins {
    mws = {
    version = ">= 0.6.0"
    source = "github.com/mws-cloud-platform/mws"
    }
    }
    }
    variable "project" {
    type = string
    }
    variable "service_account_authorized_key_path" {
    type = string
    }
    variable "token" {
    type = string
    }
    source "mws" "example" {
    project = var.project
    # Используйте для авторизации с ключом сервисного аккаунта
    service_account_authorized_key_path = var.service_account_authorized_key_path
    # Используйте для авторизации с IAM-токеном
    token = var.token
    source_project = "<имя проекта-источника — например, mws-ubuntu>"
    source_image = "<имя образа-источника — например, mws-ubuntu-2404-lts-v20260324>"
    vm_type = "<тип виртуальной машины — например, gen-2-8>"
    disk_type = "nbs-pl2"
    disk_size = "<объем диска — например, 10 GB>"
    disk_iops = <количество IOPS — например, 1000>
    use_external_address = true
    cleanup_timeout = "<тайм-аут удаления временных ресурсов — например, 1h>"
    }
    build {
    sources = ["source.mws.example"]
    provisioner "shell" {
    inline = [
    "<команды для выполнения во временной ВМ — например, sudo snap install hello-world>",
    ]
    }
    }

    Полный список полей сборщика в репозитории плагина.

  2. Запустите сборку, выполнив команду для выбранного способа авторизации:

    • Ключ сервисного аккаунта
    • IAM-токен
    • Метаданные ВМ
    bash
    packer build \
    -var project=<идентификатор целевого проекта> \
    -var service_account_authorized_key_path=<путь к файлу с ключом сервисного аккаунта> \
    <путь к конфигурации Packer>

    Packer создаст временную ВМ из образа-источника, выполнит команды, заданные в блоках provisioner в конфигурации, и сохранит диск ВМ в качестве нового образа.

    Вы можете следить за процессом создания образа прямо в терминале. Packer выведет информацию о ходе создания ресурсов, а также потоки stdout и stderr для команд из блока provisioner "shell".

    По завершении сборки временные ресурсы, созданные Packer — ВМ, сеть, подсеть, сетевой диск, ключи шифрования — будут удалены в течение заданного тайм-аута очистки (по умолчанию — 1 час).

  3. Выведите информацию об образе, чтобы проверить его успешное создание.