Skip to content

Instantly share code, notes, and snippets.

@netmarkjp
Created July 21, 2014 13:50
Show Gist options
  • Save netmarkjp/e58f32c7a4abf85e93b3 to your computer and use it in GitHub Desktop.
Save netmarkjp/e58f32c7a4abf85e93b3 to your computer and use it in GitHub Desktop.
# -*- 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|
[ :client ].each do |sym|
config.vm.define sym do |config|
config.vm.box = sym.to_s
config.vm.hostname = sym.to_s
config.vm.box_url = "https://dl.dropboxusercontent.com/u/423294/box/c6.box"
config.vm.network :private_network, ip: "10.0.0.70"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--memory", "512"]
end
$script = <<SCRIPT
yum -y install tcpdump
ip route add 172.16.0.0/24 dev eth1 via 10.0.0.254
SCRIPT
config.vm.provision "shell", inline: $script
end
end
[ :client2 ].each do |sym|
config.vm.define sym do |config|
config.vm.box = sym.to_s
config.vm.hostname = sym.to_s
config.vm.box_url = "https://dl.dropboxusercontent.com/u/423294/box/c6.box"
config.vm.network :private_network, ip: "192.168.8.50"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--memory", "512"]
end
$script = <<SCRIPT
yum -y install tcpdump
ip route del default
ip route add default dev eth1 via 192.168.8.254
SCRIPT
config.vm.provision "shell", inline: $script
end
end
[ :rt ].each do |sym|
config.vm.define sym do |config|
config.vm.box = sym.to_s
config.vm.hostname = sym.to_s
config.vm.box_url = "https://dl.dropboxusercontent.com/u/423294/box/c6.box"
config.vm.network :private_network, ip: "10.0.0.254"
config.vm.network :private_network, ip: "192.168.8.254"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--memory", "512"]
end
$script = <<SCRIPT
yum -y install tcpdump
ip route add 172.16.0.0/24 dev eth2
sysctl -w net.ipv4.ip_forward=1
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
SCRIPT
config.vm.provision "shell", inline: $script
end
end
[ :lb ].each do |sym|
config.vm.define sym do |config|
config.vm.box = sym.to_s
config.vm.hostname = sym.to_s
config.vm.box_url = "https://dl.dropboxusercontent.com/u/423294/box/c6.box"
config.vm.network :private_network, ip: "192.168.8.10"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--memory", "512"]
end
$script = <<SCRIPT
yum -y install tcpdump
yum -y install keepalived ipvsadm
iptables -F
iptables -t mangle -A PREROUTING -d 172.16.0.100 -j MARK --set-mark 1
ip rule add prio 100 fwmark 1 table 100
ip route add local 0/0 dev lo table 100
sysctl -w net.ipv4.conf.eth1.rp_filter=0
ip route del default
ip route add default dev eth1 via 192.168.8.254
cat <<FIN >/etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
172.16.0.100
}
}
virtual_server 172.16.0.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
protocol TCP
real_server 192.168.8.101 80 {
weight 1
}
real_server 192.168.8.102 80 {
weight 1
}
}
FIN
service keepalived start
SCRIPT
config.vm.provision "shell", inline: $script
end
end
[ :web1 ].each do |sym|
config.vm.define sym do |config|
config.vm.box = sym.to_s
config.vm.hostname = sym.to_s
config.vm.box_url = "https://dl.dropboxusercontent.com/u/423294/box/c6.box"
config.vm.network :private_network, ip: "192.168.8.101"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--memory", "512"]
end
$script = <<SCRIPT
yum -y install tcpdump
yum -y install httpd
service httpd start
iptables -F
iptables -t nat -A PREROUTING -d 172.16.0.100 -j REDIRECT
ip route del default
ip route add default dev eth1 via 192.168.8.254
SCRIPT
config.vm.provision "shell", inline: $script
end
end
[ :web2 ].each do |sym|
config.vm.define sym do |config|
config.vm.box = sym.to_s
config.vm.hostname = sym.to_s
config.vm.box_url = "https://dl.dropboxusercontent.com/u/423294/box/c6.box"
config.vm.network :private_network, ip: "192.168.8.102"
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--memory", "512"]
end
$script = <<SCRIPT
yum -y install tcpdump
yum -y install httpd
service httpd start
iptables -F
iptables -t nat -A PREROUTING -d 172.16.0.100 -j REDIRECT
ip route del default
ip route add default dev eth1 via 192.168.8.254
SCRIPT
config.vm.provision "shell", inline: $script
end
end
end
@netmarkjp
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment