Установка и начало работы с Packer на сервере Ubuntu 12.04
Ubuntu | Комментировать запись
Что такое Packer?
Packer – это средство с открытым кодом, предназначенное для создания образов машины с предварительно настроенной операционной системой и установленным программным обеспечением. Packer работает на всех основных операционных системах и позволяет создавать образы на нескольких платформах параллельно.
Примечание: При помощи Packer можно создать образы для таких популярных платформ, как Amazon EC2, DigitalOcean, OpenStack, VirtualBox и VMware. Кроме того, Packer предоставляет плагины для поддержки других платформ.
Данное руководство поможет установить и начать работу с Packer на виртуальном выделенном сервере Ubuntu 12.04.
Примечание: Для выполнения руководства нужен доступ к sudo.
Установка Packer
Сначала нужно выбрать пакет, подходящий для текущей системы. Packer предоставляет пакеты для систем Linux, Mac OS X, Windows, FreeBSD и OpenBSD.
Откройте эту ссылку и выберите ссылку на версию 386. Затем при помощи терминала перейдите в каталог root, создайте папку packer и откройте её:
cd ~/
mkdir packer
cd packer
Чтобы загрузить пакет, используйте команду:
wget https://dl.bintray.com/mitchellh/packer/0.3.6_linux_386.zip
Примечание: Скопированная вами ссылка может отличаться от ссылки в этой команде.
Эта команда загрузит zip-файл, который нужно распаковать при помощи команды:
sudo unzip 0.3.6_linux_386.zip
Примечание: При необходимости откорректируйте имя загруженного файла.
Если при выполнении команды произошла ошибка, значит, утилита unzip не установлена; чтобы установить её, введите:
sudo apt-get install unzip
Затем попробуйте снова распаковать архив. В каталоге появится несколько файлов Packer. После этого нужно добавить этот каталог в переменную PATH. Для этого отредактируйте файл .bashrc в каталоге root.
nano ~/.bashrc
В конец файла внесите строку:
export PATH=$PATH:~/packer/
Сохраните и закройте файл, а затем перезапустите VPS:
reboot
Если соединение было сброшено, создайте новое SSH-подключение и запустите следующую команду, чтобы убедиться, что установка Packer прошла успешно:
packer
При возникновении ошибки «command not found» просмотрите все вышеуказанные действия и убедитесь, что вы все сделали должным образом. Если же на экране появились сведения о Packer – установка прошла спешно.
Создание образов
После завершения установки попробуйте создать образ машины при помощи Packer. Для этого нужно иметь Client ID и ключ API.
Создайте конфигурационный файл json, в котором можно будет определить конфигурацию образа; такие файлы называются шаблонами. Создайте файл в каталоге, хранящем установку Packer (в данном руководстве файл называется foo.json).
nano ~/packer/foo.json
Вставьте в него следующий код:
{
"builders": [{
"type": "YOUR PLATFORM",
"api_key": "YOUR API KEY",
"client_id": "YOUR CLIENT ID",
"region_id": 3
}]
}
Укажите свои данные в соответствующих полях.
Примечание: Более подробную информацию о работе Packer можно найти в официальной документации.
Теперь нужно убедиться, что в коде нет ошибок. Сохраните файл, перейдите в папку packer и запустите:
cd packer
packer validate foo.json
Если команда не вернула сообщений об ошибках, можно создать образ сервера; для этого используйте:
packer build foo.json
Этот процесс займёт 2-3 минуты. После этого Packer развернёт новый сервер согласно конфигурационному файлу. Сделайте моментальный снимок и удалите сервер. Теперь у вас есть образ сервера.
Как видите, создание образа – довольно простой процесс. Однако Packer также имеет функцию инициализации, что позволяет создавать образы систем с программным обеспечением, установленным автоматически.
Инициализация Packer
Packer позволяет устанавливать и настраивать программное обеспечение на образы машин. Эта функция называется инициализацией (или provisioning).
Для примера попробуйте автоматически установить Apache на только что созданный образ.
Инициализация настраивается в том же конфигурационном файле, что и образ машины. Отредактируйте этот файл.
nano ~/packer/foo.json
Добавьте в него следующий блок:
{
"builders": [{
"type": "YOUR PLATFORM",
"api_key": "YOUR API KEY",
"client_id": "YOUR CLIENT ID",
"region_id": 3
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"sudo apt-get update",
"sudo apt-get install -y apache2"
]
}]
}
Это стандартный provisioner, который поставляется с Packer по умолчанию и запускает скрипты в оболочке. После развёртывания нового сервера Packer создаст SSH-подключение, как только это станет возможно. Опция sleep 30 позволяет операционной системе Ubuntu выполнить загрузку, прежде чем Packer подключится через SSH и запустит скрипт, который обновит репозитории и установит Apache.
Проверьте синтаксис файла на наличие ошибок:
packer validate foo.json
Затем запустите команду:
packer build foo.json
После этого Packer развернёт сервер с автоматически установленным веб-сервером Apache. После этого Packer создаст образ. Попробуйте развернуть новый сервер на основе этого образа. Затем откройте браузер, чтобы убедиться, что всё работает должным образом. Укажите IP-адрес сервера, и Apache вернёт:
It works!
Примечание: Больше о работе Packer можно узнать из официальной документации.
Tags: Packer, Ubuntu 12.04