Установка и начало работы с Packer на сервере Ubuntu 12.04

Что такое 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: ,

Добавить комментарий