Быстрый старт
Создайте неизменяемый образ ВМ с помощью Packer и плагина mws и начните с ним работать:
- Установите плагин mws для Packer.
Перед началом работы
Заголовок раздела «Перед началом работы»Получите учетные данные для авторизации плагина в облачной платформе MWS одним из способов:
Если ни один из способов авторизации не задан, а Packer запущен на виртуальной машине в сервисе Compute с привязанным сервисным аккаунтом, плагин автоматически возьмет учетные данные из сервиса метаданных.
Убедитесь, что текущих квот достаточно для работы Packer. Packer автоматически создает вспомогательные ресурсы, если они не указаны в конфигурации. Все ресурсы, созданные Packer, расходуют квоты. Минимально для работы Packer необходимы виртуальная машина, сеть, подсеть и сетевой диск.
1. Установите Packer
Заголовок раздела «1. Установите Packer»Установите Packer с зеркала MWS или используйте официальный дистрибутив.
Проверьте установку:
bash packer versionПример вывода:
bash Packer v1.16.0
2. Установите плагин mws
Заголовок раздела «2. Установите плагин mws»Создайте файл конфигурации Packer и добавьте в него блок
packerс указанием плагина:hcl packer {required_plugins {mws = {version = ">= 0.6.0"source = "github.com/mws-cloud-platform/mws"}}}Установите плагин mws:
bash packer init <путь к файлу конфигурации Packer>Packer скачает бинарный файл плагина нужной версии и установит его.
3. Создайте образ с помощью плагина
Заголовок раздела «3. Создайте образ с помощью плагина»Дополните конфигурацию 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.tokensource_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 = truecleanup_timeout = "<тайм-аут удаления временных ресурсов — например, 1h>"}build {sources = ["source.mws.example"]provisioner "shell" {inline = ["<команды для выполнения во временной ВМ — например, sudo snap install hello-world>",]}}Полный список полей сборщика в репозитории плагина.
Запустите сборку, выполнив команду для выбранного способа авторизации:
- Ключ сервисного аккаунта
- IAM-токен
- Метаданные ВМ
bash packer build \-var project=<идентификатор целевого проекта> \-var service_account_authorized_key_path=<путь к файлу с ключом сервисного аккаунта> \<путь к конфигурации Packer>Packer создаст временную ВМ из образа-источника, выполнит команды, заданные в блоках
provisionerв конфигурации, и сохранит диск ВМ в качестве нового образа.Вы можете следить за процессом создания образа прямо в терминале. Packer выведет информацию о ходе создания ресурсов, а также потоки stdout и stderr для команд из блока
provisioner "shell".По завершении сборки временные ресурсы, созданные Packer — ВМ, сеть, подсеть, сетевой диск, ключи шифрования — будут удалены в течение заданного тайм-аута очистки (по умолчанию — 1 час).
Выведите информацию об образе, чтобы проверить его успешное создание.