b06a7ea554
Vagrantfile: setup proxy inside virtual machines In corporate networks, it is good to pre-configure proxy variables. Reload docker.socket after installing flannel on coreos Workaround for #569 Swap order in which we reload docker/socket Update README.md Add new var skip_dnsmasq_k8s If skip_dnsmasq is set, it will still not set up dnsmasq k8s pod. This enables independent setup of resolvconf section before kubelet is up. Use tar+register instead of copy/slurp for distributing tokens and certs Related bug: https://github.com/ansible/ansible/issues/15405 Uses tar and register because synchronize module cannot sudo on the remote side correctly and copy is too slow. This patch dramatically cuts down the number of tasks to process for cert synchronization. Update OWNERS Add CI test layouts * Drop Wily from test matrix * Replace the Wily cases dropped with extra cases to test separate roles deployment Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com> Adds functionality to have masters and nodes with no floating IP. Updates ansible group vars on terraform/openstack to follow the inventory/group_vars/all.yml file. Vagrantfile: use Ubuntu 16.04 LTS Use recent supported version of Ubuntu for local development setup with Vagrant. Vagrantfile: setup proxy inside virtual machines In corporate networks, it is good to pre-configure proxy variables. Reload docker.socket after installing flannel on coreos Workaround for #569 Swap order in which we reload docker/socket Update README.md
128 lines
3.9 KiB
Ruby
128 lines
3.9 KiB
Ruby
# -*- mode: ruby -*-
|
|
# # vi: set ft=ruby :
|
|
|
|
require 'fileutils'
|
|
|
|
Vagrant.require_version ">= 1.8.0"
|
|
|
|
CONFIG = File.join(File.dirname(__FILE__), "vagrant/config.rb")
|
|
|
|
# Defaults for config options defined in CONFIG
|
|
$num_instances = 3
|
|
$instance_name_prefix = "k8s"
|
|
$vm_gui = false
|
|
$vm_memory = 1536
|
|
$vm_cpus = 1
|
|
$shared_folders = {}
|
|
$forwarded_ports = {}
|
|
$subnet = "172.17.8"
|
|
$box = "bento/ubuntu-16.04"
|
|
|
|
host_vars = {}
|
|
|
|
if File.exist?(CONFIG)
|
|
require CONFIG
|
|
end
|
|
|
|
# if $inventory is not set, try to use example
|
|
$inventory = File.join(File.dirname(__FILE__), "inventory") if ! $inventory
|
|
|
|
# if $inventory has a hosts file use it, otherwise copy over vars etc
|
|
# to where vagrant expects dynamic inventory to be.
|
|
if ! File.exist?(File.join(File.dirname($inventory), "hosts"))
|
|
$vagrant_ansible = File.join(File.dirname(__FILE__), ".vagrant",
|
|
"provisioners", "ansible")
|
|
FileUtils.mkdir_p($vagrant_ansible) if ! File.exist?($vagrant_ansible)
|
|
if ! File.exist?(File.join($vagrant_ansible,"inventory"))
|
|
FileUtils.ln_s($inventory, $vagrant_ansible)
|
|
end
|
|
end
|
|
|
|
if Vagrant.has_plugin?("vagrant-proxyconf")
|
|
$no_proxy = ENV['NO_PROXY'] || ENV['no_proxy'] || "127.0.0.1,localhost"
|
|
(1..$num_instances).each do |i|
|
|
$no_proxy += ",#{$subnet}.#{i+100}"
|
|
end
|
|
end
|
|
|
|
Vagrant.configure("2") do |config|
|
|
# always use Vagrants insecure key
|
|
config.ssh.insert_key = false
|
|
config.vm.box = $box
|
|
|
|
# plugin conflict
|
|
if Vagrant.has_plugin?("vagrant-vbguest") then
|
|
config.vbguest.auto_update = false
|
|
end
|
|
|
|
(1..$num_instances).each do |i|
|
|
config.vm.define vm_name = "%s-%02d" % [$instance_name_prefix, i] do |config|
|
|
config.vm.hostname = vm_name
|
|
|
|
if Vagrant.has_plugin?("vagrant-proxyconf")
|
|
config.proxy.http = ENV['HTTP_PROXY'] || ENV['http_proxy'] || ""
|
|
config.proxy.https = ENV['HTTPS_PROXY'] || ENV['https_proxy'] || ""
|
|
config.proxy.no_proxy = $no_proxy
|
|
end
|
|
|
|
if $expose_docker_tcp
|
|
config.vm.network "forwarded_port", guest: 2375, host: ($expose_docker_tcp + i - 1), auto_correct: true
|
|
end
|
|
|
|
$forwarded_ports.each do |guest, host|
|
|
config.vm.network "forwarded_port", guest: guest, host: host, auto_correct: true
|
|
end
|
|
|
|
["vmware_fusion", "vmware_workstation"].each do |vmware|
|
|
config.vm.provider vmware do |v|
|
|
v.vmx['memsize'] = $vm_memory
|
|
v.vmx['numvcpus'] = $vm_cpus
|
|
end
|
|
end
|
|
|
|
config.vm.provider :virtualbox do |vb|
|
|
vb.gui = $vm_gui
|
|
vb.memory = $vm_memory
|
|
vb.cpus = $vm_cpus
|
|
end
|
|
|
|
ip = "#{$subnet}.#{i+100}"
|
|
host_vars[vm_name] = {
|
|
"ip" => ip,
|
|
#"access_ip" => ip,
|
|
"flannel_interface" => ip,
|
|
"flannel_backend_type" => "host-gw",
|
|
"local_release_dir" => "/vagrant/temp",
|
|
"download_run_once" => "True"
|
|
}
|
|
config.vm.network :private_network, ip: ip
|
|
|
|
# Only execute once the Ansible provisioner,
|
|
# when all the machines are up and ready.
|
|
if i == $num_instances
|
|
config.vm.provision "ansible" do |ansible|
|
|
ansible.playbook = "cluster.yml"
|
|
if File.exist?(File.join(File.dirname($inventory), "hosts"))
|
|
ansible.inventory_path = $inventory
|
|
end
|
|
ansible.sudo = true
|
|
ansible.limit = "all"
|
|
ansible.host_key_checking = false
|
|
ansible.raw_arguments = ["--forks=#{$num_instances}"]
|
|
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}]"],
|
|
"k8s-cluster:children" => ["kube-master", "kube-node"],
|
|
}
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|