Packer by HashiCorp
In this article:
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-comp1p",
    "subnet_id": "<subnet_id>",
    "ssh_keypair_name": "cloud_key",
    "ssh_private_key_file": "/home/test_user/.ssh/cloud_key",
    "custom_endpoint_ec2": "https://ec2.ru-msk.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 — имя нового образа;