» » » Про Vagrant, его плагины, и другие истории из жизни бродяг

 

Про Vagrant, его плагины, и другие истории из жизни бродяг

Автор: admin от 20-12-2013, 09:00, посмотрело: 1822

По моему мнению, большинству IT специалистов стоит использовать Vagrant. Кто не знает, что это такое – рекомендую начать с официального сайта. На Хабре так же было несколько обзоров вагранта, например Development Environment при помощи Vagrant и Chef и Создание новой виртуальной машины за одну минуту или «vagrant up!». В этой статье я более детально расскажу о «экосистеме» вагранта.

Если попробовать описать вагрант в несколько слов, то это инструмент для повторяемого создания окружения с помощью вашей любимой системы управления конфигурацией и вашей любимой системы виртуализации. И если систем виртаулизации и систем управления конфигурации существует достаточно много, то вагрант — один единственный продукт в своем роде, аналогов ему нет.

Но рассмотрим ситуацию более подробно. На данный момент вагрант поддерживает следующие системы виртуализации прямо из коробки:


  • VirtualBox — именно с его поддержки начинался вагрант.

  • VMware — для него нужен платный плагин.

  • AWS — можно делать ваши виртуальные машины сразу в облаке Амазона.


Кроме того, сторонними разработчиками написаны следующие плагины (здесь, конечно, перечислены не все):


  • Vagrant-lxc — плагин для системы контейнерной виртуализации. LXC, немного сыроват, но активно развивается.

  • Vagrant-libvirt — обещает поддерживать все системы виртуализации, которые поддерживает libvirt, а их порядка десятка.

  • Vagrant-kvm — плагин для системы виртуализации KVM.

  • Vagrant-parallels — плагин для системы виртуализации Parallels. Оказывается, под Parallels можно запускать не только Windows на Mac, но и разрабатывать инфраструктуру, более того, сотрудники из нашей компании «Экспресс 42» успешно это делают. Плагин разрабатывает сама компания Parallels, и он активно развивается.


На всякий случай наш бокс для Parallels с Ubuntu 12.04 лежит здесь.

Используя различные системы виртуализации, вагрант может стать незаменимым инструментом, который проверяет разные аспекты вашей инфраструктуры с помощью тестов в CI окружении.

После того, как вы подключили вашу систему виртуализации, необходимо определиться с системой управления конфигурацией. На данный момент поддерживаются следующие системы настройки (provisioning):


  • Shell — старые добрые shell-скрипты. В XXI веке уже не интересно.

  • Ansible — молодая, набирающая обороты, система управления конфигурацией.

  • Chef — про него, пожалуй, слышали все. Поддерживается standalone (Chef Solo) и серверная (Chef Client) версии.

  • Docker — модная в последнее время система, поддерживающая концепцию Immutable Server (о ней мы рассказывали в крайнем выпуске подкаста Devops Deflope).

  • Puppet — одна из наиболее распространенных систем управления конфигурацией. Поддерживается standalone и серверная версия.

  • Salt — система управления конфигурацией Salt Stack.


Дальше все крайне просто — вам нужен «эталонный» образ операционной системы. Можно сделать самому, это не так сложно, а можно взять готовый, например, на сайте VagrantBox.es. Наш бокс для VirtualBox с Ubuntu 12.04 лежит здесь.

Если вы все же не любите готовых решений, то есть проекты, позволяющие автоматизировать создание базовых образов. Например, VeeWee (вводная статья о нем на Хабре) и Packer. Последний сделан Митчелом Хашимото, автором вагранта. К сожалению, русскоязычных обзоров его нету, но мы обязательно напишем о нем в одной из ближайших статей.

Важно отметить, что эталонный образ ОС имеет смысл использовать одинаковый для всех ваших окружений — от девелоперского до боевого.

После этого вы собираете все вместе с помощью 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.

Здесь статью можно было бы закончить, но, помимо всего прочего, к вагранту существует множество плагинов, которые расширяют и дополняют его функциональность. Список наиболее известных плагинов есть в вики вагранта. Вот наиболее интересные из них, на мой взгляд.


  • Vagrant-cachier — кэширует запросы к репозитариям различных менеджеров пакетов (deb, rpm), что позволяет поднимать машинки гораздо быстрее.

  • Vagrant-librarian-chef — интеграция вагранта и librarian-chef. Более подробно прочитать о том, зачем нужен librarian-chef можно в нашей статье.

  • Vagrant-berkshelf — интеграция вагранта и Berkshelf (аналог librarian-chef).

  • Sahara — этот плагин позволяет делать «срезы» вашей виртуальной машины, чтобы можно было легко откатиться назад.


Вагрант помогает повторяемым образом подготавливать окружение ваших проектов. Вагрант позволяет начинать интеграцию с самой ранней стадии — со стадии разработки. Я глубоко убежден, что только так и можно «готовить» инфраструктуру. Но сейчас мало кто так готовит. А «Экспресс 42» готовит именно так.

Источник: Хабрахабр

Категория: Админитстрирование » Системное администрирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *