2014-07-14 17:50:04 +00:00
|
|
|
# -*- mode: ruby -*-
|
|
|
|
# vi: set ft=ruby :
|
|
|
|
|
|
|
|
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
|
|
|
VAGRANTFILE_API_VERSION = "2"
|
|
|
|
|
|
|
|
# Require a recent version of vagrant otherwise some have reported errors setting host names on boxes
|
|
|
|
Vagrant.require_version ">= 1.6.2"
|
|
|
|
|
2014-09-29 20:37:04 +00:00
|
|
|
# The number of minions to provision
|
|
|
|
$num_minion = (ENV['KUBERNETES_NUM_MINIONS'] || 3).to_i
|
2014-07-14 17:50:04 +00:00
|
|
|
|
2014-09-29 20:37:04 +00:00
|
|
|
# ip configuration
|
|
|
|
$master_ip = "10.245.1.2"
|
|
|
|
$minion_ip_base = "10.245.2."
|
|
|
|
$minion_ips = $num_minion.times.collect { |n| $minion_ip_base + "#{n+2}" }
|
|
|
|
$minion_ips_str = $minion_ips.join(",")
|
2014-07-14 17:50:04 +00:00
|
|
|
|
2014-09-29 20:37:04 +00:00
|
|
|
# Determine the OS platform to use
|
|
|
|
$kube_os = ENV['KUBERNETES_OS'] || "fedora"
|
2014-07-14 17:50:04 +00:00
|
|
|
|
2014-09-29 20:37:04 +00:00
|
|
|
# OS platform to box information
|
|
|
|
$kube_box = {
|
|
|
|
"fedora" => {
|
|
|
|
"name" => "fedora20",
|
|
|
|
"box_url" => "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_fedora-20_chef-provisionerless.box"
|
2014-07-14 17:50:04 +00:00
|
|
|
}
|
2014-09-29 20:37:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# This stuff is cargo-culted from http://www.stefanwrobel.com/how-to-make-vagrant-performance-not-suck
|
2014-11-14 01:09:59 +00:00
|
|
|
# Give access to half of all cpu cores on the host. We divide by 2 as we assume
|
|
|
|
# that users are running with hyperthreads.
|
2014-09-29 20:37:04 +00:00
|
|
|
host = RbConfig::CONFIG['host_os']
|
|
|
|
if host =~ /darwin/
|
2014-11-14 01:09:59 +00:00
|
|
|
$vm_cpus = (`sysctl -n hw.ncpu`.to_i/2.0).ceil
|
2014-09-29 20:37:04 +00:00
|
|
|
elsif host =~ /linux/
|
2014-11-14 01:09:59 +00:00
|
|
|
$vm_cpus = (`nproc`.to_i/2.0).ceil
|
2014-09-29 20:37:04 +00:00
|
|
|
else # sorry Windows folks, I can't help you
|
|
|
|
$vm_cpus = 2
|
|
|
|
end
|
|
|
|
|
2014-10-01 23:17:51 +00:00
|
|
|
# Give VM 512MB of RAM
|
|
|
|
$vm_mem = 512
|
2014-09-29 20:37:04 +00:00
|
|
|
|
|
|
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
|
|
def customize_vm(config)
|
|
|
|
config.vm.box = $kube_box[$kube_os]["name"]
|
|
|
|
config.vm.box_url = $kube_box[$kube_os]["box_url"]
|
|
|
|
|
|
|
|
config.vm.provider :virtualbox do |v|
|
|
|
|
v.customize ["modifyvm", :id, "--memory", $vm_mem]
|
|
|
|
v.customize ["modifyvm", :id, "--cpus", $vm_cpus]
|
|
|
|
|
|
|
|
# Use faster paravirtualized networking
|
|
|
|
v.customize ["modifyvm", :id, "--nictype1", "virtio"]
|
|
|
|
v.customize ["modifyvm", :id, "--nictype2", "virtio"]
|
|
|
|
end
|
|
|
|
end
|
2014-07-14 17:50:04 +00:00
|
|
|
|
|
|
|
# Kubernetes master
|
|
|
|
config.vm.define "master" do |config|
|
2014-09-29 20:37:04 +00:00
|
|
|
customize_vm config
|
|
|
|
|
|
|
|
config.vm.provision "shell", inline: "/vagrant/cluster/vagrant/provision-master.sh #{$master_ip} #{$num_minion} #{$minion_ips_str}"
|
|
|
|
config.vm.network "private_network", ip: "#{$master_ip}"
|
2014-07-14 17:50:04 +00:00
|
|
|
config.vm.hostname = "kubernetes-master"
|
2014-10-14 11:14:25 +00:00
|
|
|
end
|
2014-07-14 17:50:04 +00:00
|
|
|
|
|
|
|
# Kubernetes minion
|
2014-09-29 20:37:04 +00:00
|
|
|
$num_minion.times do |n|
|
2014-07-14 17:50:04 +00:00
|
|
|
config.vm.define "minion-#{n+1}" do |minion|
|
2014-09-29 20:37:04 +00:00
|
|
|
customize_vm minion
|
|
|
|
|
2014-07-14 17:50:04 +00:00
|
|
|
minion_index = n+1
|
2014-09-29 20:37:04 +00:00
|
|
|
minion_ip = $minion_ips[n]
|
|
|
|
minion.vm.provision "shell", inline: "/vagrant/cluster/vagrant/provision-minion.sh #{$master_ip} #{$num_minion} #{$minion_ips_str} #{minion_ip} #{minion_index}"
|
2014-07-14 17:50:04 +00:00
|
|
|
minion.vm.network "private_network", ip: "#{minion_ip}"
|
|
|
|
minion.vm.hostname = "kubernetes-minion-#{minion_index}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|