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

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

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

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

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

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

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

Перед тем, как разворачивать приложения, нужно зарегистрироваться в Облаке и создать платежный аккаунт:

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

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

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

Оплачивается хранение созданных образов (см. тарифы Yandex Compute Cloud.

Установите Packer

Примечание

Для работы с Яндекс.Облаком требуется Packer версии не ниже 1.4.1.

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

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

  1. Подготовьте идентификатор каталога, выполнив команду yc config list.
  2. Подготовьте идентификатор подсети, выполнив команду yc vpc subnet list.
  3. Создайте JSON-файл с любым именем, например, image.json. Запишите туда следующую конфигурацию:
{
  "builders": [
    {
      "type":      "yandex",
      "token":     "<OAuth-токен>",
      "folder_id": "<идентификатор каталога>",
      "zone":      "ru-central1-a",

      "image_name":        "debian-9-nginx-{{isotime | clean_image_name}}",
      "image_family":      "debian-web-server",
      "image_description": "my custom debian with nginx",

      "source_image_family": "debian-9",
      "subnet_id":           "<идентификатор подсети>",
      "use_ipv4_nat":        true,
      "disk_type":           "network-nvme",
      "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"
      ]
    }
  ]
}

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

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

$ packer build image.json

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

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

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

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

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

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