diff --git a/.gitignore b/.gitignore
index fc2bd5b1f451f5bb45beac9cb22abe51f46a7504..074dd431d0a0af08ac7a52a90c81d77dc0a0531c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@ temp
 **/*.sw[pon]
 /ssh-bastion.conf
 **/*.sw[pon]
+vagrant/
diff --git a/Vagrantfile b/Vagrantfile
index 76db41a8b2449bc113230bf4752ac080240bf6cf..a068eeabfb29332b57d68fb33ff9374c184dcd90 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -17,6 +17,12 @@ $shared_folders = {}
 $forwarded_ports = {}
 $subnet = "172.17.8"
 $box = "bento/ubuntu-16.04"
+# The first three nodes are etcd servers
+$etcd_instances = $num_instances
+# The first two nodes are masters
+$kube_master_instances = $num_instances == 1 ? $num_instances : ($num_instances - 1)
+# All nodes are kube nodes
+$kube_node_instances = $num_instances
 
 host_vars = {}
 
@@ -112,12 +118,9 @@ Vagrant.configure("2") do |config|
           ansible.host_vars = host_vars
           #ansible.tags = ['download']
           ansible.groups = {
-            # The first three nodes should be etcd servers
-            "etcd" => ["#{$instance_name_prefix}-0[1:3]"],
-            # The first two nodes should be masters
-            "kube-master" => ["#{$instance_name_prefix}-0[1:2]"],
-            # all nodes should be kube nodes
-            "kube-node" => ["#{$instance_name_prefix}-0[1:#{$num_instances}]"],
+            "etcd" => ["#{$instance_name_prefix}-0[1:#{$etcd_instances}]"],
+            "kube-master" => ["#{$instance_name_prefix}-0[1:#{$kube_master_instances}]"],
+            "kube-node" => ["#{$instance_name_prefix}-0[1:#{$kube_node_instances}]"],
             "k8s-cluster:children" => ["kube-master", "kube-node"],
           }
         end