- PVSM.RU - https://www.pvsm.ru -
По моему мнению, большинству IT специалистов стоит использовать Vagrant [1]. Кто не знает, что это такое – рекомендую начать с официального сайта. На Хабре так же было несколько обзоров вагранта, например Development Environment при помощи Vagrant и Chef [2] и Создание новой виртуальной машины за одну минуту или «vagrant up!» [3]. В этой статье я более детально расскажу о «экосистеме» вагранта.
Если попробовать описать вагрант в несколько слов, то это инструмент для повторяемого создания окружения с помощью вашей любимой системы управления конфигурацией и вашей любимой системы виртуализации. И если систем виртаулизации и систем управления конфигурации существует достаточно много, то вагрант — один единственный продукт в своем роде, аналогов ему нет.
Но рассмотрим ситуацию более подробно. На данный момент вагрант поддерживает следующие системы виртуализации [4] прямо из коробки:
Кроме того, сторонними разработчиками написаны следующие плагины (здесь, конечно, перечислены не все):
На всякий случай наш бокс для Parallels с Ubuntu 12.04 лежит здесь [14].
Используя различные системы виртуализации, вагрант может стать незаменимым инструментом, который проверяет разные аспекты вашей инфраструктуры с помощью тестов в CI окружении.
После того, как вы подключили вашу систему виртуализации, необходимо определиться с системой управления конфигурацией. На данный момент поддерживаются следующие системы настройки [15] (provisioning):
Дальше все крайне просто — вам нужен «эталонный» образ операционной системы. Можно сделать самому, это не так сложно, а можно взять готовый, например, на сайте VagrantBox.es [18]. Наш бокс для VirtualBox с Ubuntu 12.04 лежит здесь [19].
Если вы все же не любите готовых решений, то есть проекты, позволяющие автоматизировать создание базовых образов. Например, VeeWee [20] (вводная статья о нем на Хабре [21]) и Packer [22]. Последний сделан Митчелом Хашимото, автором вагранта. К сожалению, русскоязычных обзоров его нету, но мы обязательно напишем о нем в одной из ближайших статей.
Важно отметить, что эталонный образ ОС имеет смысл использовать одинаковый для всех ваших окружений — от девелоперского до боевого.
После этого вы собираете все вместе с помощью Vagrantfile. Для примера я привожу файл конфигурации, который позволяет запускать сразу несколько машин, что очень полезно, если необходимо тестировать какое-то распределенное окружение.
Vagrant.configure("2") do |config|
config.vm.define :infra do |main|
main.vm.box = "ubuntu12.04-chef11"
main.vm.hostname = "infra"
config.vm.network :forwarde_port, guest: 80, host: 8002
config.vm.network :private_network, ip: "192.168.100.13"
main.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
end
config.vm.provision :chef_solo do |chef|
chef.log_level = :info
chef.roles_path = "roles"
chef.data_bags_path = "data_bags"
chef.add_role "base"
chef.add_role "zabbix-db"
chef.add_role "zabbix-server"
chef.add_role "graylog2"
end
end
config.vm.define :vm1 do |main|
main.vm.box = "ubuntu12.04-chef11"
main.vm.hostname = "vm1"
config.vm.network :forwarded_port, guest: 80, host: 8001
config.vm.network :private_network, ip: "192.168.100.14"
main.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
end
config.vm.provision :chef_solo do |chef|
chef.log_level = :info
chef.roles_path = "roles"
chef.data_bags_path = "data_bags"
chef.add_role "base"
chef.add_role "zabbix-client"
chef.add_role "projectname"
end
end
end
С подобным файлом конфигурации можно подымать виртуальный машины по отдельности, например, vagrant up infra
или vagrant up vm1
.
Здесь статью можно было бы закончить, но, помимо всего прочего, к вагранту существует множество плагинов, которые расширяют и дополняют его функциональность. Список наиболее известных плагинов [23] есть в вики вагранта. Вот наиболее интересные из них, на мой взгляд.
Вагрант помогает повторяемым образом подготавливать окружение ваших проектов. Вагрант позволяет начинать интеграцию с самой ранней стадии — со стадии разработки. Я глубоко убежден, что только так и можно «готовить» инфраструктуру. Но сейчас мало кто так готовит. А «Экспресс 42» готовит именно так.
Автор: evtuhovich
Источник [30]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/virtualizatsiya/51226
Ссылки в тексте:
[1] Vagrant: http://www.vagrantup.com/
[2] Development Environment при помощи Vagrant и Chef: http://habrahabr.ru/post/178797/
[3] Создание новой виртуальной машины за одну минуту или «vagrant up!»: http://habrahabr.ru/post/113354/
[4] следующие системы виртуализации: http://docs.vagrantup.com/v2/getting-started/providers.html
[5] Vagrant-lxc: https://github.com/fgrehm/vagrant-lxc
[6] LXC: http://linuxcontainers.org/
[7] Vagrant-libvirt: https://github.com/pradels/vagrant-libvirt
[8] libvirt: http://libvirt.org/
[9] Vagrant-kvm: https://github.com/adrahon/vagrant-kvm
[10] KVM: http://www.linux-kvm.org/page/Main_Page
[11] Vagrant-parallels: https://github.com/yshahin/vagrant-parallels
[12] Parallels: http://www.parallels.com/
[13] Экспресс 42: http://express42.com/
[14] здесь: https://s3-eu-west-1.amazonaws.com/express42-vagrant/ubuntu12.04-chef11-parallels.box
[15] системы настройки: http://docs.vagrantup.com/v2/provisioning/index.html
[16] крайнем выпуске: http://devopsdeflope.ru/posts/2013/003.html
[17] Devops Deflope: http://devopsdeflope.ru/
[18] VagrantBox.es: http://www.vagrantbox.es/
[19] здесь: https://s3-eu-west-1.amazonaws.com/express42-vagrant/ubuntu12.04-chef11.box
[20] VeeWee: https://github.com/jedi4ever/veewee
[21] вводная статья о нем на Хабре: http://habrahabr.ru/post/189160/
[22] Packer: http://packer.io/
[23] Список наиболее известных плагинов: https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins
[24] Vagrant-cachier: https://github.com/fgrehm/vagrant-cachier
[25] Vagrant-librarian-chef: https://github.com/jimmycuadra/vagrant-librarian-chef
[26] librarian-chef: https://github.com/applicationsonline/librarian-chef
[27] нашей статье: http://habrahabr.ru/company/express42/blog/182264/
[28] Vagrant-berkshelf: https://github.com/berkshelf/vagrant-berkshelf
[29] Sahara: https://github.com/jedi4ever/sahara
[30] Источник: http://habrahabr.ru/post/206768/
Нажмите здесь для печати.