vagrantで一度に複数台起動したいし、vagrant upしたときにchef-soloも流したい
どちらもVagrantfileにその設定を書けばいい
vagrantで複数台起動
Vagrantfileの中でconfig.vm.defineメソッドを呼ぶ。そしてその引数ブロックにそのマシンに設定したいことを記述する。 通常はconfig.vm.box = "CentOS6.4"みたいになってるけど、このconfigの部分をブロックの引数にすればいい。どういうことかというと具体的には以下
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.define :web1 do |web| web.vm.box = "CentOS6.4" web.vm.network :private_network, ip:"192.168.33.100" end config.vm.define :web2 do |web| web.vm.box = "CentOS6.4" web.vm.network :private_network, ip:"192.168.33.101" end end
http://docs.vagrantup.com/v2/multi-machine/
vagrantでchef-solo
config.vm.provision "chef_solo" に設定行書いたブロックを渡す。 ブロック内でchefのレシピやdatabagsを指定する。cookbookの場所はVagrantfileの場所から相対パスで指定できる。また、配列で複数のcookbookを指定することもできる。以下の例ではberkshelfで入れたcookbookと自分で作ったsite-cookbooksを指定してる。 また、add_recipeメソッドでrunlistもこのブロックの中で指定する。 具体的には以下。
config.vm.provision :chef_solo do |chef| chef.cookbooks_path = ["chef/cookbooks", "chef/site-cookbooks"] chef.data_bags_path = "chef/data_bags" chef.add_recipe "yum" chef.add_recipe "yum::epel" chef.add_recipe "server_conf" chef.add_recipe "common_packages" end
http://docs.vagrantup.com/v2/provisioning/chef_solo.html
複数台起動してそれぞれにchefを流し込む
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.define :web1 do |web1| web1.vm.box = "CentOS6.4" web1.omnibus.chef_version = :latest web1.vm.network :private_network, ip: "192.168.33.102" web1.vm.provision :chef_solo do |chef| chef.cookbooks_path = ["chef/cookbooks", "chef/site-cookbooks"] chef.data_bags_path = "chef/data_bags" chef.add_recipe "yum" chef.add_recipe "yum::epel" chef.add_recipe "server_conf" chef.add_recipe "common_packages" end end config.vm.define :web2 do |web2| web2.vm.box = "CentOS6.4" web2.omnibus.chef_version = :latest web2.vm.network :private_network, ip: "192.168.33.103" web2.vm.provision :chef_solo do |chef| chef.cookbooks_path = ["chef/cookbooks", "chef/site-cookbooks"] chef.data_bags_path = "chef/data_bags" chef.add_recipe "yum" chef.add_recipe "yum::epel" chef.add_recipe "server_conf" chef.add_recipe "common_packages" end end end
こんな感じでいけた。 web1とweb2で設定を分離してるので、別々のrunlist流すとかも出来るんだと思う。