-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVagrantFile
75 lines (61 loc) · 1.99 KB
/
VagrantFile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
ENV["LC_ALL"] = "en_US.UTF-8"
# The subnet of VMs
SUBNET_PREFIX = "172.168.50."
# Master IP of k8s
MASTER_IP = SUBNET_PREFIX+"10"
# Specification of Master
MASTER_MEM = 3072
MASTER_CPUS = 2
# Specification of Worker node and number of them
WORKER_MEM = 3072
WORKER_CPUS = 4
WORKER_NUM = 3
# The names for VM and hostname
VMNAME="k8s"
DOMAIN="nogada.dev"
WORKER_GROUP = VMNAME+"[1:"+WORKER_NUM.to_s+"]"
# Cluster IP subnet for k8s
K8S_POD_CIDR = "192.168.0.0/16"
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.hostmanager.enabled=true
config.hostmanager.manage_host = true
config.hostmanager.manage_guest = true
config.vm.define VMNAME do |k8s|
k8s.vm.provider :virtualbox do |vb|
vb.name = VMNAME
vb.memory = MASTER_MEM
vb.cpus = MASTER_CPUS
end
k8s.vm.hostname = VMNAME+"."+DOMAIN
k8s.vm.network :private_network, ip: MASTER_IP
k8s.vm.synced_folder "./", "/vagrant", type: "nfs"
end
(1..WORKER_NUM).each do |i|
config.vm.define VMNAME+"#{i}" do |node|
node.vm.provider :virtualbox do |vb|
vb.name = VMNAME+"#{i}"
vb.memory = WORKER_MEM
vb.cpus = WORKER_CPUS
end
node.vm.hostname = VMNAME+"#{i}."+DOMAIN
node.vm.network :private_network, ip: SUBNET_PREFIX+"#{20+i}"
node.vm.synced_folder "./", "/vagrant", type: "nfs"
end
end
# config.hostsupdater.remove_on_suspend = false
config.vm.provision "ansible" do |ansible|
ansible.playbook = "provision/playbook.yaml"
ansible.groups = {
"controller" => [VMNAME],
"controller:vars" => {
"cluster_ip" => MASTER_IP,
"pod_cidr" => K8S_POD_CIDR,
},
"worker" => [WORKER_GROUP],
"worker:vars" => {
"cluster_ip" => MASTER_IP
}
}
end
end