Создавать виртуалку при помощи Vagrant легко и весело, но пустая виртуалка врядли будет кому-то полезна и интересна. Раз уж мы автоматизировали создание виртуальной машины, то почему бы не автоматизировать установку необходимого программного обеспечения? В терминологии Vagrant такой процесс называется наполнением (provisioning).
В следующих статьях мы поговорим, как это делается при помощи популярного средства управления конфигурацией Chef, а сегодня я рассмотрю самый простой способ: использование shell-скрипта. Часто этот способ игнорируется, хотя для простых решений написать скрипт на 10 строчек может оказаться гораздо быстрее, чем разбираться с cookbook’ами Chef и их зависимостями.
Eсли вы читали мою первую заметку, то у вас уже должен быть минимальный Vagrantfile вида:
# -*- mode: ruby -*-
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
end
Допустим вам необходимо установить mysql. Для этого после конфигурации машины нужно написать:
config.vm.provision :shell, :inline => “sudo apt-get -q -y install mysql-server”
Здесь я указал, что в качестве «наполнителя» хочу использовать командную строку, а затем передаю команду. Это очень удобно когда вам нужно выполнить 1-2 команды, но скорее всего у вас будет более длинная последовательность, которую вы захотите вынести в отдельный файл. В этом случае команда будет выглядеть следующим образом:
config.vm.provision :shell, :path => “my_awesome_script.sh”
Если вы еще не создавали виртуалку, то достаточно запустить vagrant up
, и после создания виртуалки автоматически накатится ваш скрипт. Если же виртуалка уже создана и работает, то достаточно запустить vagrant provision
чтобы накатить скрипт с конфигурацией.