Make vagrant file more configurable (#1424)
This commit is contained in:
parent
c4692fe011
commit
fc2f0ad842
|
@ -1,73 +1,108 @@
|
|||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
Vagrant.configure("2") do |config|
|
||||
#
|
||||
# Tweak guest CPUS and MEMORY using:
|
||||
# export VAGRANT_CPUS=4
|
||||
# export VAGRANT_MEMORY=4096
|
||||
# vagrant up debian-buster
|
||||
#
|
||||
|
||||
# libretime web interface
|
||||
config.vm.network "forwarded_port", guest: 8080, host:8080
|
||||
# icecast2
|
||||
config.vm.network "forwarded_port", guest: 8000, host:8000
|
||||
# liquidsoap input harbors for instreaming (ie. /master)
|
||||
config.vm.network "forwarded_port", guest: 8001, host:8001
|
||||
config.vm.network "forwarded_port", guest: 8002, host:8002
|
||||
# database
|
||||
config.vm.network "forwarded_port", guest: 5432, host:5432
|
||||
# api
|
||||
config.vm.network "forwarded_port", guest: 8081, host:8081
|
||||
Vagrant.configure('2') do |config|
|
||||
config.vm.network 'forwarded_port', guest: 8080, host: 8080 # web
|
||||
config.vm.network 'forwarded_port', guest: 8081, host: 8081 # api
|
||||
config.vm.network 'forwarded_port', guest: 8000, host: 8000 # icecast2
|
||||
config.vm.network 'forwarded_port', guest: 8001, host: 8001 # liquidsoap
|
||||
config.vm.network 'forwarded_port', guest: 8002, host: 8002 # liquidsoap
|
||||
config.vm.network 'forwarded_port', guest: 5432, host: 5432 # database
|
||||
|
||||
# make sure we are using nfs (doesn't work out of the box with debian)
|
||||
nfsPath = "."
|
||||
# macOS Catalina support
|
||||
if Dir.exist?("/System/Volumes/Data")
|
||||
nfsPath = "/System/Volumes/Data" + Dir.pwd
|
||||
end
|
||||
config.vm.synced_folder nfsPath, "/vagrant", type: "nfs"
|
||||
# private network for nfs
|
||||
config.vm.network "private_network", ip: "192.168.10.100"
|
||||
config.vm.provider 'virtualbox' do |v|
|
||||
v.cpus = ENV.fetch('VAGRANT_CPUS', 2)
|
||||
v.memory = ENV.fetch('VAGRANT_MEMORY', 1024)
|
||||
|
||||
config.vm.provider "virtualbox" do |v|
|
||||
# to run without OOMing we need at least 1GB of RAM
|
||||
v.memory = 1024
|
||||
|
||||
# enable audio drivers on VM settings
|
||||
# pinched from https://github.com/GeoffreyPlitt/vagrant-audio
|
||||
config.vm.provider :virtualbox do |vb|
|
||||
# Enable audio drivers on VM settings
|
||||
# See https://github.com/geoffreyplitt/vagrant-audio
|
||||
if RUBY_PLATFORM =~ /darwin/
|
||||
vb.customize ["modifyvm", :id, '--audio', 'coreaudio', '--audiocontroller', 'hda'] # choices: hda sb16 ac97
|
||||
v.customize [
|
||||
'modifyvm', :id,
|
||||
'--audio', 'coreaudio',
|
||||
'--audiocontroller', 'hda' # choices: hda sb16 ac97
|
||||
]
|
||||
elsif RUBY_PLATFORM =~ /mingw|mswin|bccwin|cygwin|emx/
|
||||
vb.customize ["modifyvm", :id, '--audio', 'dsound', '--audiocontroller', 'ac97']
|
||||
end
|
||||
v.customize [
|
||||
'modifyvm', :id,
|
||||
'--audio', 'dsound',
|
||||
'--audiocontroller', 'ac97'
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
config.vm.provider "libvirt" do |v|
|
||||
# to run without OOMing we need at least 1GB of RAM
|
||||
v.memory = 1024
|
||||
config.vm.provider 'libvirt' do |v|
|
||||
v.cpus = ENV.fetch('VAGRANT_CPUS', 2)
|
||||
v.memory = ENV.fetch('VAGRANT_MEMORY', 1024)
|
||||
end
|
||||
|
||||
# default installer args used for all distros
|
||||
installer_args="--force --in-place --verbose --postgres --apache --icecast "
|
||||
# NFS
|
||||
def setup_nfs(config, nfs_version = nil)
|
||||
config.vm.network 'private_network', ip: '192.168.10.100'
|
||||
nfs_path = '.'
|
||||
|
||||
# define all the OS boxes we support
|
||||
config.vm.define "ubuntu-bionic" do |os|
|
||||
os.vm.box = "bento/ubuntu-18.04"
|
||||
provision_libretime(os, "debian.sh", installer_args)
|
||||
# NFS macOS support
|
||||
if Dir.exist?('/System/Volumes/Data')
|
||||
nfs_path = '/System/Volumes/Data' + Dir.pwd
|
||||
end
|
||||
config.vm.define "debian-buster" do |os|
|
||||
os.vm.box = "bento/debian-10"
|
||||
provision_libretime(os, "debian.sh", installer_args)
|
||||
|
||||
# See https://www.vagrantup.com/docs/synced-folders/nfs#nfs-synced-folder-options
|
||||
case
|
||||
when nfs_version.nil? then config.vm.synced_folder nfs_path, '/vagrant', type: 'nfs'
|
||||
when nfs_version == 4 then config.vm.synced_folder nfs_path, '/vagrant', type: 'nfs',
|
||||
nfs_version: 4,
|
||||
nfs_udp: false
|
||||
else
|
||||
raise 'Invalid nfs_version provided'
|
||||
end
|
||||
config.vm.define "centos" do |os|
|
||||
end
|
||||
|
||||
def setup_libretime(config, prepare_script, install_args = '')
|
||||
config.vm.provision 'prepare',
|
||||
type: 'shell',
|
||||
path: 'installer/vagrant/%s' % prepare_script
|
||||
|
||||
$script = <<-SCRIPT
|
||||
cd /vagrant
|
||||
./install \
|
||||
--force \
|
||||
--in-place \
|
||||
--verbose \
|
||||
--postgres \
|
||||
--apache \
|
||||
--icecast \
|
||||
--web-port=8080 \
|
||||
#{install_args}
|
||||
SCRIPT
|
||||
|
||||
config.vm.provision 'install', type: 'shell', inline: $script
|
||||
end
|
||||
|
||||
# Define all the OS boxes we support
|
||||
config.vm.define 'ubuntu-bionic' do |os|
|
||||
os.vm.box = 'bento/ubuntu-18.04'
|
||||
setup_nfs(config)
|
||||
setup_libretime(os, 'debian.sh')
|
||||
end
|
||||
|
||||
config.vm.define 'debian-buster' do |os|
|
||||
os.vm.box = 'debian/buster64'
|
||||
config.vm.provider 'virtualbox' do |v, override|
|
||||
override.vm.box = 'bento/debian-10'
|
||||
end
|
||||
setup_nfs(config)
|
||||
setup_libretime(os, 'debian.sh')
|
||||
end
|
||||
|
||||
config.vm.define 'centos' do |os|
|
||||
os.vm.box = 'centos/8'
|
||||
provision_libretime(os, "centos.sh", installer_args + "--selinux")
|
||||
setup_nfs(config)
|
||||
setup_libretime(os, 'centos.sh', '--selinux')
|
||||
end
|
||||
|
||||
def provision_libretime(config, prepare_script, installer_args)
|
||||
# Prepare OS
|
||||
config.vm.provision "prepare", type: "shell", path: "installer/vagrant/%s" % prepare_script
|
||||
|
||||
# Provision LibreTime
|
||||
config.vm.provision "install", type: "shell", inline: "cd /vagrant; ./install %s --web-port=8080" % installer_args
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue