Очень странно, что я до сих пор не написал о Vagrant — инструменте создания и распространения виртуальных окружений.
Vagrant нужен для одной простой цели — тестировать выкатку и изменение конфигурции. Причем он позволяет делать это очень просто, особенно для Chef и Puppet. Vagrant — это надстройка над платформой виртуализации VirtualBox, которая позволяет легко и быстро создавать виртуальные машины по шаблону.
Работать с ним очень легко. Вы берете какой-нибудь готовый образ ОС (например, отсюда) или создаете свой, который и будет вашим шаблоном. А потом проверяете, как на этот образ накатываются ваши Chef-рецепты, причем можете делать это каждый раз с чистого листа. Конечно, образ должен быть точно такой же, который вы используете в бою, на staging-сервере, на CI-сервере и, вообще, везде. Это позволит вам выловить максимальное количество проблем до того, как они попадут на production. Более того, это гораздо удобнее, чем писать chef-рецепты «вслепую». Все, что происходит тяжело, надо делать часто, чтобы научиться делать это хорошо. Выкатка с изменением конфигурации обычно происходит тяжело. Поэтому стоит тренироваться менять конфигурацию и выкатываться, при этом желательно делать это в «песочнице», а не на сервере, который обслуживает ваших пользователей (и приносит деньги).
Итак, приступим.
1 2 3 4 | |
Теперь у вас в папке появится файл Vagrantfile. Если заглянуть в него, то в комментариях там есть неплохие заготовки того, как
настраивать vagrant. После редактирования у меня остался следующий файл.
1 2 3 4 5 6 7 8 | |
После этого прилинкуйте папку с вашими рецептами в текущую папку. В моих рецептах есть один с названием sysctl, именно его я буду тестировать.
1
| |
Запускаем vagrant.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
После этого вы можете зайти на машину командой vagrant ssh и посмотреть, что произошло, и устраивает ли вас это.
Более того, vagrant позволяет проверять выкатку конфигурации с использованием chef-server, а также выкатку на несколько машин сразу. Это может понадобиться, например, если у вас есть сервисы, связанные между собою по сети, и вам хочется проверить их совместую работу в условиях, максимально приближенных к боевым.
Vagrant — это отличный инструмент, позволяющий ленивому инженеру, не любящему приключения, достаточно быстро сделать виртуальное окружение максимально приближенное к боевому. И потом на нем тестировать изменения конфигурации и выкатку.
Даже на моем слабеньком Air’11 виртуальные машины в VirtualBox работают достаточно быстро, чтобы пользоваться Vagrant локально.