This virtual machine configuration is designed to have ONE application per machine. However, it does support multiple domains / sites per configuration. This virtual machine is a particularly good fit if you run Ubuntu 14.04 LTS on your servers.
- Ubuntu 14.04 Trusty 64bit
- NGINX PHP5-FPM (optional)
- PHP 5.6 (optional)
- NodeJS v0.10.29 (optional)
- MailCatcher (optional)
- Beanstalkd (optional)
- Redis (optional)
- R (optional)
- Java (optional)
- Scala (optional)
- Site configuration defined in the Vagrantfile
- Database configuration defined in the Vagrantfile
- Custom PHP.ini configurations can be defined in the Vagrantfile
- Arbitrary Ruby Gems can be installed from the Vagrantfile
- Bring this repo into your project as the ansible/ folder in the root. You could just copy it there or add it as a submodule:
git submodule add [email protected]:heybigname/ansible.git
- Copy the Vagrantfile into your application root
- Modify your Vagrantfile
- set the name for the box (the part that says CHANGE ME)
- configure your hostname, database details, site details, etc
- Install Vagrant, VirtualBox, and Ansible.
- Just run
vagrant up
Here is a list of options and their default values.
hostname: "dev"
dbuser: "root"
dbpasswd: "password"
databases: []
sites: []
install_db: "no"
install_web: "no"
install_ohmyzsh: "no"
install_hhvm: "no"
install_mailcatcher: "no"
install_beanstalkd: "no"
install_redis: "no"
install_javascript_build_system: "no"
install_gems: []
install_r: "no"
r_packages: []
install_java: "no"
install_scala: "no"
scala_activator_version: "1.2.10"
PHP / NGINX
Vagrant.configure("2") do |config|
config.vm.box = "trusty64"
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.network :private_network, ip: "10.10.10.10"
config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 768]
v.customize ["modifyvm", :id, "--name", "CHANGE ME BEFORE USE"]
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/provision.yml"
ansible.extra_vars = {
hostname: "dev",
dbuser: "root",
dbpasswd: "password",
databases: ["development"],
sites: [
{
hostname: "app.local",
document_root: "/vagrant/site/public"
}, {
hostname: "app2.local",
document_root: "/vagrant/site2/public2"
}
],
php_configs: ["upload_max_filesize=100M", "post_max_size=100M"],
install_gems: ["compass", "zurb-foundation"],
install_db: "yes",
install_ohmyzsh: "yes",
install_web: "yes",
install_mailcatcher: "yes",
install_hhvm: "yes",
install_beanstalkd: "no",
install_redis: "no",
install_javascript_build_system: "no",
install_r: "no",
r_packages: []
}
end
end
Java / Scala
Vagrant.configure("2") do |config|
config.vm.box = "trusty64"
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.network :private_network, ip: "10.10.10.10"
config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 1024]
v.customize ["modifyvm", :id, "--name", "CHANGE ME BEFORE USE"]
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/provision.yml"
ansible.extra_vars = {
install_java: "yes",
install_scala: "yes"
}
end
end
1.10
Updated PHP from 5.5 to 5.6
1.9
Change implementation of PHP configurations
1.8
Add Java / Scala Activator support.
1.7
Allow installation of R and R packages. Created default values for every option, so no more errors when you upgrade.
1.6
Allow installation of Gems and custom PHP.ini declarations from Vagrantfile.
1.5
Add redis as an optional package
1.4
Add beanstalkd as an optional package change zsh theme
1.3
Add Mailcatcher to Upstart
1.2
Added oh-my-zsh configuration (got tired of bash...)