-
Notifications
You must be signed in to change notification settings - Fork 1
/
Vagrantfile
89 lines (78 loc) · 3.3 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
chain_num_validators = nil
consumer_migration = false
consumer_migration_state_export = nil
cache_server = false
File.foreach('.env') do |line|
next if line.strip.start_with?('#')
key, value = line.strip.split('=', 2)
if key == 'NUM_VALIDATORS'
chain_num_validators = value.to_i
elsif key == 'CACHE_SERVER'
cache_server = value.downcase == 'true'
end
end
# Validate inputs
if chain_num_validators.nil?
puts "NUM_VALIDATORS not found in .env file"
exit 1
end
Vagrant.configure("2") do |config|
# Create the provider-chain validators
(1..chain_num_validators).each do |i|
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--audio", "none"]
end
config.vm.define "provider-chain-validator#{i}" do |node|
node.vm.box = "ubuntu/jammy64" # ubuntu/focal64
node.vm.network "private_network", type: "hostonly", ip: "192.168.33.1#{i}"
node.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
node.vm.provision "file", source: ".env", destination: "/home/vagrant/.env"
node.vm.provision "shell", path: "setup.sh", env: {"NODE_INDEX" => i, "CHAIN_ID" => "provider-chain"}
if cache_server
config.vm.provision "shell", inline: <<-SHELL
echo 'Acquire::http::Proxy "http://192.168.33.1:3128";' | sudo tee /etc/apt/apt.conf.d/01proxy
echo 'export http_proxy="http://192.168.33.1:3128"' | sudo tee -a /etc/environment
echo 'export https_proxy="http://192.168.33.1:3128"' | sudo tee -a /etc/environment
echo 'export no_proxy="localhost,127.0.0.1"' | sudo tee -a /etc/environment
SHELL
end
if i == 1
node.vm.provision "shell", inline: <<-SHELL
mkdir -p /home/vagrant/.hermes
chown vagrant:vagrant /home/vagrant/.hermes
SHELL
node.vm.provision "file", source: "config/hermes_config.toml", destination: "/home/vagrant/.hermes/config.toml"
end
end
end
# Create the consumer-chain validators
(1..chain_num_validators).each do |i|
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--audio", "none"]
end
config.vm.define "consumer-chain-validator#{i}" do |node|
node.vm.box = "ubuntu/jammy64" #ubuntu/focal64
node.vm.network "private_network", type: "hostonly", ip: "192.168.33.2#{i}"
node.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
node.vm.provision "file", source: ".env", destination: "/home/vagrant/.env"
node.vm.provision "shell", path: "setup.sh", env: {"NODE_INDEX" => i, "CHAIN_ID" => "consumer-chain"}
if cache_server
config.vm.provision "shell", inline: <<-SHELL
echo 'Acquire::http::Proxy "http://192.168.33.1:3128";' | sudo tee /etc/apt/apt.conf.d/01proxy
echo 'export http_proxy="http://192.168.33.1:3128"' | sudo tee -a /etc/environment
echo 'export https_proxy="http://192.168.33.1:3128"' | sudo tee -a /etc/environment
echo 'export no_proxy="localhost,127.0.0.1"' | sudo tee -a /etc/environment
SHELL
end
if consumer_migration && consumer_migration_state_export
node.vm.provision "file", source: consumer_migration_state_export, destination: "/home/vagrant/migration_state_export.json"
end
end
end
end