Last active
March 14, 2017 22:42
-
-
Save torian/9aaad52f432ddc325b19cd1db54bdca6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# vi:ts=2:sw=2:et:ft=ruby | |
VAGRANTFILE_API_VERSION = "2" | |
# << Consul | |
# | |
consul_version = '0.7.0' | |
$consul_script = <<SCRIPT | |
echo Installing dependencies... | |
sudo apt-get update | |
sudo apt-get install -y unzip curl vim screen | |
sudo rm -rf /var/consul | |
echo Fetching Consul... | |
cd /tmp/ | |
[ ! -f consul.zip ] && \ | |
curl -s https://releases.hashicorp.com/consul/#{consul_version}/consul_#{consul_version}_linux_amd64.zip -o consul.zip | |
[ ! -f /usr/bin/consul ] && \ | |
echo Installing Consul... && \ | |
unzip consul.zip && \ | |
sudo chmod +x consul && \ | |
sudo mv consul /usr/bin/consul | |
[ ! -f consul-ui.zip ] && \ | |
curl -s https://releases.hashicorp.com/consul/#{consul_version}/consul_#{consul_version}_web_ui.zip -o consul-ui.zip | |
[ ! -f /opt/consul-ui/index.html ] && \ | |
sudo mkdir -p /opt/consul-ui && \ | |
sudo unzip -d /opt/consul-ui consul-ui.zip | |
sudo mkdir -p /etc/consul.d /var/consul | |
sudo chmod a+w /etc/consul.d | |
SCRIPT | |
$consul_srv = <<CONFIG | |
PUBIP=$(/sbin/ip addr show dev eth1 | awk '/inet / { gsub(/\/24/, "", $2) ; print $2 }') | |
cat <<EOF > /etc/consul.d/server.json | |
{ | |
"bind_addr": "$1", | |
$([ "${2:-0}" == 1 ] && echo '"ui_dir": "/opt/consul-ui",' || :) | |
$([ "${2:-0}" == 1 ] && echo '"addresses" : { "http": "0.0.0.0" },' || :) | |
"domain": "test", | |
"datacenter": "vagrant", | |
"data_dir": "/var/consul", | |
"encrypt": "EXz7LFN8hpQ4id8EDYiFoQ==", | |
"log_level": "INFO", | |
"enable_syslog": true, | |
"enable_debug": true, | |
"server": true, | |
"bootstrap_expect": 3, | |
"leave_on_terminate": false, | |
"skip_leave_on_interrupt": true, | |
"rejoin_after_leave": true, | |
"retry_join": [ | |
"172.23.20.10:8301", | |
"172.23.20.11:8301", | |
"172.23.20.12:8301" | |
] | |
} | |
EOF | |
CONFIG | |
# << Nomad | |
# | |
nomad_version = '0.4.1' | |
$nomad_script = <<SCRIPT | |
echo Fetching Nomad... | |
cd /tmp/ | |
[ ! -f nomad.zip ] && \ | |
curl -s https://releases.hashicorp.com/nomad/#{nomad_version}/nomad_#{nomad_version}_linux_amd64.zip -o nomad.zip | |
[ ! -f /usr/bin/nomad ] && \ | |
echo Installing Nomad... && \ | |
unzip nomad.zip && \ | |
sudo chmod +x nomad && \ | |
sudo mv nomad /usr/bin/nomad | |
sudo mkdir -p /etc/nomad.d /var/nomad | |
sudo chmod a+w /etc/nomad.d | |
SCRIPT | |
#bind_addr = "$(ip addr show dev eth1 | awk '/inet /{ print gensub(/\/24$/, '', 'g', $2) }')" | |
$nomad_srv = <<CONFIG | |
cat <<EOF > /etc/nomad.d/nomad.hcl | |
bind_addr = "${1}" | |
# Increase log verbosity | |
log_level = "DEBUG" | |
# Setup data dir | |
data_dir = "/var/nomad" | |
# Enable the server | |
server { | |
enabled = true | |
bootstrap_expect = 3 | |
} | |
consul { | |
server_auto_join = true | |
} | |
EOF | |
CONFIG | |
# << Vault | |
# | |
vault_version = '0.6.2' | |
$vault_script = <<SCRIPT | |
echo Fetching Vault... | |
cd /tmp/ | |
[ ! -f vault.zip ] && \ | |
curl -s https://releases.hashicorp.com/vault/#{vault_version}/vault_{vault_version}_linux_amd64.zip -o vault.zip | |
[ ! -f /usr/bin/vault ] && \ | |
echo Installing Vault... && \ | |
unzip vault.zip && \ | |
sudo chmod +x vault && \ | |
sudo mv vault /usr/bin/vault | |
sudo mkdir -p /etc/vault.d /var/vault | |
sudo chmod a+w /etc/vault.d | |
SCRIPT | |
$vault_srv = <<CONFIG | |
cat <<EOF > /etc/vault.d/vault.hcl | |
backend "consul" { | |
address = "127.0.0.1:8500" | |
path = "vault" | |
} | |
listener "tcp" { | |
address = "0.0.0.0:8200" | |
tls_disable = 1 | |
} | |
#telemetry { | |
# statsite_address = "0.0.0.0:8125" | |
# disable_hostname = true | |
#} | |
EOF | |
CONFIG | |
## | |
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | |
config.vm.box = "debian/wheezy64" | |
config.vm.provision "shell", inline: $consul_script | |
config.vm.provision "shell", inline: $nomad_script | |
config.vm.provision "shell", inline: $vault_script | |
config.vm.define "n1" do |n1| | |
ip = "172.23.20.10" | |
n1.vm.hostname = "n1" | |
n1.vm.network "private_network", ip: "#{ip}" | |
n1.vm.network 'forwarded_port', guest: 8500, host: 8500 | |
n1.vm.provision "shell", inline: $consul_srv, :args => [ "#{ip}", 1 ] | |
n1.vm.provision "shell", inline: "screen -S consul -dm sudo consul agent -config-dir /etc/consul.d" | |
n1.vm.provision "shell", inline: $nomad_srv, :args => [ "#{ip}", 1 ] | |
n1.vm.provision "shell", inline: "screen -S nomad -dm sudo nomad agent -config /etc/nomad.d/nomad.hcl" | |
# Setup vault server | |
n1.vm.provision "shell", inline: $vault_srv | |
n1.vm.provision "shell", inline: "screen -S vault -dm sudo vault server -dev -config /etc/vault.d/vault.hcl || sudo vault server -config /etc/vault.d/vault.hcl" | |
end | |
config.vm.define "n2" do |n2| | |
ip = "172.23.20.11" | |
n2.vm.hostname = "n2" | |
n2.vm.network "private_network", ip: "#{ip}" | |
n2.vm.network 'forwarded_port', guest: 8500, host: 8501 | |
n2.vm.provision "shell", inline: $consul_srv, :args => "#{ip}" | |
n2.vm.provision "shell", inline: "screen -S consul -dm sudo consul agent -config-dir /etc/consul.d" | |
n2.vm.provision "shell", inline: $nomad_srv, :args => [ "#{ip}", 1 ] | |
n2.vm.provision "shell", inline: "screen -S nomad -dm sudo nomad agent -config /etc/nomad.d/nomad.hcl" | |
end | |
config.vm.define "n3" do |n3| | |
ip = "172.23.20.12" | |
n3.vm.hostname = "n3" | |
n3.vm.network "private_network", ip: "#{ip}" | |
n3.vm.network 'forwarded_port', guest: 8500, host: 8502 | |
n3.vm.provision "shell", inline: $consul_srv, :args => "#{ip}" | |
n3.vm.provision "shell", inline: "screen -S consul -dm sudo consul agent -config-dir /etc/consul.d" | |
n3.vm.provision "shell", inline: $nomad_srv, :args => [ "#{ip}", 1 ] | |
n3.vm.provision "shell", inline: "screen -S nomad -dm sudo nomad agent -config /etc/nomad.d/nomad.hcl" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment