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