-
Notifications
You must be signed in to change notification settings - Fork 0
/
Vagrantfile
135 lines (115 loc) · 4.87 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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
os = "bento/ubuntu-18.04"
net_ip = "192.168.50"
# import the box once and then create references for all other instaces
#config.linked_clone = true
config.vm.define :master, primary: true do |master_config|
master_config.vm.provider "virtualbox" do |vb|
vb.linked_clone = true
vb.memory = "2048"
vb.cpus = 1
vb.name = "master"
#fix ubuntu netwrok issue https://stackoverflow.com/questions/18457306/how-to-enable-internet-access-inside-vagrant
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
master_config.vm.box = "#{os}"
master_config.vm.host_name = 'master'
master_config.vm.network "private_network", ip: "#{net_ip}.10"
master_config.vm.synced_folder "saltstack/salt/", "/srv/salt"
master_config.vm.synced_folder "saltstack/pillar/", "/srv/pillar"
#master_config.vm.synced_folder "saltstack/etc/master.d/", "/etc/salt/master.d"
# fix for salt /bin/sh vs. /usr/bin/sh issue
master_config.vm.provision "shell",
inline: "ln -sf /bin/sh /usr/bin/sh"
master_config.vm.provision :salt do |salt|
salt.master_config = "saltstack/etc/master"
salt.master_key = "saltstack/keys/master.pem"
salt.master_pub = "saltstack/keys/master.pub"
salt.seed_master = {
"minion1" => "saltstack/keys/minion1.pub",
"minion2" => "saltstack/keys/minion2.pub"
}
salt.install_type = "stable"
salt.install_master = true
salt.minion_config = "saltstack/etc/minion_generic.yaml"
salt.no_minion = false
salt.verbose = true
salt.colorize = true
salt.python_version = "3"
salt.bootstrap_options = "-P -c /tmp"
end
end
[
["minion1", "#{net_ip}.11", "512", os ],
["minion2", "#{net_ip}.12", "512", os ],
["minion3", "#{net_ip}.13", "512", os ],
["minion4", "#{net_ip}.14", "512", os ],
].each do |vmname,ip,mem,os|
config.vm.define "#{vmname}" do |minion_config|
minion_config.vm.provider "virtualbox" do |vb|
vb.linked_clone = true
vb.memory = "#{mem}"
vb.cpus = 1
vb.name = "#{vmname}"
#fix ubuntu network issue https://stackoverflow.com/questions/18457306/how-to-enable-internet-access-inside-vagrant
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
minion_config.vm.box = "#{os}"
minion_config.vm.hostname = "#{vmname}"
minion_config.vm.network "private_network", ip: "#{ip}"
# fix for salt /bin/sh vs. /usr/bin/sh issue
minion_config.vm.provision "shell",
inline: "ln -sf /bin/sh /usr/bin/sh"
minion_config.vm.provision :salt do |salt|
salt.minion_config = "saltstack/etc/#{vmname}"
salt.minion_key = "saltstack/keys/#{vmname}.pem"
salt.minion_pub = "saltstack/keys/#{vmname}.pub"
salt.install_type = "stable"
salt.verbose = true
salt.colorize = true
salt.python_version = "3"
salt.bootstrap_options = "-P -c /tmp"
end
end
end
# Test for using the same key for multipe minions
[
["minion5", "#{net_ip}.15", "512", os ],
["minion6", "#{net_ip}.16", "512", os ],
].each do |vmname,ip,mem,os|
config.vm.define "#{vmname}" do |minion_config|
minion_config.vm.provider "virtualbox" do |vb|
vb.linked_clone = true
vb.memory = "#{mem}"
vb.cpus = 1
vb.name = "#{vmname}"
#fix ubuntu network issue https://stackoverflow.com/questions/18457306/how-to-enable-internet-access-inside-vagrant
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
minion_config.vm.box = "#{os}"
minion_config.vm.hostname = "#{vmname}"
minion_config.vm.network "private_network", ip: "#{ip}"
# fix for salt /bin/sh vs. /usr/bin/sh issue
minion_config.vm.provision "shell",
inline: "ln -sf /bin/sh /usr/bin/sh"
minion_config.vm.provision :salt do |salt|
salt.minion_config = "saltstack/etc/minion_generic.yaml"
# provisioning without pki, then the minions createing certificates by their own
#salt.minion_key = "saltstack/keys/minion_generic.pem"
#salt.minion_pub = "saltstack/keys/minion_generic.pub"
salt.install_type = "stable"
salt.verbose = true
salt.colorize = true
salt.python_version = "3"
salt.bootstrap_options = "-P -c /tmp"
end
end
end
end