In this post I will go over a useful vagrant trick I have been using, overwriting variables in the Vagrantfile.
Since the vagrant files are essentially just ruby files, we can take advantage of that and overwrite variables quite easily allowing us to tune the infrastructure we are building up. We can define variables in the Vagrantfile with some defaults and have a separate ruby file that we require in if it is present where we overwrite these defaults.
Example
Vagrantfile
$worker_box_name = "centos/7" $worker_count = 3 $worker_memory = 1024 CLUSTER_CONFIG = File.expand_path("cluster-config.rb") if File.exist?(CLUSTER_CONFIG) require CLUSTER_CONFIG end Vagrant.configure(2) do |config| (1..$worker_count).each do |i| config.vm.define "w#{i}" do |w| w.vm.box = $worker_box_name w.vm.hostname = "w#{i}" w.vm.provider "virtualbox" do |vb| vb.memory = $worker_memory end # provision steps... end end end
cluster-config.rb
$worker_count = 2 $worker_memory = 2048
This will create a cluster with 2 workers with 2048mb memory instead of the default 3 worker with 1024mb memory