Last active
August 29, 2015 14:00
-
-
Save onema/ff8ecf072ed2eb76be25 to your computer and use it in GitHub Desktop.
Vagrantfile - LAMP Development
This file contains 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
# -*- mode: ruby -*- | |
# vi: set ft=ruby : | |
# Config Github Settings | |
github_username = "fideloper" | |
github_repo = "Vaprobash" | |
github_branch = "1.1.0" | |
github_url = "https://raw.githubusercontent.com/#{github_username}/#{github_repo}/#{github_branch}" | |
# Server Configuration | |
hostname = "vaprobash.dev" | |
# Set a local private network IP address. | |
# See http://en.wikipedia.org/wiki/Private_network for explanation | |
# You can use the following IP ranges: | |
# 10.0.0.1 - 10.255.255.254 | |
# 172.16.0.1 - 172.31.255.254 | |
# 192.168.0.1 - 192.168.255.254 | |
server_ip = "192.168.22.10" | |
server_memory = "512" # MB | |
server_swap = "768" # Options: false | int (MB) - Guideline: Between one or two times the server_memory | |
server_timezone = "UTC" | |
synced_folder = "." | |
# Database Configuration | |
mysql_root_password = "root" # We'll assume user "root" | |
mysql_version = "5.6" # Options: 5.5 | 5.6 | |
mysql_enable_remote = "false" # remote access enabled when true | |
pgsql_root_password = "root" # We'll assume user "root" | |
# Languages and Packages | |
ruby_version = "latest" # Choose what ruby version should be installed (will also be the default version) | |
ruby_gems = [ # List any Ruby Gems that you want to install | |
#"jekyll", | |
#"sass", | |
#"compass", | |
] | |
# To install HHVM instead of PHP, set this to "true" | |
hhvm = "false" | |
# PHP Options | |
composer_packages = [ # List any global Composer packages that you want to install | |
"phpunit/phpunit:4.1.*", | |
#"codeception/codeception=*", | |
"phpspec/phpspec:2.0.*@dev", | |
"squizlabs/php_codesniffer:1.5.*", | |
] | |
# Default web server document root | |
# Symfony's public directory is assumed "web" | |
# Laravel's public directory is assumed "public" | |
public_folder = "/vagrant" | |
laravel_root_folder = "/vagrant/laravel" # Where to install Laravel. Will `composer install` if a composer.json file exists | |
laravel_version = "latest-stable" # If you need a specific version of Laravel, set it here | |
symfony_root_folder = "/vagrant/symfony" # Where to install Symfony. | |
nodejs_version = "latest" # By default "latest" will equal the latest stable version | |
nodejs_packages = [ # List any global NodeJS packages that you want to install | |
#"grunt-cli", | |
#"gulp", | |
#"bower", | |
#"yo", | |
] | |
Vagrant.configure("2") do |config| | |
# Set server to Ubuntu 14.04 | |
config.vm.box = "ubuntu/trusty64" | |
config.vm.network "forwarded_port", guest: 80, host: 8000 | |
config.vm.network "forwarded_port", guest: 3306, host: 3306 | |
config.vm.network "forwarded_port", guest: 27017, host: 27017 | |
# Create a hostname, don't forget to put it to the `hosts` file | |
# This will point to the server's default virtual host | |
# TO DO: Make this work with virtualhost along-side xip.io URL | |
config.vm.hostname = "localhost" | |
# List of virtual host to be added to the guest machine | |
# NOTE: | |
# You will need to add the hosts | |
# to the list of hosts in the guest machine | |
# in order for these to be properly routed | |
vhost = { | |
:localhost => { | |
:name => "localhost", | |
:host => "localhost", | |
:aliases => ["localhost.web", "dev.localhost-static.web"], | |
:docroot => "" | |
}, | |
:photoop => { | |
:name => "photoop", | |
:host => "dev.photoop.com", | |
:aliases => [""], | |
:docroot => "/photo-op/web" | |
}, | |
} | |
# Create a static IP | |
config.vm.network :private_network, ip: server_ip | |
# Use NFS for the shared folder | |
config.vm.synced_folder synced_folder, "/vagrant", | |
id: "core", | |
:nfs => true, | |
:mount_options => ['nolock,vers=3,udp,noatime'] | |
# If using VirtualBox | |
config.vm.provider :virtualbox do |vb| | |
# Set server memory | |
vb.customize ["modifyvm", :id, "--memory", server_memory] | |
# Set the timesync threshold to 10 seconds, instead of the default 20 minutes. | |
# If the clock gets more than 15 minutes out of sync (due to your laptop going | |
# to sleep for instance, then some 3rd party services will reject requests. | |
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000] | |
# Prevent VMs running on Ubuntu to lose internet connection | |
# vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] | |
# vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] | |
end | |
# If using VMWare Fusion | |
config.vm.provider "vmware_fusion" do |vb, override| | |
override.vm.box_url = "http://files.vagrantup.com/precise64_vmware.box" | |
# Set server memory | |
vb.vmx["memsize"] = server_memory | |
end | |
# If using Vagrant-Cachier | |
# http://fgrehm.viewdocs.io/vagrant-cachier | |
if Vagrant.has_plugin?("vagrant-cachier") | |
# Configure cached packages to be shared between instances of the same base box. | |
# Usage docs: http://fgrehm.viewdocs.io/vagrant-cachier/usage | |
config.cache.scope = :box | |
config.cache.synced_folder_opts = { | |
type: :nfs, | |
mount_options: ['rw', 'vers=3', 'tcp', 'nolock'] | |
} | |
end | |
#### | |
# Base Items | |
########## | |
# Provision Base Packages | |
config.vm.provision "shell", path: "#{github_url}/scripts/base.sh", args: [github_url, server_swap] | |
# Provision PHP | |
config.vm.provision "shell", path: "#{github_url}/scripts/php.sh", args: [server_timezone, hhvm] | |
# Enable MSSQL for PHP | |
# config.vm.provision "shell", path: "#{github_url}/scripts/mssql.sh" | |
# Provision Vim | |
# config.vm.provision "shell", path: "#{github_url}/scripts/vim.sh", args: github_url | |
#### | |
# Web Servers | |
########## | |
# Provision Apache Base | |
config.vm.provision "shell", path: "#{github_url}/scripts/apache.sh", args: [server_ip, public_folder, hostname, github_url] | |
# Provision Nginx Base | |
# config.vm.provision "shell", path: "#{github_url}/scripts/nginx.sh", args: [server_ip, public_folder, hostname, github_url] | |
#### | |
# Databases | |
########## | |
# Provision MySQL | |
config.vm.provision "shell", path: "#{github_url}/scripts/mysql.sh", args: [mysql_root_password, mysql_version, mysql_enable_remote] | |
# Provision PostgreSQL | |
# config.vm.provision "shell", path: "#{github_url}/scripts/pgsql.sh", args: pgsql_root_password | |
# Provision SQLite | |
# config.vm.provision "shell", path: "#{github_url}/scripts/sqlite.sh" | |
# Provision RethinkDB | |
# config.vm.provision "shell", path: "#{github_url}/scripts/rethinkdb.sh", args: pgsql_root_password | |
# Provision Couchbase | |
# config.vm.provision "shell", path: "#{github_url}/scripts/couchbase.sh" | |
# Provision CouchDB | |
# config.vm.provision "shell", path: "#{github_url}/scripts/couchdb.sh" | |
# Provision MongoDB | |
config.vm.provision "shell", path: "#{github_url}/scripts/mongodb.sh" | |
# Provision MariaDB | |
# config.vm.provision "shell", path: "#{github_url}/scripts/mariadb.sh", args: [mysql_root_password, mysql_enable_remote] | |
#### | |
# Search Servers | |
########## | |
# Install Elasticsearch | |
# config.vm.provision "shell", path: "#{github_url}/scripts/elasticsearch.sh" | |
# Install SphinxSearch | |
# config.vm.provision "shell", path: "#{github_url}/scripts/sphinxsearch.sh" | |
#### | |
# Search Server Administration (web-based) | |
########## | |
# Install ElasticHQ | |
# Admin for: Elasticsearch | |
# Works on: Apache2, Nginx | |
# config.vm.provision "shell", path: "#{github_url}/scripts/elastichq.sh" | |
#### | |
# In-Memory Stores | |
########## | |
# Install Memcached | |
config.vm.provision "shell", path: "#{github_url}/scripts/memcached.sh" | |
# Provision Redis (without journaling and persistence) | |
config.vm.provision "shell", path: "#{github_url}/scripts/redis.sh" | |
# Provision Redis (with journaling and persistence) | |
# config.vm.provision "shell", path: "#{github_url}/scripts/redis.sh", args: "persistent" | |
# NOTE: It is safe to run this to add persistence even if originally provisioned without persistence | |
#### | |
# Utility (queue) | |
########## | |
# Install Beanstalkd | |
# config.vm.provision "shell", path: "#{github_url}/scripts/beanstalkd.sh" | |
# Install Heroku Toolbelt | |
# config.vm.provision "shell", path: "https://toolbelt.heroku.com/install-ubuntu.sh" | |
# Install Supervisord | |
# config.vm.provision "shell", path: "#{github_url}/scripts/supervisord.sh" | |
#### | |
# Additional Languages | |
########## | |
# Install Nodejs | |
# config.vm.provision "shell", path: "#{github_url}/scripts/nodejs.sh", privileged: false, args: nodejs_packages.unshift(nodejs_version, github_url) | |
# Install Ruby Version Manager (RVM) | |
# config.vm.provision "shell", path: "#{github_url}/scripts/rvm.sh", privileged: false, args: ruby_gems.unshift(ruby_version) | |
#### | |
# Frameworks and Tooling | |
########## | |
# Provision Composer | |
config.vm.provision "shell", path: "#{github_url}/scripts/composer.sh", privileged: false, args: composer_packages.join(" ") | |
# Provision Laravel | |
# config.vm.provision "shell", path: "#{github_url}/scripts/laravel.sh", privileged: false, args: [server_ip, laravel_root_folder, public_folder, laravel_version] | |
# Provision Symfony | |
# config.vm.provision "shell", path: "#{github_url}/scripts/symfony.sh", privileged: false, args: [server_ip, symfony_root_folder, public_folder] | |
# Install Screen | |
# config.vm.provision "shell", path: "#{github_url}/scripts/screen.sh" | |
# Install Mailcatcher | |
# config.vm.provision "shell", path: "#{github_url}/scripts/mailcatcher.sh" | |
# Install git-ftp | |
# config.vm.provision "shell", path: "#{github_url}/scripts/git-ftp.sh", privileged: false | |
#### | |
# Local Scripts | |
# Any local scripts you may want to run post-provisioning. | |
# Add these to the same directory as the Vagrantfile. | |
########## | |
# config.vm.provision "shell", path: "./local-script.sh" | |
#### | |
# Setup and enable Virtual Host - APACHE ONLY | |
########## | |
vhost.each do |app_name, site| | |
# Add host and document root | |
config.vm.provision "shell" do |s| | |
s.inline = "sudo vhost -s #{site[:host]} -d $1#{site[:docroot]}" | |
s.args = [public_folder] | |
end | |
# Enable site | |
config.vm.provision "shell" do |s| | |
s.inline = "sudo a2ensite #{site[:host]}" | |
end | |
# Add site info in /etc/hosts | |
config.vm.provision "shell" do |s| | |
s.inline = "echo 127.0.0.1 #{site[:host]} >> /etc/hosts" | |
end | |
end | |
end |
This file contains 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
# -*- mode: ruby -*- | |
# vi: set ft=ruby : | |
# Config Github Settings | |
github_username = "fideloper" | |
github_repo = "Vaprobash" | |
github_branch = "1.1.0" | |
github_url = "https://raw.githubusercontent.com/#{github_username}/#{github_repo}/#{github_branch}" | |
# Server Configuration | |
hostname = "vaprobash.dev" | |
# Set a local private network IP address. | |
# See http://en.wikipedia.org/wiki/Private_network for explanation | |
# You can use the following IP ranges: | |
# 10.0.0.1 - 10.255.255.254 | |
# 172.16.0.1 - 172.31.255.254 | |
# 192.168.0.1 - 192.168.255.254 | |
server_ip = "192.168.22.10" | |
server_memory = "512" # MB | |
server_swap = "768" # Options: false | int (MB) - Guideline: Between one or two times the server_memory | |
server_timezone = "UTC" | |
synced_folder = "." | |
# Database Configuration | |
mysql_root_password = "root" # We'll assume user "root" | |
mysql_version = "5.6" # Options: 5.5 | 5.6 | |
mysql_enable_remote = "false" # remote access enabled when true | |
pgsql_root_password = "root" # We'll assume user "root" | |
# Languages and Packages | |
ruby_version = "latest" # Choose what ruby version should be installed (will also be the default version) | |
ruby_gems = [ # List any Ruby Gems that you want to install | |
#"jekyll", | |
#"sass", | |
#"compass", | |
] | |
# To install HHVM instead of PHP, set this to "true" | |
hhvm = "false" | |
# PHP Options | |
composer_packages = [ # List any global Composer packages that you want to install | |
"phpunit/phpunit:4.1.*", | |
#"codeception/codeception=*", | |
"phpspec/phpspec:2.0.*@dev", | |
"squizlabs/php_codesniffer:1.5.*", | |
] | |
# Default web server document root | |
# Symfony's public directory is assumed "web" | |
# Laravel's public directory is assumed "public" | |
public_folder = "/vagrant" | |
laravel_root_folder = "/vagrant/laravel" # Where to install Laravel. Will `composer install` if a composer.json file exists | |
laravel_version = "latest-stable" # If you need a specific version of Laravel, set it here | |
symfony_root_folder = "/vagrant/symfony" # Where to install Symfony. | |
nodejs_version = "latest" # By default "latest" will equal the latest stable version | |
nodejs_packages = [ # List any global NodeJS packages that you want to install | |
#"grunt-cli", | |
#"gulp", | |
#"bower", | |
#"yo", | |
] | |
Vagrant.configure("2") do |config| | |
# Set server to Ubuntu 14.04 | |
config.vm.box = "ubuntu/trusty64" | |
config.vm.network "forwarded_port", guest: 80, host: 8000 | |
config.vm.network "forwarded_port", guest: 3306, host: 3306 | |
config.vm.network "forwarded_port", guest: 27017, host: 27017 | |
# Create a hostname, don't forget to put it to the `hosts` file | |
# This will point to the server's default virtual host | |
# TO DO: Make this work with virtualhost along-side xip.io URL | |
config.vm.hostname = "localhost" | |
# List of virtual host to be added to the guest machine | |
# NOTE: | |
# You will need to add the hosts | |
# to the list of hosts in the guest machine | |
# in order for these to be properly routed | |
vhost = { | |
:localhost => { | |
:name => "localhost", | |
:host => "localhost", | |
:aliases => ["localhost.web", "dev.localhost-static.web"], | |
:docroot => "" | |
}, | |
:photoop => { | |
:name => "photoop", | |
:host => "dev.photoop.com", | |
:aliases => [""], | |
:docroot => "/photo-op/web" | |
}, | |
} | |
# Create a static IP | |
config.vm.network :private_network, ip: server_ip | |
# Use NFS for the shared folder | |
config.vm.synced_folder synced_folder, "/vagrant", | |
id: "core", | |
:nfs => true#, | |
#:mount_options => ['nolock,vers=3,udp,noatime'] | |
# If using VirtualBox | |
config.vm.provider :virtualbox do |vb| | |
# Set server memory | |
vb.customize ["modifyvm", :id, "--memory", server_memory] | |
# Set the timesync threshold to 10 seconds, instead of the default 20 minutes. | |
# If the clock gets more than 15 minutes out of sync (due to your laptop going | |
# to sleep for instance, then some 3rd party services will reject requests. | |
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000] | |
# Prevent VMs running on Ubuntu to lose internet connection | |
# vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] | |
# vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] | |
end | |
# If using VMWare Fusion | |
config.vm.provider "vmware_fusion" do |vb, override| | |
override.vm.box_url = "http://files.vagrantup.com/precise64_vmware.box" | |
# Set server memory | |
vb.vmx["memsize"] = server_memory | |
end | |
# If using Vagrant-Cachier | |
# http://fgrehm.viewdocs.io/vagrant-cachier | |
if Vagrant.has_plugin?("vagrant-cachier") | |
# Configure cached packages to be shared between instances of the same base box. | |
# Usage docs: http://fgrehm.viewdocs.io/vagrant-cachier/usage | |
config.cache.scope = :box | |
config.cache.synced_folder_opts = { | |
type: :nfs, | |
mount_options: ['rw', 'vers=3', 'tcp', 'nolock'] | |
} | |
end | |
#### | |
# Base Items | |
########## | |
# Provision Base Packages | |
config.vm.provision "shell", path: "#{github_url}/scripts/base.sh", args: [github_url, server_swap] | |
# Provision PHP | |
config.vm.provision "shell", path: "#{github_url}/scripts/php.sh", args: [server_timezone, hhvm] | |
# Enable MSSQL for PHP | |
# config.vm.provision "shell", path: "#{github_url}/scripts/mssql.sh" | |
# Provision Vim | |
# config.vm.provision "shell", path: "#{github_url}/scripts/vim.sh", args: github_url | |
#### | |
# Web Servers | |
########## | |
# Provision Apache Base | |
config.vm.provision "shell", path: "#{github_url}/scripts/apache.sh", args: [server_ip, public_folder, hostname, github_url] | |
# Provision Nginx Base | |
# config.vm.provision "shell", path: "#{github_url}/scripts/nginx.sh", args: [server_ip, public_folder, hostname, github_url] | |
#### | |
# Databases | |
########## | |
# Provision MySQL | |
config.vm.provision "shell", path: "#{github_url}/scripts/mysql.sh", args: [mysql_root_password, mysql_version, mysql_enable_remote] | |
# Provision PostgreSQL | |
# config.vm.provision "shell", path: "#{github_url}/scripts/pgsql.sh", args: pgsql_root_password | |
# Provision SQLite | |
# config.vm.provision "shell", path: "#{github_url}/scripts/sqlite.sh" | |
# Provision RethinkDB | |
# config.vm.provision "shell", path: "#{github_url}/scripts/rethinkdb.sh", args: pgsql_root_password | |
# Provision Couchbase | |
# config.vm.provision "shell", path: "#{github_url}/scripts/couchbase.sh" | |
# Provision CouchDB | |
# config.vm.provision "shell", path: "#{github_url}/scripts/couchdb.sh" | |
# Provision MongoDB | |
config.vm.provision "shell", path: "#{github_url}/scripts/mongodb.sh" | |
# Provision MariaDB | |
# config.vm.provision "shell", path: "#{github_url}/scripts/mariadb.sh", args: [mysql_root_password, mysql_enable_remote] | |
#### | |
# Search Servers | |
########## | |
# Install Elasticsearch | |
# config.vm.provision "shell", path: "#{github_url}/scripts/elasticsearch.sh" | |
# Install SphinxSearch | |
# config.vm.provision "shell", path: "#{github_url}/scripts/sphinxsearch.sh" | |
#### | |
# Search Server Administration (web-based) | |
########## | |
# Install ElasticHQ | |
# Admin for: Elasticsearch | |
# Works on: Apache2, Nginx | |
# config.vm.provision "shell", path: "#{github_url}/scripts/elastichq.sh" | |
#### | |
# In-Memory Stores | |
########## | |
# Install Memcached | |
config.vm.provision "shell", path: "#{github_url}/scripts/memcached.sh" | |
# Provision Redis (without journaling and persistence) | |
config.vm.provision "shell", path: "#{github_url}/scripts/redis.sh" | |
# Provision Redis (with journaling and persistence) | |
# config.vm.provision "shell", path: "#{github_url}/scripts/redis.sh", args: "persistent" | |
# NOTE: It is safe to run this to add persistence even if originally provisioned without persistence | |
#### | |
# Utility (queue) | |
########## | |
# Install Beanstalkd | |
# config.vm.provision "shell", path: "#{github_url}/scripts/beanstalkd.sh" | |
# Install Heroku Toolbelt | |
# config.vm.provision "shell", path: "https://toolbelt.heroku.com/install-ubuntu.sh" | |
# Install Supervisord | |
# config.vm.provision "shell", path: "#{github_url}/scripts/supervisord.sh" | |
#### | |
# Additional Languages | |
########## | |
# Install Nodejs | |
# config.vm.provision "shell", path: "#{github_url}/scripts/nodejs.sh", privileged: false, args: nodejs_packages.unshift(nodejs_version, github_url) | |
# Install Ruby Version Manager (RVM) | |
# config.vm.provision "shell", path: "#{github_url}/scripts/rvm.sh", privileged: false, args: ruby_gems.unshift(ruby_version) | |
#### | |
# Frameworks and Tooling | |
########## | |
# Provision Composer | |
config.vm.provision "shell", path: "#{github_url}/scripts/composer.sh", privileged: false, args: composer_packages.join(" ") | |
# Provision Laravel | |
# config.vm.provision "shell", path: "#{github_url}/scripts/laravel.sh", privileged: false, args: [server_ip, laravel_root_folder, public_folder, laravel_version] | |
# Provision Symfony | |
# config.vm.provision "shell", path: "#{github_url}/scripts/symfony.sh", privileged: false, args: [server_ip, symfony_root_folder, public_folder] | |
# Install Screen | |
# config.vm.provision "shell", path: "#{github_url}/scripts/screen.sh" | |
# Install Mailcatcher | |
# config.vm.provision "shell", path: "#{github_url}/scripts/mailcatcher.sh" | |
# Install git-ftp | |
# config.vm.provision "shell", path: "#{github_url}/scripts/git-ftp.sh", privileged: false | |
#### | |
# Local Scripts | |
# Any local scripts you may want to run post-provisioning. | |
# Add these to the same directory as the Vagrantfile. | |
########## | |
# config.vm.provision "shell", path: "./local-script.sh" | |
#### | |
# Setup and enable Virtual Host - APACHE ONLY | |
########## | |
vhost.each do |app_name, site| | |
# Add host and document root | |
config.vm.provision "shell" do |s| | |
s.inline = "sudo vhost -s #{site[:host]} -d $1#{site[:docroot]}" | |
s.args = [public_folder] | |
end | |
# Enable site | |
config.vm.provision "shell" do |s| | |
s.inline = "sudo a2ensite #{site[:host]}" | |
end | |
# Add site info in /etc/hosts | |
config.vm.provision "shell" do |s| | |
s.inline = "echo 127.0.0.1 #{site[:host]} >> /etc/hosts" | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment