
#
#  WARNING: DO NOT CHANGE IF YOU CAN AVOID IT !! Generated file using vagrant_generator/generate.sh
#

unless Vagrant.has_plugin?("vagrant-disksize")
  raise 'vagrant-disksize is not installed! Run `vagrant plugin install vagrant-disksize` and relaunch your `vagrant up` command'
end

unless Vagrant.has_plugin?("vagrant-vbguest")
  raise 'vagrant-vbguest is not installed! Run `vagrant plugin install vagrant-vbguest` and relaunch your `vagrant up` command'
end

unless Vagrant.has_plugin?("vagrant-scp")
  raise 'vagrant-scp is not installed! Run `vagrant plugin install vagrant-scp` and relaunch your `vagrant up` command'
end

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

  # Auto install required Vagrant plugins
  config.vagrant.plugins = ["vagrant-disksize"]

  # Get your local SSH public key
  PUBLIC_KEY = File.read("#{Dir.home}/.ssh/id_rsa.pub")
  config.ssh.forward_agent = true

  # Speed up VM creation using a precompiled '.vdi'
  config.vm.provider "virtualbox" do |vb|
    vb.linked_clone = true
  end




   config.vm.define "deployer" do |server|
      server.vm.box = "eurolinux-vagrant/centos-7"
      server.vm.box_check_update = false
      server.disksize.size = '10 GB'

      # Share only sample_confs
      server.vm.synced_folder '.', '/vagrant', disabled: true
      server.vm.synced_folder '/tmp/archive-log/storage', '/tmp/archive-logs/storage', create: true
      
      ## Configuration
      server.vm.hostname = "deployer"
      server.vm.network "private_network", ip: "192.168.56.20"
      server.vm.network "private_network", ip: "192.168.57.20"

      ## Provisionning
      server.vm.provision "shell", inline: <<-EOF
        echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
        echo '#{PUBLIC_KEY}' >> /home/vagrant/.ssh/authorized_keys
      EOF


      ## Avoid swapping in nominal condition
      server.vm.provision "shell", inline: "echo 'vm.swappiness = 0' | sudo tee /etc/sysctl.d/80-punch-swap.conf > /dev/null"
      server.vm.provision "shell", inline: "sysctl vm.swappiness=0"
      server.vm.provision "shell", inline: "echo 'tmpfs /tmp tmpfs size=4g 0 0' >> /etc/fstab"

      # Disabling SElinux
      server.vm.provision "shell", inline: "sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config"
      server.vm.provision "shell", inline: "setenforce 0"

      # Disabling firewalld
      server.vm.provision "shell", inline: "systemctl stop firewalld"
      server.vm.provision "shell", inline: "systemctl disable firewalld"
      server.vm.provision "shell", inline: "systemctl mask --now firewalld"

      server.vm.provision "shell", inline: "timedatectl set-timezone Europe/Paris"
      server.vm.provision "shell", inline: "rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime", run: "always"

      ## /etc/hosts filling up to emulate DNS
      server.vm.provision "shell", inline: "sed -i '/deployer/d' /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.56.20 deployer.admin' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.57.20 deployer.prod deployer' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.56.21 server1.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.21 server1.prod server1' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.22 server2.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.22 server2.prod server2' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.23 server3.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.23 server3.prod server3' >> /etc/hosts"
      ## Specific prerequisites for deployer
      server.vm.provision "shell", inline: "yum update -y"
      server.vm.provision "shell", inline: "yum install epel-release -y"
      server.vm.provision "shell", inline: "yum install wget unzip curl jq python3-pip python3-virtualenv -y"
      #server.vm.provision "shell", inline: "rm /usr/local/bin/pip && ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip"
      server.vm.provision "shell", inline: "python3 -m pip install setuptools_rust"
      server.vm.provision "shell", inline: "python3 -m pip install --upgrade pip"
      server.vm.provision "shell", inline: "python3 -m pip install ansible==2.9.7"

      ## Setup 2GB swap file
      server.vm.provision "shell", inline: "[ -f /swapfile ] || dd if=/dev/zero of=/swapfile bs=2048 count=1048576 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"

      # Some hardening: UMASK will remove group and others any rights by default
      server.vm.provision "shell", inline: "sed -i 's/UMASK\s*[0-9]*/UMASK      022/g' /etc/login.defs"
      server.vm.provision "shell", inline: "sed -i 's/umask 0[0-9][0-9]/umask 022/g' /etc/bashrc"

      server.vm.provider :virtualbox do |v|
        v.gui = false
        v.memory = 2048
        v.cpus = 1
      end
    end




   config.vm.define "server1" do |server|
      server.vm.box = "eurolinux-vagrant/centos-7"
      server.vm.box_check_update = false
      server.disksize.size = '15 GB'

      # Share only sample_confs
      server.vm.synced_folder '.', '/vagrant', disabled: true
      server.vm.synced_folder '/tmp/archive-log/storage', '/tmp/archive-logs/storage', create: true

      ## Configuration
      server.vm.hostname = "server1"
      server.vm.network "private_network", ip: "192.168.56.21"
      server.vm.network "private_network", ip: "192.168.57.21"

      ## Provisionning
      server.vm.provision "shell", inline: <<-EOF
        echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
        echo '#{PUBLIC_KEY}' >> /home/vagrant/.ssh/authorized_keys
      EOF


      ## Avoid swapping in nominal condition
      server.vm.provision "shell", inline: "echo 'vm.swappiness = 0' | sudo tee /etc/sysctl.d/80-punch-swap.conf > /dev/null"
      server.vm.provision "shell", inline: "sysctl vm.swappiness=0"
      server.vm.provision "shell", inline: "echo 'tmpfs /tmp tmpfs size=4g 0 0' >> /etc/fstab"

      # Disabling SElinux
      server.vm.provision "shell", inline: "sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config"
      server.vm.provision "shell", inline: "setenforce 0"

      # Disabling firewalld
      server.vm.provision "shell", inline: "systemctl stop firewalld"
      server.vm.provision "shell", inline: "systemctl disable firewalld"
      server.vm.provision "shell", inline: "systemctl mask --now firewalld"

      server.vm.provision "shell", inline: "timedatectl set-timezone Europe/Paris"
      server.vm.provision "shell", inline: "rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime", run: "always"

      ## /etc/hosts filling up to emulate DNS
      server.vm.provision "shell", inline: "sed -i '/server1/d' /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.56.20 deployer.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.20 deployer.prod deployer' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.21 server1.admin' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.57.21 server1.prod server1' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.56.22 server2.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.22 server2.prod server2' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.23 server3.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.23 server3.prod server3' >> /etc/hosts"
      server.vm.provision "shell", inline: "mkdir -p /data/opt ; chmod go+rX /data /data/opt"

      ## Setup 2GB swap file
      server.vm.provision "shell", inline: "[ -f /swapfile ] || dd if=/dev/zero of=/swapfile bs=2048 count=1048576 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"

      # Some hardening: UMASK will remove group and others any rights by default
      server.vm.provision "shell", inline: "sed -i 's/UMASK\s*[0-9]*/UMASK      022/g' /etc/login.defs"
      server.vm.provision "shell", inline: "sed -i 's/umask 0[0-9][0-9]/umask 022/g' /etc/bashrc"

      server.vm.provider :virtualbox do |v|
        v.gui = false
        v.memory = 4096
        v.cpus = 2
      end
    end




   config.vm.define "server2" do |server|
      server.vm.box = "eurolinux-vagrant/centos-7"
      server.vm.box_check_update = false
      server.disksize.size = '15 GB'

      # Share only sample_confs
      server.vm.synced_folder '.', '/vagrant', disabled: true
      server.vm.synced_folder '/tmp/archive-log/storage', '/tmp/archive-logs/storage', create: true

      ## Configuration
      server.vm.hostname = "server2"
      server.vm.network "private_network", ip: "192.168.56.22"
      server.vm.network "private_network", ip: "192.168.57.22"

      ## Provisionning
      server.vm.provision "shell", inline: <<-EOF
        echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
        echo '#{PUBLIC_KEY}' >> /home/vagrant/.ssh/authorized_keys
      EOF


      ## Avoid swapping in nominal condition
      server.vm.provision "shell", inline: "echo 'vm.swappiness = 0' | sudo tee /etc/sysctl.d/80-punch-swap.conf > /dev/null"
      server.vm.provision "shell", inline: "sysctl vm.swappiness=0"
      server.vm.provision "shell", inline: "echo 'tmpfs /tmp tmpfs size=4g 0 0' >> /etc/fstab"

      # Disabling SElinux
      server.vm.provision "shell", inline: "sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config"
      server.vm.provision "shell", inline: "setenforce 0"

      # Disabling firewalld
      server.vm.provision "shell", inline: "systemctl stop firewalld"
      server.vm.provision "shell", inline: "systemctl disable firewalld"
      server.vm.provision "shell", inline: "systemctl mask --now firewalld"

      server.vm.provision "shell", inline: "timedatectl set-timezone Europe/Paris"
      server.vm.provision "shell", inline: "rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime", run: "always"

      ## /etc/hosts filling up to emulate DNS
      server.vm.provision "shell", inline: "sed -i '/server2/d' /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.56.20 deployer.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.20 deployer.prod deployer' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.21 server1.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.21 server1.prod server1' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.22 server2.admin' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.57.22 server2.prod server2' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.56.23 server3.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.23 server3.prod server3' >> /etc/hosts"
      server.vm.provision "shell", inline: "mkdir -p /data/opt ; chmod go+rX /data /data/opt"

      ## Setup 2GB swap file
      server.vm.provision "shell", inline: "[ -f /swapfile ] || dd if=/dev/zero of=/swapfile bs=2048 count=1048576 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"

      # Some hardening: UMASK will remove group and others any rights by default
      server.vm.provision "shell", inline: "sed -i 's/UMASK\s*[0-9]*/UMASK      022/g' /etc/login.defs"
      server.vm.provision "shell", inline: "sed -i 's/umask 0[0-9][0-9]/umask 022/g' /etc/bashrc"

      server.vm.provider :virtualbox do |v|
        v.gui = false
        v.memory = 4096
        v.cpus = 2
      end
    end




   config.vm.define "server3" do |server|
      server.vm.box = "eurolinux-vagrant/centos-7"
      server.vm.box_check_update = false
      server.disksize.size = '15 GB'

      # Share only sample_confs
      server.vm.synced_folder '.', '/vagrant', disabled: true
      server.vm.synced_folder '/tmp/archive-log/storage', '/tmp/archive-logs/storage', create: true

      ## Configuration
      server.vm.hostname = "server3"
      server.vm.network "private_network", ip: "192.168.56.23"
      server.vm.network "private_network", ip: "192.168.57.23"

      ## Provisionning
      server.vm.provision "shell", inline: <<-EOF
        echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
        echo '#{PUBLIC_KEY}' >> /home/vagrant/.ssh/authorized_keys
      EOF


      ## Avoid swapping in nominal condition
      server.vm.provision "shell", inline: "echo 'vm.swappiness = 0' | sudo tee /etc/sysctl.d/80-punch-swap.conf > /dev/null"
      server.vm.provision "shell", inline: "sysctl vm.swappiness=0"
      server.vm.provision "shell", inline: "echo 'tmpfs /tmp tmpfs size=4g 0 0' >> /etc/fstab"

      # Disabling SElinux
      server.vm.provision "shell", inline: "sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config"
      server.vm.provision "shell", inline: "setenforce 0"

      # Disabling firewalld
      server.vm.provision "shell", inline: "systemctl stop firewalld"
      server.vm.provision "shell", inline: "systemctl disable firewalld"
      server.vm.provision "shell", inline: "systemctl mask --now firewalld"

      server.vm.provision "shell", inline: "timedatectl set-timezone Europe/Paris"
      server.vm.provision "shell", inline: "rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime", run: "always"

      ## /etc/hosts filling up to emulate DNS
      server.vm.provision "shell", inline: "sed -i '/server3/d' /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.56.20 deployer.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.20 deployer.prod deployer' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.21 server1.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.21 server1.prod server1' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.22 server2.admin' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.57.22 server2.prod server2' >> /etc/hosts"
      server.vm.provision "shell", inline: "echo '192.168.56.23 server3.admin' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "echo '192.168.57.23 server3.prod server3' >> /etc/hosts", run: "always"
      server.vm.provision "shell", inline: "mkdir -p /data/opt ; chmod go+rX /data /data/opt"

      ## Setup 2GB swap file
      server.vm.provision "shell", inline: "[ -f /swapfile ] || dd if=/dev/zero of=/swapfile bs=2048 count=1048576 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"

      # Some hardening: UMASK will remove group and others any rights by default
      server.vm.provision "shell", inline: "sed -i 's/UMASK\s*[0-9]*/UMASK      022/g' /etc/login.defs"
      server.vm.provision "shell", inline: "sed -i 's/umask 0[0-9][0-9]/umask 022/g' /etc/bashrc"

      server.vm.provider :virtualbox do |v|
        v.gui = false
        v.memory = 4096
        v.cpus = 2
      end
    end
end
