Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Подготовьте облако к работе
  • Настройте окружение и инфраструктуру
  • Необходимые платные ресурсы
  • Установите и настройте Packer
  • Из зеркала
  • С сайта HashiCorp
  • Настройте плагин Yandex Compute Builder
  • Подготовьте конфигурацию образа
  • Создайте образ
  • Проверьте созданный образ
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Начало работы с Packer

Начало работы с Packer

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 14 мая 2025 г.
  • Подготовьте облако к работе
    • Настройте окружение и инфраструктуру
    • Необходимые платные ресурсы
  • Установите и настройте Packer
    • Из зеркала
    • С сайта HashiCorp
    • Настройте плагин Yandex Compute Builder
  • Подготовьте конфигурацию образа
  • Создайте образ
  • Проверьте созданный образ
    • Удалите созданные ресурсы

Packer позволяет создавать образы дисков виртуальных машин с заданными в конфигурационном файле параметрами. Руководство описывает создание образа диска в Yandex Compute Cloud с помощью Packer.

Packer создаст и запустит виртуальную машину с ОС Debian 11 из Cloud Marketplace, на которую будет установлен веб-сервер nginx. Затем ВМ будет удалена и будет создан образ ее загрузочного диска. После этого диск тоже будет удален.

Чтобы создать образ:

  1. Подготовьте облако к работе.
  2. Установите Packer.
  3. Подготовьте конфигурацию образа.
  4. Создайте образ.
  5. Проверьте образ.

Если созданный образ больше не нужен, удалите его.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Настройте окружение и инфраструктуруНастройте окружение и инфраструктуру

  1. Создайте в вашем каталоге облачную сеть с одной подсетью.

  2. В зависимости от типа аккаунта, от имени которого вы работаете, получите:

    • OAuth-токен для аккаунта на Яндексе.
    • IAM-токен для федеративного или сервисного аккаунтов.
  3. Убедитесь, что у вашего аккаунта достаточно прав для создания ресурсов в сервисе Compute Cloud. У вас должна быть минимальная роль compute.editor на каталог.

    Если вы работаете от имени сервисного аккаунта, назначьте ему роль compute.editor на каталог.

    Если вы хотите создавать ресурсы в других сервисах Yandex Cloud, например подсети в VPC, то также назначьте соответствующие сервисные роли.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость создания образа диска с помощью Packer входит:

  • плата за хранение созданных образов (см. тарифы Yandex Compute Cloud);
  • плата за вычислительные ресурсы ВМ (см. тарифы Yandex Compute Cloud).

Установите и настройте PackerУстановите и настройте Packer

Важно

Для работы с Yandex Cloud требуется Packer версии не ниже 1.5.

Избегайте установки Packer с помощью популярных пакетных менеджеров, например Homebrew или APT. В их репозиториях могут быть размещены устаревшие версии.

Вы можете установить Packer из зеркала или с сайта HashiCorp.

Из зеркалаИз зеркала

Установите дистрибутив Packer для вашей платформы из зеркала:

Linux
Windows
macOS
  1. Скачайте дистрибутив Packer из зеркала и распакуйте в директорию packer:

    mkdir packer
    wget https://hashicorp-releases.yandexcloud.net/packer/1.11.2/packer_1.11.2_linux_amd64.zip -P ~/packer
    unzip ~/packer/packer_1.11.2_linux_amd64.zip -d ~/packer
    

    В примере указана версия 1.11.2, актуальную версию Packer см. в зеркале.

  2. Добавьте Packer в переменную PATH:

    1. Добавьте в файл .profile строку:

      export PATH="$PATH:/home/<имя_пользователя>/packer"
      
    2. Сохраните изменения.

    3. Перезапустите оболочку:

      exec -l $SHELL
      
  3. Убедитесь, что Packer установлен:

    packer --version
    

    Результат:

    Packer v1.11.2
    
  1. Создайте папку packer.

  2. Скачайте дистрибутив Packer из зеркала и распакуйте в папку packer.

  3. Добавьте папку packer в переменную PATH:

    1. Нажмите кнопку Пуск и в строке поиска Windows введите Изменение системных переменных среды.
    2. Справа снизу нажмите кнопку Переменные среды....
    3. В открывшемся окне найдите параметр PATH и нажмите Изменить.
    4. Добавьте путь к папке в список.
    5. Нажмите кнопку ОК.
  4. Запустите новую сессию командной строки и убедитесь, что Packer установлен:

    packer --version
    

    Результат:

    Packer v1.11.2
    
  1. Скачайте дистрибутив Packer из зеркала и распакуйте в директорию packer:

    mkdir packer
    curl --location --output ~/packer/packer_1.11.2_darwin_amd64.zip https://hashicorp-releases.yandexcloud.net/packer/1.11.2/packer_1.11.2_darwin_amd64.zip
    unzip ~/packer/packer_1.11.2_darwin_amd64.zip -d ~/packer
    

    В примере указана версия 1.11.2, актуальную версию Packer см. в зеркале.

  2. Добавьте Packer в переменную PATH:

    echo 'export PATH="$PATH:$HOME/<имя_пользователя>/packer"' >> ~/.bash_profile
    source ~/.bash_profile
    
  3. Перезапустите оболочку:

    exec -l $SHELL
    
  4. Убедитесь, что Packer установлен:

    packer --version
    

    Результат:

    Packer v1.11.2
    

С сайта HashiCorpС сайта HashiCorp

Скачайте и установите дистрибутив Packer по инструкции на официальном сайте.

Настройте плагин Yandex Compute BuilderНастройте плагин Yandex Compute Builder

Чтобы настроить плагин:

  1. Создайте файл config.pkr.hcl со следующим содержанием:

    packer {
      required_plugins {
        yandex = {
          version = ">= 1.1.2"
          source  = "github.com/hashicorp/yandex"
        }
      }
    }
    
  2. Установите плагин:

    packer init <путь_к_файлу_config.pkr.hcl>
    

    Результат:

    Installed plugin github.com/hashicorp/yandex v1.1.2 in ...
    

Подготовьте конфигурацию образаПодготовьте конфигурацию образа

  1. Узнайте идентификатор каталога.

  2. Узнайте идентификатор подсети и зону доступности, в которой она расположена.

  3. Создайте JSON-файл с любым именем, например: image.json. Запишите туда следующую конфигурацию:

    {
      "builders": [
        {
          "type":      "yandex",
          "token":     "<OAuth-токен_или_IAM-токен>",
          "folder_id": "<идентификатор_каталога>",
          "zone":      "<зона_доступности>",
    
          "image_name":        "debian-11-nginx-{{isotime | clean_resource_name}}",
          "image_family":      "debian-web-server",
          "image_description": "my custom debian with nginx",
    
          "source_image_family": "debian-11",
          "subnet_id":           "<идентификатор_подсети>",
          "use_ipv4_nat":        true,
          "disk_type":           "network-ssd",
          "ssh_username":        "debian"
        }
      ],
      "provisioners": [
        {
          "type": "shell",
          "inline": [
            "echo 'updating APT'",
            "sudo apt-get update -y",
            "sudo apt-get install -y nginx",
            "sudo su -",
            "sudo systemctl enable nginx.service",
            "curl localhost"
          ]
        }
      ]
    }
    

    Где:

    • token — OAuth-токен для аккаунта на Яндексе или IAM-токен для федеративного или сервисного аккаунтов.
    • folder_id — идентификатор каталога, в котором будет создана ВМ и ее образ.
    • zone — зона доступности, в которой будет создана ВМ. Например: ru-central1-d.
    • subnet_id — идентификатор подсети, в которой будет создана ВМ и ее образ.

Важно

В конфигурационном файле нельзя одновременно использовать параметры provisioner "shell" и metadata.

Подробнее о параметрах конфигурации образа см. в документации Yandex Compute Builder.

Создайте образСоздайте образ

  1. Запустите сборку образа с указанными в конфигурации параметрами:

    packer build image.json
    
  2. Дождитесь завершения сборки:

    ...
    ==> Wait completed after 2 minutes 43 seconds
    ==> Builds finished. The artifacts of successful builds are:
    --> yandex: A disk image was created: debian-11-nginx-2024-08-26t15-30-39z (id: fd82d63b9bgc********) with family name debian-web-server
    

Проверьте созданный образПроверьте созданный образ

Убедитесь, что образ создан:

Консоль управления
CLI
  1. Перейдите в консоль управления.
  2. Выберите сервис Compute Cloud.
  3. Откройте раздел Образы. Убедитесь, что там появился новый образ диска.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Выполните команду:

yc compute image list

Результат:

+----------------------+--------------------------------------+-------------------+----------------------+--------+
|          ID          |                 NAME                 |      FAMILY       |     PRODUCT IDS      | STATUS |
+----------------------+--------------------------------------+-------------------+----------------------+--------+
| fd82d63b9bgc******** | debian-11-nginx-2024-08-26t15-30-39z | debian-web-server | f2eerqfup7lg******** | READY  |
+----------------------+--------------------------------------+-------------------+----------------------+--------+

Удалите созданные ресурсыУдалите созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  • Удалите созданный образ.
  • Удалите подсеть и облачную сеть, если вы их создавали специально для выполнения руководства.

Была ли статья полезна?

Предыдущая
Развертывание Remote Desktop Gateway
Следующая
Передача логов с ВМ в Yandex Cloud Logging
Проект Яндекса
© 2025 ООО «Яндекс.Облако»