Vagrant.configure(2) do |config|

    # Setting proxy configurations for the host box. This also sets common proxy settings
    # and files for other applications, such as apt-get/yum
    # if Vagrant.has_plugin?("vagrant-proxyconf")
    #     config.proxy.http = "http://127.0.0.1:3128"
    #     config.proxy.https = "http://127.0.0.1:3128"
    #     config.proxy.no_proxy = "localhost,127.0.0.1"
    # end

    config.vm.define "elk" do |elk|
        elk.vm.box = "ubuntu/trusty64"

        # Change the default elk vagrant box folder to point to the 
        # elk directory within the project. This will allow separation between
        # elk and developer folders.
        elk.vm.synced_folder "dashboard/", "/vagrant"

        # Network configuration:
        # - Setups a static IP address to allow the client Vagrant box 
        # to know where to connect within the local network of Vagrant 
        # boxes.
        # - Expose the following ports to be used within this box to
        # host data being sent between the web server and the ELK server.
        elk.vm.network "private_network", ip: "192.168.86.100"
     
        # Provisioner: Runs the provisioning script that will provision
        # the vagrant box for the first time, or forced. 
        elk.vm.provision "shell" do |s| 
            s.path = "dashboard/scripts/install.sh"
            s.privileged = false
        end

        # Provisioner: Run this script always. This allows the box to setup
        # the elk server and web service all the times. This could be done
        # in an initrc file, but this will do.
        elk.vm.provision "shell", path: "dashboard/scripts/restart.sh", run: "always"

        # Host configuration: Set specific requirements for the host to
        # provide the Guest Box to use.
        elk.vm.provider :virtualbox do |vb|
            vb.customize ["modifyvm", :id, "--cpus", "2", "--memory", "2048"]
        end
    end

    config.vm.define "developer" do |dev|
        # Specify a base virtual machine that is based on Ubuntu Trusty Tahr
        dev.vm.box = "ubuntu/trusty64"

        # Setup a static IP to allow both vagrant boxes to know where 
        # to contact each other. This will allow communication between the
        # web developer and the logging server.
        dev.vm.network "private_network", ip: "192.168.86.10"

        # Specify the provisioning script that will be used in order to 
        # install the necessary files needed for this vagrant box
        dev.vm.provision "shell", inline: "twistd -y /vagrant/twisted_client.py &", 
            run: "always"

        # Change the default client vagrant box folder to point to the 
        # client directory within the project. This will allow separation between
        # client and server folders.
        dev.vm.synced_folder "client/", "/vagrant"
    end
end
