Packer by HashiCorp#

Вы можете использовать Packer 1.5.x для автоматизации создания модифицированных образов.

Установка и настройка#

Скачать и распаковать исполняемый файл Packer версии 1.5.x для целевой ОС и архитектуры процессора. Если официальная страница будет недоступна, скачайте дистрибутив. Для использования Packer необходимо заранее выделить публичный адрес и импортировать публичный SSH-ключ.

Пример файла-шаблона#

В данном примере используется образ Fedora 28 [Cloud Images] для создания модифицированного образа с использованием Shell Provisioner и Amazon-EBS Builder. Файл конфигурации, в котором описывается создаваемый образ, в терминологии Packer называется файлом-шаблоном и представляет собой JSON-файл.

template_fedora.json
{
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "<my_ec2_access_key>",
    "secret_key": "<my_ec2_secret_key>",
    "skip_region_validation": true,
    "availability_zone": "ru-msk-vol51",
    "subnet_id": "<subnet_id>",
    "ssh_keypair_name": "cloud_key",
    "ssh_private_key_file": "/home/test_user/.ssh/cloud_key",
    "custom_endpoint_ec2": "https://ec2.k2.cloud",
    "source_ami": "cmi-3214AD17",
    "instance_type": "m2.small",
    "ssh_username": "ec2-user",
    "ami_name": "fedora_modified_cmi",
  }],
  "provisioners" : [{
    "script": "./setup.sh",
    "type": "shell"
  }]
}
setup.sh
#!/bin/sh

echo "have fun!¡" >> ~/.bash_profile

В настоящее время поддерживается только amazon-ebs builder. Подробнее про особенности создания файлов-шаблонов можно прочитать в документации. В приведённом выше примере template_fedora.json используются следующие параметры:

  • access_key и secret_key — ключи доступа API, получение которых описано в документации;

  • skip_region_validation — необходимо передать значение True, чтобы пропустить этап валидации имени региона;

  • availability_zone — одна из доступных зон доступности для запуска экземпляра;

  • subnet_id — идентификатор подсети, в которой будет запущен экземпляр;

  • ssh_keypair_name — имя импортированного SSH-ключа;

  • ssh_private_key_file — путь до приватного SSH-ключа;

  • custom_endpoint_ec2 — адрес EC2 API К2 Облака;

  • source_ami — идентификатор базового образа;

  • instance_type — тип экземпляра, который будет запущен в процессе создания образа;

  • ssh_username — имя пользователя для установления соединения SSH;

  • ami_name — имя нового образа;