diff --git a/Vagrantfile b/Vagrantfile index b769199b1..a2c2c1c8f 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -7,6 +7,15 @@ Vagrant.require_version ">= 1.8.0" CONFIG = File.join(File.dirname(__FILE__), "vagrant/config.rb") +COREOS_URL_TEMPLATE = "https://storage.googleapis.com/%s.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json" + +SUPPORTED_OS = { + "coreos-stable" => {box: "coreos-stable", bootstrap_os: "coreos", user: "core", box_url: COREOS_URL_TEMPLATE % ["stable"]}, + "coreos-alpha" => {box: "coreos-alpha", bootstrap_os: "coreos", user: "core", box_url: COREOS_URL_TEMPLATE % ["alpha"]}, + "coreos-beta" => {box: "coreos-beta", bootstrap_os: "coreos", user: "core", box_url: COREOS_URL_TEMPLATE % ["beta"]}, + "ubuntu" => {box: "bento/ubuntu-16.04", bootstrap_os: "ubuntu", user: "ubuntu"}, +} + # Defaults for config options defined in CONFIG $num_instances = 3 $instance_name_prefix = "k8s" @@ -16,7 +25,7 @@ $vm_cpus = 1 $shared_folders = {} $forwarded_ports = {} $subnet = "172.17.8" -$box = "bento/ubuntu-16.04" +$os = "ubuntu" # The first three nodes are etcd servers $etcd_instances = $num_instances # The first two nodes are masters @@ -31,6 +40,7 @@ if File.exist?(CONFIG) require CONFIG end +$box = SUPPORTED_OS[$os][:box] # if $inventory is not set, try to use example $inventory = File.join(File.dirname(__FILE__), "inventory") if ! $inventory @@ -56,7 +66,10 @@ Vagrant.configure("2") do |config| # always use Vagrants insecure key config.ssh.insert_key = false config.vm.box = $box - + if SUPPORTED_OS[$os].has_key? :box_url + config.vm.box_url = SUPPORTED_OS[$os][:box_url] + end + config.ssh.username = SUPPORTED_OS[$os][:user] # plugin conflict if Vagrant.has_plugin?("vagrant-vbguest") then config.vbguest.auto_update = false @@ -103,6 +116,7 @@ Vagrant.configure("2") do |config| # Override the default 'calico' with flannel. # inventory/group_vars/k8s-cluster.yml "kube_network_plugin": "flannel", + "bootstrap_os": SUPPORTED_OS[$os][:bootstrap_os] } config.vm.network :private_network, ip: ip diff --git a/docs/vagrant.md b/docs/vagrant.md index 02132c140..1b0073799 100644 --- a/docs/vagrant.md +++ b/docs/vagrant.md @@ -39,3 +39,31 @@ k8s-01 Ready 45s k8s-02 Ready 45s k8s-03 Ready 45s ``` + +Customize Vagrant +================= + +You can override the default settings in the `Vagrantfile` either by directly modifying the `Vagrantfile` +or through an override file. + +In the same directory as the `Vagrantfile`, create a folder called `vagrant` and create `config.rb` file in it. + +You're able to override the variables defined in `Vagrantfile` by providing the value in the `vagrant/config.rb` file, +e.g.: + + echo '$forwarded_ports = {8001 => 8001}' >> vagrant/config.rb + +and after `vagrant up` or `vagrant reload`, your host will have port forwarding setup with the guest on port 8001. + +Use alternative OS for Vagrant +============================== + +By default, Vagrant uses Ubuntu 16.04 box to provision a local cluster. You may use an alternative supported +operating system for your local cluster. + +Customize `$os` variable in `Vagrantfile` or as override, e.g.,: + + echo '$os = "coreos-stable"' >> vagrant/config.rb + + +The supported operating systems for vagrant are defined in the `SUPPORTED_OS` constant in the `Vagrantfile`.