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-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 — имя нового образа;