Начало работы с Packer
Packer
Packer создаст и запустит виртуальную машину с ОС Debian 11 из Cloud Marketplace, на которую будет установлен веб-сервер nginx
Чтобы создать образ:
- Подготовьте облако к работе.
- Установите Packer.
- Подготовьте конфигурацию образа.
- Создайте образ.
- Проверьте образ.
Если созданный образ больше не нужен, удалите его.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Настройте окружение и инфраструктуру
-
Установите интерфейс командной строки Yandex Cloud.
Совет
Если вы работаете с облаком с помощью федеративного аккаунта и хотите использовать CLI изнутри ВМ, аутентифицируйтесь в CLI от имени сервисного аккаунта.
-
Создайте в вашем каталоге облачную сеть с одной подсетью.
-
Получите OAuth-токен
для аккаунта на Яндексе или IAM-токен для федеративного аккаунта.
Необходимые платные ресурсы
В стоимость создания образа диска с помощью Packer входит:
- плата за хранение созданных образов (см. тарифы Yandex Compute Cloud);
- плата за вычислительные ресурсы ВМ (см. тарифы Yandex Compute Cloud).
Установите и настройте Packer
Важно
Для работы с Yandex Cloud требуется Packer версии не ниже 1.5.
Избегайте установки Packer с помощью популярных пакетных менеджеров, например Homebrew или APT. В их репозиториях могут быть размещены устаревшие версии.
Вы можете установить Packer из зеркала или с сайта HashiCorp.
Из зеркала
Установите дистрибутив Packer для вашей платформы из зеркала
-
Скачайте дистрибутив 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 см. в зеркале . -
Добавьте Packer в переменную
PATH
:-
Добавьте в файл
.profile
строку:export PATH="$PATH:/home/<имя_пользователя>/packer"
-
Сохраните изменения.
-
Перезапустите оболочку:
exec -l $SHELL
-
-
Убедитесь, что Packer установлен:
packer --version
Результат:
Packer v1.11.2
-
Создайте папку
packer
. -
Скачайте дистрибутив Packer из зеркала
и распакуйте в папкуpacker
. -
Добавьте папку
packer
в переменнуюPATH
:- Нажмите кнопку Пуск и в строке поиска Windows введите Изменение системных переменных среды.
- Справа снизу нажмите кнопку Переменные среды....
- В открывшемся окне найдите параметр
PATH
и нажмите Изменить. - Добавьте путь до папки
packer
в список. - Нажмите кнопку ОК.
-
Запустите новую сессию командной строки и убедитесь, что Packer установлен:
packer --version
Результат:
Packer v1.11.2
-
Скачайте дистрибутив 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 см. в зеркале . -
Добавьте Packer в переменную
PATH
:echo 'export PATH="$PATH:$HOME/<имя_пользователя>/packer"' >> ~/.bash_profile source ~/.bash_profile
-
Перезапустите оболочку:
exec -l $SHELL
-
Убедитесь, что Packer установлен:
packer --version
Результат:
Packer v1.11.2
С сайта HashiCorp
Скачайте и установите дистрибутив Packer по инструкции на официальном сайте
Настройте плагин Yandex Compute Builder
Чтобы настроить плагин
-
Создайте файл
config.pkr.hcl
со следующим содержанием:packer { required_plugins { yandex = { version = ">= 1.1.2" source = "github.com/hashicorp/yandex" } } }
-
Установите плагин:
packer init <путь_к_файлу_config.pkr.hcl>
Результат:
Installed plugin github.com/hashicorp/yandex v1.1.2 in ...
Подготовьте конфигурацию образа
-
Узнайте идентификатор каталога.
-
Узнайте идентификатор подсети.
-
Подготовьте идентификатор подсети, выполнив команду
yc vpc subnet list
. -
Создайте JSON-файл с любым именем, например,
image.json
. Запишите туда следующую конфигурацию:{ "builders": [ { "type": "yandex", "token": "<OAuth-токен_или_IAM-токен>", "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" ] } ] }
Где:
token
— OAuth-токен для аккаунта на Яндексе или IAM-токен для федеративного аккаунта.folder_id
— идентификатор каталога, в котором будет создана ВМ и ее образ.subnet_id
— идентификатор подсети, в которой будет создана ВМ и ее образ.
Важно
В конфигурационном файле нельзя одновременно использовать параметры provisioner "shell"
и metadata
.
Подробнее о параметрах конфигурации образа см. в документации Yandex Compute Builder
Создайте образ
-
Запустите сборку образа с указанными в конфигурации параметрами:
packer build image.json
-
Дождитесь завершения сборки:
... ==> 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
Проверьте созданный образ
Убедитесь, что образ создан:
- Перейдите в консоль управления
. - Выберите сервис Compute Cloud.
- Откройте раздел
Образы. Убедитесь, что там появился новый образ диска.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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 |
+----------------------+--------------------------------------+-------------------+----------------------+--------+
Удалите созданные ресурсы
Если созданный образ вам больше не нужен, удалите его.
Удалите подсеть и облачную сеть, если вы их создавали специально для выполнения руководства.