Начало работы с Packer
Packer позволяет создавать образы дисков виртуальных машин с заданными в конфигурационном файле параметрами. Сценарий описывает создание образа диска с помощью Packer.
Packer создаст и запустит виртуальную машину с ОС Debian 11 из Cloud Marketplace, на которую будет установлен веб-сервер nginx. Затем ВМ будет удалена и будет создан образ ее загрузочного диска. После этого диск тоже будет удален.
Чтобы создать образ:
Если созданный образ больше не нужен, удалите его.
Подготовьте облако к работе
Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
- На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.
Подробнее об облаках и каталогах.
- Установите интерфейс командной строки Yandex Cloud.
- Создайте в вашем каталоге облачную сеть с одной подсетью.
- Получите OAuth-токен.
Необходимые платные ресурсы
Оплачивается хранение созданных образов (см. тарифы Yandex Compute Cloud).
Установите Packer
Примечание
Для работы с Yandex Cloud требуется Packer версии не ниже 1.5.
Скачайте дистрибутив Packer и установите его по инструкции на официальном сайте.
Также вы можете скачать дистрибутив Packer для вашей платформы из зеркала. После загрузки добавьте путь к папке, в которой находится исполняемый файл, в переменную PATH
:
export PATH=$PATH:/path/to/packer
Подготовьте конфигурацию образа
- Подготовьте идентификатор каталога, выполнив команду
yc config list
. - Подготовьте идентификатор подсети, выполнив команду
yc vpc subnet list
. - Создайте JSON-файл с любым именем, например,
image.json
. Запишите туда следующую конфигурацию:
{
"builders": [
{
"type": "yandex",
"token": "<OAuth-токен>",
"folder_id": "<идентификатор каталога>",
"zone": "ru-central1-a",
"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"
]
}
]
}
Создайте образ
Запустите сборку образа с указанными в конфигурации параметрами:
packer build image.json
Проверьте созданный образ
Убедитесь, что образ создан:
- Перейдите в консоль управления.
- Выберите сервис Compute Cloud.
- Откройте раздел Образы. Убедитесь, что там появился новый образ диска.
Удалите созданные ресурсы
Если созданный образ вам больше не нужен, удалите его.
Удалите подсеть и облачную сеть, если вы их создавали специально для выполнения сценария.