-
Notifications
You must be signed in to change notification settings - Fork 2
/
Vagrantfile
138 lines (118 loc) · 4.82 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
136
137
138
# -*- mode: ruby -*-
# vi: set ft=ruby ts=2 sw=2 et :
require 'yaml'
vagrantpath = File.expand_path(File.dirname(__FILE__))
begin
boxconfig = YAML.load_file(vagrantpath + '/config.yml')
rescue Errno::ENOENT
abort "No config.yml found. Copy config.yml.example to get started."
end
if ! boxconfig['project']
abort "please specify the project name in config.yml"
end
if boxconfig['type']
boxconfigtypefile = vagrantpath + '/' + boxconfig['type'] + '.sh'
unless File.file?(boxconfigtypefile)
abort "the type " + boxconfig['type'] + " does not exist."
end
else
abort "please specify the box type in config.yml"
end
if ! boxconfig['ip']
abort "please specify the ip in config.yml"
end
if ! boxconfig['memory']
abort "please specify memory in config.yml"
end
if ! boxconfig['cpus']
abort "please specify the nr of cpus in config.yml"
end
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "generic/ubuntu1804"
# Set the hostname so you can destinguish between your different projects
config.vm.hostname = boxconfig['project']
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: boxconfig['ip']
if (boxconfig['pubip'] && boxconfig['mac'])
config.vm.network "public_network", ip: boxconfig['pubip'],
mac: boxconfig['mac']
elsif boxconfig['pubip']
config.vm.network "public_network", ip: boxconfig['pubip']
end
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
if (boxconfig['path'])
if (boxconfig['sync'] && boxconfig['sync'] == 'rsync')
config.vm.synced_folder boxconfig['path'], "/var/www/website",
id: "website", type: "rsync", rsync__exclude: ".git"
elsif (boxconfig['sync'] && boxconfig['sync'] == 'nfs')
config.vm.synced_folder boxconfig['path'], "/var/www/website",
id: "website", type: "nfs",
mount_options: ["rw","vers=3","tcp","actimeo=2"]
elsif (boxconfig['sync'] && boxconfig['sync'] == 'vboxsf')
config.vm.synced_folder boxconfig['path'], "/var/www/website",
id: "website"
elsif (boxconfig['sync'] && boxconfig['sync'] == 'nfs_guest')
unless Vagrant.has_plugin?("vagrant-nfs_guest")
puts 'for nfs_guest install vagrant-nfs_guest plugin'
puts ' `vagrant plugin install vagrant-nfs_guest`'
abort
end
config.vm.synced_folder boxconfig['path'], "/var/www/website",
id: "website", type: "nfs_guest"
else
if (RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/)
config.vm.synced_folder boxconfig['path'], "/var/www/website",
id: "website", type: "nfs",
mount_options: ["rw","vers=3","tcp","actimeo=2"]
else
config.vm.synced_folder boxconfig['path'], "/var/www/website",
id: "website"
end
end
end
## sync composer
if (RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/)
config.vm.synced_folder "~/.composer", "/home/vagrant/.composer",
id: "composer"
end
## default share?
config.vm.synced_folder ".", "/vagrant"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
config.vm.provider "virtualbox" do |vb|
vb.linked_clone = true
vb.name = "mage2-" + boxconfig['project']
vb.memory = boxconfig['memory']
vb.cpus = boxconfig['cpus']
if RUBY_PLATFORM =~ /linux/
vb.customize ["modifyvm", :id, "--paravirtprovider", "kvm"]
end
end
# stdin: is not a tty
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
config.ssh.forward_agent = true
#config.ssh.username = "ubuntu"
#config.ssh.insert_key = false
config.vm.provision :shell, :path => boxconfigtypefile
end