-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVagrantfile
95 lines (75 loc) · 4.11 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
# -*- mode: ruby -*-
# vi: set ft=ruby :
require 'yaml'
currentDir = File.expand_path(File.dirname(__FILE__))
herculesYamlPath = currentDir + "/hercules.yaml"
scriptsDir = currentDir + "/scripts/"
Vagrant.configure("2") do |config|
if File.exist? herculesYamlPath then
settings = YAML::load(File.read(herculesYamlPath))
else
abort "Hercules settings file not found in #{currentDir}. Create a »hercules.yaml« file in the ~/hercules directory."
end
# Set the VM Provider
ENV['VAGRANT_DEFAULT_PROVIDER'] = settings["provider"] ||= "virtualbox"
# Pick a base box
config.vm.box = "ubuntu/bionic64"
config.ssh.forward_agent = true
# Box naming
config.vm.hostname = settings["hostname"] ||= "hercules"
# Configure box settings
config.vm.provider "virtualbox" do |vb|
vb.name = "hercules"
vb.customize ["modifyvm", :id, "--memory", settings["memory"] ||= "2048"]
vb.customize ["modifyvm", :id, "--cpus", settings["cpus"] ||= "1"]
vb.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
end
# Create a dedicated private network
# allows host-only access to the machine using the IP address
config.vm.network :private_network, ip: settings["ip"] ||= "192.168.33.10"
# Forward ports
config.vm.network :forwarded_port, guest: 6379, host: 6379 # Redis
config.vm.network :forwarded_port, guest: 3306, host: 3306 # MariaDB
config.vm.network :forwarded_port, guest: 5432, host: 5432 # Postgres
# Provisioning
config.vm.provision "shell", path: scriptsDir + "update-system.sh"
config.vm.provision "shell", path: scriptsDir + "install-node.sh"
config.vm.provision "shell", path: scriptsDir + "install-git.sh"
config.vm.provision "shell", path: scriptsDir + "install-nginx.sh"
# Install Services
config.vm.provision "shell", path: scriptsDir + "install-maria.sh"
config.vm.provision "shell", path: scriptsDir + "install-postgres.sh"
config.vm.provision "shell", path: scriptsDir + "install-redis.sh"
config.vm.provision "shell", path: scriptsDir + "install-sqlite.sh"
if settings.has_key?("cockroachdb") && settings["cockroachdb"]
config.vm.provision "shell", path: scriptsDir + "install-cockroach.sh"
config.vm.network :forwarded_port, guest: 26257, host: 26257 # CockroachDB clients
config.vm.network :forwarded_port, guest: 8090, host: 8090 # CockroachDB admin console
end
if settings.has_key?("elasticsearch") && settings["elasticsearch"]
config.vm.provision "shell", path: scriptsDir + "install-elasticsearch.sh"
config.vm.network :forwarded_port, guest: 9200, host: 9200 # Elasticsarch REST
config.vm.network :forwarded_port, guest: 9300, host: 9300 # Elasticsarch cluster communication
end
if settings.has_key?("mongodb") && settings["mongodb"]
config.vm.provision "shell", path: scriptsDir + "install-mongo.sh"
config.vm.network :forwarded_port, guest: 27017, host: 27017 # MongoDB
end
if settings.has_key?("rabbitmq") && settings["rabbitmq"]
config.vm.provision "shell", path: scriptsDir + "install-rabbit.sh"
config.vm.network :forwarded_port, guest: 5672, host: 5672 # RabbitMQ
config.vm.network :forwarded_port, guest: 15672, host: 15672 # RabbitMQ for HTTP and management
config.vm.network :forwarded_port, guest: 15671, host: 15671 # RabbitMQ for HTTPS and management
end
if settings.has_key?("rethinkdb") && settings["rethinkdb"]
config.vm.provision "shell", path: scriptsDir + "install-rethinkdb.sh"
config.vm.network :forwarded_port, guest: 29015, host: 29015 # RethinkDB infrastructure connections
config.vm.network :forwarded_port, guest: 28015, host: 28015 # RethinkDB driver connections
config.vm.network :forwarded_port, guest: 8080, host: 8080 # RethinkDB admin console
end
if settings.has_key?("faktory") && settings["faktory"]
config.vm.provision "shell", path: scriptsDir + "install-faktory.sh"
config.vm.network :forwarded_port, guest: 7419, host: 7419 # Faktory
config.vm.network :forwarded_port, guest: 7420, host: 7420 # Faktory Web UI
end
end