.. _PackerManual:
###################
Packer by HashiCorp
###################
Вы можете использовать `Packer 1.5.x `_ для автоматизации создания модифицированных образов.
*********************
Установка и настройка
*********************
`Скачать `__ и распаковать исполняемый файл Packer версии 1.5.x для целевой ОС и архитектуры процессора.
Если официальная страница будет недоступна, `скачайте дистрибутив `_.
Для использования Packer необходимо заранее выделить публичный адрес и импортировать публичный SSH-ключ.
********************
Пример файла-шаблона
********************
В данном примере используется образ *Fedora 28 [Cloud Images]* для создания модифицированного образа с использованием Shell Provisioner и Amazon-EBS Builder.
Файл конфигурации, в котором описывается создаваемый образ, в терминологии Packer называется файлом-шаблоном и представляет собой JSON-файл.
.. dropdown:: ``template_fedora.json``
:open:
.. code-block:: json
{
"builders": [{
"type": "amazon-ebs",
"access_key": "",
"secret_key": "",
"skip_region_validation": true,
"region": "croc",
"availability_zone": "ru-msk-vol51",
"subnet_id": "",
"ssh_keypair_name": "cloud_key",
"ssh_private_key_file": "/home/test_user/.ssh/cloud_key",
"custom_endpoint_ec2": "https://api.cloud.croc.ru",
"source_ami": "cmi-3214AD17",
"instance_type": "m2.small",
"ssh_username": "ec2-user",
"ami_name": "fedora_modified_cmi",
}],
"provisioners" : [{
"script": "./setup.sh",
"type": "shell"
}]
}
.. dropdown:: ``setup.sh``
:open:
.. code-block:: sh
#!/bin/sh
echo "have fun!¡" >> ~/.bash_profile
В настоящее время поддерживается только `amazon-ebs builder `_.
Подробнее про особенности создания файлов-шаблонов можно прочитать `в документации `_.
В приведённом выше примере ``template_fedora.json`` используются следующие параметры:
- *access_key* и *secret_key* — ключи доступа API, получение которых описано в :ref:`документации `;
- *skip_region_validation* — необходимо передать значение ``True``, чтобы пропустить этап валидации имени региона;
- *region* — поддерживаемый регион (только ``croc``);
- *availability_zone* — одна из доступных зон доступности для запуска экземпляра;
- *subnet_id* — идентификатор подсети, в которой будет запущен экземпляр;
- *ssh_keypair_name* — имя импортированного SSH-ключа;
- *ssh_private_key_file* — путь до приватного SSH-ключа;
- *custom_endpoint_ec2* — адрес EC2 API Облака КРОК;
- *source_ami* — идентификатор базового образа;
- *instance_type* — тип экземпляра, который будет запущен в процессе создания образа;
- *ssh_username* — имя пользователя для установления соединения SSH;
- *ami_name* — имя нового образа;