Практическая работа. Создаём образ виртуальной машины

Кратко:

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

Практическая работа. Создаём образ виртуальной машины

В этой практической работе вы установите Packer, подготовите с его помощью образ, а затем создадите из образа виртуальную машину.
  1. Установите Packer. Дистрибутив для вашей платформы можно скачать из зеркала. Он поддерживает все популярные операционные системы — Windows, macOS, Linux и FreeBSD. Скачать дистрибутив Packer для вашей ОС можно, в том числе, с зеркала Yandex Cloud.
  2. Подготовьте файл в формате HCL со спецификацией образа, например my-ubuntu-nginx.pkr.hcl.
    При создании файла опирайтесь на документацию Packer.
    В качестве примера можете взять спецификацию из предыдущего урока:
    packer {
      required_plugins {
        yandex = {
          version = "~> 1"
          source  = "github.com/hashicorp/yandex"
        }
      }
    }
    
    source "yandex" "ubuntu-nginx" {
      token               = "<OAuth-токен>"
      folder_id           = "<идентификатор_каталога>"
      source_image_family = "ubuntu-2004-lts"
      ssh_username        = "ubuntu"
      use_ipv4_nat        = "true"
      image_description   = "my custom ubuntu with nginx"
      image_family        = "ubuntu-2004-lts"
      image_name          = "my-ubuntu-nginx"
      subnet_id           = "<идентификатор_подсети>"
      disk_type           = "network-ssd"
      zone                = "ru-central1-a"
    }
    
    build {
      sources = ["source.yandex.ubuntu-nginx"]
    
      provisioner "shell" {
        inline = ["sudo apt-get update -y",
                  "sudo apt-get install -y nginx",
                  "sudo systemctl enable nginx.service"]
      }
    }
 
Не забудьте подставить в спецификацию идентификаторы своего каталога и подсети (подсеть должна быть в той же зоне доступности, которая указана в параметре zone). Также укажите свой OAuth-токен (или воспользуйтесь переменной окружения YC_TOKEN при сборке образа).
  1. Запустите команду установки плагина для работы с YC
    packer init my-ubuntu-nginx.pkr.hcl
  2. Теперь создайте образ ВМ на основе файла спецификации:
    packer build <путь_к_файлу_my-ubuntu-nginx.pkr.hcl>
     
     
  3. После того как команда отработает, убедитесь, что образ появился в каталоге. Для этого в консоли управления перейдите в сервис Compute Cloud. Найдите образ на вкладке Образы.
    image
  4. Перейдите на вкладку Виртуальные машины и начните создавать ВМ.
    Раньше для создания загрузочного диска вы выбирали один из публичных образов, например Ubuntu 20.04. Теперь вместо этого переключитесь на вкладку Пользовательские. Нажмите кнопку Выбрать и в открывшемся окне переключитесь на вкладку Образ.
    Выберите созданный образ и нажмите Применить.
    Из образа создастся загрузочный диск.
    image
  5. Завершите создание ВМ.
  6. Убедитесь, что веб-сервер работает — введите IP-адрес ВМ в адресную строку браузера.
  7. Удалите ВМ, в следующих уроках она не понадобится. А вот образ удалять не стоит.

Поздравляем, вы завершили тему «Packer»