Merge pull request #1328 from kevinjqiu/coreos-vagrant
Support provisioning vagrant k8s clusters with coreos
This commit is contained in:
commit
d323501c7f
2 changed files with 44 additions and 2 deletions
18
Vagrantfile
vendored
18
Vagrantfile
vendored
|
@ -7,6 +7,15 @@ Vagrant.require_version ">= 1.8.0"
|
||||||
|
|
||||||
CONFIG = File.join(File.dirname(__FILE__), "vagrant/config.rb")
|
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
|
# Defaults for config options defined in CONFIG
|
||||||
$num_instances = 3
|
$num_instances = 3
|
||||||
$instance_name_prefix = "k8s"
|
$instance_name_prefix = "k8s"
|
||||||
|
@ -16,7 +25,7 @@ $vm_cpus = 1
|
||||||
$shared_folders = {}
|
$shared_folders = {}
|
||||||
$forwarded_ports = {}
|
$forwarded_ports = {}
|
||||||
$subnet = "172.17.8"
|
$subnet = "172.17.8"
|
||||||
$box = "bento/ubuntu-16.04"
|
$os = "ubuntu"
|
||||||
# The first three nodes are etcd servers
|
# The first three nodes are etcd servers
|
||||||
$etcd_instances = $num_instances
|
$etcd_instances = $num_instances
|
||||||
# The first two nodes are masters
|
# The first two nodes are masters
|
||||||
|
@ -31,6 +40,7 @@ if File.exist?(CONFIG)
|
||||||
require CONFIG
|
require CONFIG
|
||||||
end
|
end
|
||||||
|
|
||||||
|
$box = SUPPORTED_OS[$os][:box]
|
||||||
# if $inventory is not set, try to use example
|
# if $inventory is not set, try to use example
|
||||||
$inventory = File.join(File.dirname(__FILE__), "inventory") if ! $inventory
|
$inventory = File.join(File.dirname(__FILE__), "inventory") if ! $inventory
|
||||||
|
|
||||||
|
@ -56,7 +66,10 @@ Vagrant.configure("2") do |config|
|
||||||
# always use Vagrants insecure key
|
# always use Vagrants insecure key
|
||||||
config.ssh.insert_key = false
|
config.ssh.insert_key = false
|
||||||
config.vm.box = $box
|
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
|
# plugin conflict
|
||||||
if Vagrant.has_plugin?("vagrant-vbguest") then
|
if Vagrant.has_plugin?("vagrant-vbguest") then
|
||||||
config.vbguest.auto_update = false
|
config.vbguest.auto_update = false
|
||||||
|
@ -103,6 +116,7 @@ Vagrant.configure("2") do |config|
|
||||||
# Override the default 'calico' with flannel.
|
# Override the default 'calico' with flannel.
|
||||||
# inventory/group_vars/k8s-cluster.yml
|
# inventory/group_vars/k8s-cluster.yml
|
||||||
"kube_network_plugin": "flannel",
|
"kube_network_plugin": "flannel",
|
||||||
|
"bootstrap_os": SUPPORTED_OS[$os][:bootstrap_os]
|
||||||
}
|
}
|
||||||
config.vm.network :private_network, ip: ip
|
config.vm.network :private_network, ip: ip
|
||||||
|
|
||||||
|
|
|
@ -39,3 +39,31 @@ k8s-01 Ready 45s
|
||||||
k8s-02 Ready 45s
|
k8s-02 Ready 45s
|
||||||
k8s-03 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`.
|
||||||
|
|
Loading…
Reference in a new issue