Создание базовых сборок

ca2eed5800a20b1069431563317f3a09

Несмотря на то, что сообщество уже позаботилось о наиболее распространенных образах операционных систем, тебе вполне может понадобиться иметь свою особенную сборку. Из соображений безопасности (а вдруг хакер Вася добавил свою магию в одну из сборок, лежащих в Сети), необходимости каких-то особенных настроек или просто из интереса — неважно, главное, что такая возможность есть. И здесь нам поможет гем veewee (https:// github.com/jediuever/veewee), созданный специально для этих целей.
Для начала установим его:
$ gem install veewee
Репозиторий veewee содержит большое количество шаблонов: https://gi thub.com/jedi4ever/veewee/tree/ma5ter/template5. Выберем интересующий нас — пусть это будет последняя версия Ubuntu Server. Теперь создадим новую базовую сборку на основе этого шаблона:
$ veewee vbox define myubuntubox — «ubuntu — 12.10 — server — i386»
В результате у нас появится новое «определение» бейс — бокса. В папке definitrons/myubuntubox содержатся файлы, описывающие нашу виртуальную машину:
•definition.rb;
•postinstall.sh;
•preseed.cfg.
Немного поправим конфигурацию виртуалки:
Veewee::Session.declare(( :cpu_count => ‘1’, :memory_size=> ‘1024’, :disk_size => ‘10140’, :disk_format ‘VDI’, :hostiocache => ‘off, : os_type_id => ‘Ubuntu’,
:iso_file => «ubuntu — 12.10 — server — i386.iso», :iso_src => «http://releases.ubuntu.eom/12.10/f
ubuntu — 12.10 — server — i386.iso», :iso_md5 => «b3d4d4edfC8f291af0b83f8a2bal9a2f’, :iso_download_timeout => «1000», :boot_wait => «4», :boot_cmd_sequence => [
‘,
‘/install/vmlinuz noapic preseed/url=
http://%IP%:%PORT%/preseed.cfg ‘,
«debian — installer=en_US auto locale=en_US —
kbd — chooser/method=us ‘,
‘hostname=%NAME% ‘,
‘fb=false debconf/frontend=noninteractive ‘, ‘keyboard — configuration/modelcode=SKIP — keyboard — configuration/layout=us keyboard — configuration/variant=us console — setup/ — ask_detect=false ‘, ‘initrd=/install/initrd.gz — — ‘
],
:kickstart_port => «7122», :kickstart_timeout =>-> «10000», :kickstart_file => «preseed.cfg», :ssh_login_timeout => «10000», :ssh_user => «vagrant»,-> :ssh_password => «vagrant», — :ssh_key => «», :ssh_host_port => «7222», — > :ssh_guest_port => «22», — :sudo_cmd => «echo ‘%p’|sudo — S sh ‘%f», — :shutdown_cmd => «shutdown — P now», — :postinstall_files => [ «postinstall.sh»], — :postinstall_timeout => «10000» »
Теперь запустим сборку командой
$ veewee vbox build myubuntubox
Veewee задумается на время, пока будет создавать виртуальную машину, скачивать ISO-образ операционной системы, а также устанавливать и настраивать ее. После того как команда закончит работу, проверим созданную виртуалку при помощи следующей команды:
$ veewee vbox validate myubuntubox
Если все прошло гладко, можно двигаться дальше. Проэкспортируем созданную виртуальную машину как файл базовой сборки vagrant:
$ vagrant basebox export myubuntubox
Ну вот, собственно, и все. Теперь, чтобы использовать нашу базовую сборку, вызовем уже знакомые команды. Добавим бокс в список:
$ vagrant box add myubuntubox myubuntubox.box
И создадим новую виртуальную машину на основе уже созданной:
$ vagrant init myubuntubox
Вот и все — теперь даже самые рьяные параноики не смогут нас осудить, ведь теперь весь техпроцесс создания виртуальной среды контролируется нами же.
ЗАКЛЮЧЕНИЕ
Удобная среда разработки позволяет больше сконцентрироваться на решаемой проблеме, а не на вопросах совместимости ПО или различиях операционных систем, и это главная фишка Vagrant. С ним можно избавиться от проблем, когда на машине разработчика все работает, а на продакшене почему-то нет.
Разумеется, на данный момент несколько смущает его сильная руби-ориентированность, но будем надеяться, что со временем разработчики решат и эту проблему, расширив, например, список провизоров на Python или Java. И кстати, в настоящее время идет работа по добавлению других систем виртуализации, кроме Virtual Box.
В любом случае, уже сейчас проект представляет большой интерес как для отдельных разработчиков, так и для групп разработки. Удачи и новых познаний!