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