-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vagrantfile
115 lines (99 loc) · 4.56 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
Vagrant.configure("2") do |config|
# # Handle multiple machine in one block of Vagrantfile
# # https://developer.hashicorp.com/vagrant/docs/multi-machine
config.vm.define "k8s-master-machine", primary: true do |config|
config.vm.box = "ubuntu/focal64"
config.vm.hostname = "k8s-master-machine"
config.vm.communicator = "ssh"
# Default enable 2222 for ssh communication (Add id: "ssh" to disable default)
# https://realguess.net/2015/10/06/overriding-the-default-forwarded-ssh-port-in-vagrant/
config.vm.network "forwarded_port", guest: 22, host: 6996, protocol: "tcp", id: "ssh", host_ip: "127.0.0.1"
config.vm.box_check_update = false
config.ssh.username = ENV["SSH_USER"]
config.ssh.private_key_path = ENV["SSH_PRIV_KEY_PATH"]
config.ssh.port = 6996
config.ssh.guest_port = 22
# # Disable to generate a key pair inside .vargrant directory, use insecure_private_keys
# # instead of using private_key
# config.ssh.insert_key = false
config.ssh.forward_agent = true
config.vm.provider "virtualbox" do |config|
config.name = "k8s-master-machine"
# Change here when you need more memory to prevent Errors: 137 in Kubernetes
config.memory = 2048
config.cpus = 2
end
end
# # Use to loo[] over VM defination
# # Documentation: https://developer.hashicorp.com/vagrant/docs/vagrantfile/tips#loop-over-vm-definitions
# # Use can use `up` with regex to numberic the machines what you want to provisioning
# # Example: vagrant up "/k8s-worker-machine-[1-2]/" --provider=virtualbox
# (1..3).each do |i|
# config.vm.define "k8s-worker-machine-#{i}" do |config|
# config.vm.box = "ubuntu/focal64"
# config.vm.hostname = "k8s-worker-machine-#{i}"
# config.vm.communicator = "ssh"
# # Default enable 2222 for ssh communication (Add id: "ssh" to disable default)
# # https://realguess.net/2015/10/06/overriding-the-default-forwarded-ssh-port-in-vagrant/
# # For prevent collisions, use `auto_correct` and `unsable_port_parameter` to guide the port to new one
# config.vm.network "forwarded_port", guest: 22, host: 9669, protocol: "tcp", id: "ssh", host_ip: "127.0.0.1", auto_correct: true
# config.vm.usable_port_range = 9669..9671
# config.vm.box_check_update = false
# config.ssh.username = ENV["SSH_USER"]
# config.ssh.private_key_path = ENV["SSH_PRIV_KEY_PATH"]
# config.ssh.guest_port = 22
# # # Disable to generate a key pair inside .vargrant directory, use insecure_private_keys
# # # instead of using private_key
# # config.ssh.insert_key = false
# config.ssh.forward_agent = true
# config.vm.provider "virtualbox" do |config|
# config.name = "k8s-worker-machine-#{i}"
# config.memory = 1024
# config.cpus = 1
# end
# end
# end
config.vm.define "k8s-worker-machine-1" do |config|
config.vm.box = "ubuntu/focal64"
config.vm.hostname = "k8s-worker-machine-1"
config.vm.communicator = "ssh"
# Default enable 2222 for ssh communication (Add id: "ssh" to disable default)
# https://realguess.net/2015/10/06/overriding-the-default-forwarded-ssh-port-in-vagrant/
# For prevent collisions, use `auto_correct` and `unsable_port_parameter` to guide the port to new one
config.vm.network "forwarded_port", guest: 22, host: 9669, protocol: "tcp", id: "ssh", host_ip: "127.0.0.1"
config.vm.box_check_update = false
config.ssh.username = ENV["SSH_USER"]
config.ssh.private_key_path = ENV["SSH_PRIV_KEY_PATH"]
config.ssh.guest_port = 22
config.ssh.port = 9669
# # Disable to generate a key pair inside .vargrant directory, use insecure_private_keys
# # instead of using private_key
# config.ssh.insert_key = false
config.ssh.forward_agent = true
config.vm.provider "virtualbox" do |config|
config.name = "k8s-worker-machine-1"
config.memory = 1024
config.cpus = 1
end
end
# Initialize the shell command to configuration
$configScript = <<-'SHELL'
sudo -i
sudo apt update && sudo apt install curl git -y
sudo apt install docker.io docker-compose -y
sudo usermod -aG docker vagrant
SHELL
# Reload profile of current user on machine
$reloadProfile = <<-'SHELL'
sudo -i
shutdown -r now
SHELL
# Execution the shell script provide
config.vm.provision "shell", inline: $configScript
# Configuration auto trigger reload profile in machine after shell
config.trigger.after :up, :provision do |trigger|
trigger.info = "Running a after trigger!"
trigger.run_remote = { inline: $reloadProfile }
trigger.ignore = [:destroy, :halt]
end
end