diff -r 1a3fa80225b2 -r 5a0cbbe0922a authserver/homestead/scripts/homestead.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/authserver/homestead/scripts/homestead.rb Wed May 27 15:34:06 2015 +0200 @@ -0,0 +1,142 @@ +class Homestead + def Homestead.configure(config, settings) + # Set The VM Provider + ENV['VAGRANT_DEFAULT_PROVIDER'] = settings["provider"] ||= "virtualbox" + + # Configure Local Variable To Access Scripts From Remote Location + scriptDir = File.dirname(__FILE__) + + # Prevent TTY Errors + config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'" + + # Configure The Box + config.vm.box = "laravel/homestead" + config.vm.hostname = "homestead" + + # Configure A Private Network IP + config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10" + + # Configure A Few VirtualBox Settings + config.vm.provider "virtualbox" do |vb| + vb.name = 'homestead' + vb.customize ["modifyvm", :id, "--memory", settings["memory"] ||= "2048"] + vb.customize ["modifyvm", :id, "--cpus", settings["cpus"] ||= "1"] + vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] + vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] + vb.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"] + end + + # Configure A Few VMware Settings + ["vmware_fusion", "vmware_workstation"].each do |vmware| + config.vm.provider vmware do |v| + v.vmx["displayName"] = "homestead" + v.vmx["memsize"] = settings["memory"] ||= 2048 + v.vmx["numvcpus"] = settings["cpus"] ||= 1 + v.vmx["guestOS"] = "ubuntu-64" + end + end + + # Configure Port Forwarding To The Box + config.vm.network "forwarded_port", guest: 80, host: 8000 + config.vm.network "forwarded_port", guest: 443, host: 44300 + config.vm.network "forwarded_port", guest: 3306, host: 33060 + config.vm.network "forwarded_port", guest: 5432, host: 54320 + + # Add Custom Ports From Configuration + if settings.has_key?("ports") + settings["ports"].each do |port| + config.vm.network "forwarded_port", guest: port["guest"] || port["to"], host: port["host"] || port["send"], protocol: port["protocol"] ||= "tcp" + end + end + + # Configure The Public Key For SSH Access + if settings.include? 'authorize' + config.vm.provision "shell" do |s| + s.inline = "echo $1 | grep -xq \"$1\" /home/vagrant/.ssh/authorized_keys || echo $1 | tee -a /home/vagrant/.ssh/authorized_keys" + s.args = [File.read(File.expand_path(settings["authorize"]))] + end + end + + # Copy The SSH Private Keys To The Box + if settings.include? 'keys' + settings["keys"].each do |key| + config.vm.provision "shell" do |s| + s.privileged = false + s.inline = "echo \"$1\" > /home/vagrant/.ssh/$2 && chmod 600 /home/vagrant/.ssh/$2" + s.args = [File.read(File.expand_path(key)), key.split('/').last] + end + end + end + + # Register All Of The Configured Shared Folders + if settings.include? 'folders' + settings["folders"].each do |folder| + mount_opts = folder["type"] == "nfs" ? ['actimeo=1'] : [] + config.vm.synced_folder folder["map"], folder["to"], type: folder["type"] ||= nil, mount_options: mount_opts + end + end + + # Install All The Configured Nginx Sites + settings["sites"].each do |site| + config.vm.provision "shell" do |s| + if (site.has_key?("hhvm") && site["hhvm"]) + s.path = scriptDir + "/serve-hhvm.sh" + s.args = [site["map"], site["to"], site["port"] ||= "80", site["ssl"] ||= "443"] + else + s.path = scriptDir + "/serve.sh" + s.args = [site["map"], site["to"], site["port"] ||= "80", site["ssl"] ||= "443"] + end + end + end + + # Configure All Of The Configured Databases + settings["databases"].each do |db| + config.vm.provision "shell" do |s| + s.path = scriptDir + "/create-mysql.sh" + s.args = [db] + end + + config.vm.provision "shell" do |s| + s.path = scriptDir + "/create-postgres.sh" + s.args = [db] + end + end + + # Configure All Of The Server Environment Variables + if settings.has_key?("variables") + settings["variables"].each do |var| + config.vm.provision "shell" do |s| + s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php5/fpm/php-fpm.conf" + s.args = [var["key"], var["value"]] + end + + config.vm.provision "shell" do |s| + s.inline = "echo \"\n#Set Homestead environment variable\nexport $1=$2\" >> /home/vagrant/.profile" + s.args = [var["key"], var["value"]] + end + end + + config.vm.provision "shell" do |s| + s.inline = "service php5-fpm restart" + end + end + + # Update Composer On Every Provision + config.vm.provision "shell" do |s| + s.inline = "/usr/local/bin/composer self-update" + end + + # Configure Blackfire.io + if settings.has_key?("blackfire") + config.vm.provision "shell" do |s| + s.path = scriptDir + "/blackfire.sh" + s.args = [ + settings["blackfire"][0]["id"], + settings["blackfire"][0]["token"], + settings["blackfire"][0]["client-id"], + settings["blackfire"][0]["client-token"] + ] + end + end + end +end