# encoding: utf-8

# -*- mode: ruby -*-
# vi: set ft=ruby :

require_relative 'ruby_lib/util.rb'
Util.check_required_file(Dir.pwd + '/redcap.zip')

Vagrant.configure("2") do |config|

  config.vm.box = "redcap-debian-70rc1"
  #config.vm.box = "redcap-debian-73-x64"

  # set RAM size to 1GB
  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
    v.cpus = 2
  end

   config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/debian-70rc1-x64-vbox4210.box"
   #config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-puppet.box"
   config.ssh.forward_agent = true

  # HTTP requests on the host OS port 8998 will be
  # serviced by the redcap application running on the guest OS
  config.vm.network :forwarded_port, guest: 80, host: 8998
  config.vm.network :forwarded_port, guest: 443, host: 8999

  # Redirect the mysql connections to the guest OS
  config.vm.network :forwarded_port, guest: 3306, host: 3306

  #config.vm.provision :shell, :inline => 'apt-get update'
  #config.vm.provision :shell, :inline => 'apt-get install -y build-essential ruby chef --no-upgrade --yes'

  # try to provision everything with chef
  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = ["cookbooks", "myCookbooks"]
    chef.add_recipe :apt
    chef.add_recipe 'apache2'
    chef.add_recipe 'apache2::mod_ssl'
    chef.add_recipe 'apache2::mod_php5'
    chef.add_recipe 'apache2::mod_rewrite'
    # enable the ssl site while disabling the default vhost on port 80
    chef.add_recipe 'default-ssl'
    chef.add_recipe 'mysql'
    chef.add_recipe 'mysql::server'
    chef.add_recipe 'git'
    chef.add_recipe 'php'
    chef.add_recipe 'php::module_curl'
    chef.add_recipe 'php::module_mysql'
    chef.add_recipe 'pear-packages'

    chef.json = {
      :apache => {
        :default_site_enabled => "true",
        :dir                  => "/etc/apache2",
        :log_dir              => "/var/log/apache2",
        :error_log            => "error.log",
        :user                 => "www-data",
        :group                => "www-data",
        :binary               => "/usr/sbin/apache2",
        :cache_dir            => "/var/cache/apache2",
        :pid_file             => "/var/run/apache2.pid",
        :lib_dir              => "/usr/lib/apache2",
        :listen_ports         => [
          "80"
        ],
        :contact              => "ops@example.com",
        :timeout              => "300",
        :keepalive            => "On",
        :keepaliverequests    => "100",
        :keepalivetimeout     => "5"
      },
      :mysql  => {
        :server_root_password   => "password",
        :server_repl_password   => "password",
        :server_debian_password => "password",
        :service_name           => "mysql",
        :basedir                => "/usr",
        :data_dir               => "/var/lib/mysql",
        :root_group             => "root",
        :mysqladmin_bin         => "/usr/bin/mysqladmin",
        :mysql_bin              => "/usr/bin/mysql",
        :conf_dir               => "/etc/mysql",
        :confd_dir              => "/etc/mysql/conf.d",
        :socket                 => "/var/run/mysqld/mysqld.sock",
        :pid_file               => "/var/run/mysqld/mysqld.pid",
        :grants_path            => "/etc/mysql/grants.sql"
      },
      :git    => {
        :prefix => "/usr/local"
      }
    }
  end

  # Provision things we cannot yet do with chef
  config.vm.provision :shell, :path => "bootstrap.sh"
end
