# -*- mode: ruby -*-i
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
  # oscar server
  config.vm.define "server" do |server|
    server.vm.box = "puppetlabs/centos-6.6-64-nocm"
    server.vm.box_url = 'puppetlabs/centos-6.6-64-nocm'
    server.vm.network "private_network", ip: "192.168.1.5", auto_config: false
    server.vm.provider "virtualbox" do |v|
      v.memory = 128
      v.cpus = 1
    end
  end
  # disable IPv6 on Linux
  $linux_disable_ipv6 = <<SCRIPT
sysctl -w net.ipv6.conf.default.disable_ipv6=1
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.lo.disable_ipv6=1
SCRIPT
  # setenforce 0
  $setenforce_0 = <<SCRIPT
if test `getenforce` = 'Enforcing'; then setenforce 0; fi
#sed -Ei 's/^SELINUX=.*/SELINUX=Permissive/' /etc/selinux/config
SCRIPT
  # stop iptables
  $service_iptables_stop = <<SCRIPT
service iptables stop
SCRIPT
  # configure the second vagrant eth interface
  $ifcfg_device = <<SCRIPT
IPADDR=$1
NETMASK=$2
DEVICE=$3
cat <<END >> /etc/sysconfig/network-scripts/ifcfg-$DEVICE
  NM_CONTROLLED=no
  BOOTPROTO=none
  ONBOOT=yes
  IPADDR=$IPADDR
  NETMASK=$NETMASK
  DEVICE=$DEVICE
  PEERDNS=no
END
ARPCHECK=no /sbin/ifup $DEVICE 2> /dev/null
SCRIPT
  # .ssh permission
  $chmod_600_dotssh = <<SCRIPT
sudo su -c "chmod -R 600 ~$1/.ssh/"
sudo su -c "chmod 700 ~$1/.ssh"
SCRIPT
  # .ssh ownership
  $chown_dotssh = <<SCRIPT
sudo su -c "chown -R $1:$2 ~$1/.ssh/"
SCRIPT
  # common settings on all machines
  $etc_hosts = <<SCRIPT
cat <<END >> /etc/hosts
192.168.1.5 server
END
SCRIPT
  # oscar configuration
  $etc_oscar_oscar_conf = <<SCRIPT
sed -Ei 's/^OSCAR_NETWORK_INTERFACE.*/OSCAR_NETWORK_INTERFACE=eth1/' /etc/oscar/oscar.conf
SCRIPT
  # EPEL
  $epel6 = <<SCRIPT
yum clean all
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
SCRIPT
  # oscar-relase
  $oscar_release_rhel = <<SCRIPT
yum clean all
yum -y install http://svn.oscar.openclustergroup.org/repos/unstable/rhel-6-x86_64/oscar-release-6.1.2r11040-1.el6.noarch.rpm
SCRIPT
  config.vm.define "server" do |server|
    server.vm.provision :shell, :inline => "hostname server", run: "always"
    server.vm.provision :shell, :inline => $etc_hosts
    server.vm.provision "shell" do |s|
      s.inline = $ifcfg_device
      s.args   = "192.168.1.5 255.255.255.0 eth1"
    end
    server.vm.provision :shell, :inline => "ifup eth1", run: "always"
    server.vm.provision :file, source: "~/.vagrant.d/insecure_private_key", destination: "~vagrant/.ssh/id_rsa"
    server.vm.provision :shell, :inline => "cp -rp ~vagrant/.ssh ~root/"
    server.vm.provision :shell, :inline => "yum install -y wget"
    server.vm.provision :shell, :inline => "wget --no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O ~root/.ssh/authorized_keys"
    server.vm.provision "shell" do |s|
      s.inline = $chmod_600_dotssh
      s.args   = "root"
    end
    server.vm.provision "shell" do |s|
      s.inline = $chown_dotssh
      s.args   = "root root"
    end
    server.vm.provision :shell, :inline => $epel6
    server.vm.provision :shell, :inline => $oscar_release_rhel
    server.vm.provision :shell, :inline => "yum -y install oscar"
    server.vm.provision :shell, :inline => $etc_oscar_oscar_conf
    server.vm.provision :shell, :inline => "oscar-config --setup-distro redhat-el-6-x86_64"
    server.vm.provision :shell, :inline => "yum -y install mysql-server"
    server.vm.provision :shell, :inline => "service mysqld start"
    server.vm.provision :shell, :inline => "yum -y install expect"
    server.vm.provision :shell, :inline => "service mysqld restart"
    server.vm.provision :shell, :inline => "chkconfig mysqld on"
    server.vm.provision :shell, :inline => $linux_disable_ipv6,  run: "always"
    server.vm.provision :shell, :inline => $service_iptables_stop, run: "always"
    server.vm.provision :shell, :inline => $setenforce_0, run: "always"
    server.vm.provision :shell, :inline => "DEBUG_OSCAR_WIZARD=2 oscar-config --bootstrap"
  end
end

