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

Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/bionic64"
  config.vm.provision "shell", inline: <<-SHELL
    
    cd /tmp

    PACKERVERSION=1.8.2
    PACKERDOWNLOAD=https://releases.hashicorp.com/packer/${PACKERVERSION}/packer_${PACKERVERSION}_linux_amd64.zip
    TERRAFORMVERSION=1.2.4
    TERRAFORMDOWNLOAD=https://releases.hashicorp.com/terraform/${TERRAFORMVERSION}/terraform_${TERRAFORMVERSION}_linux_amd64.zip

    echo "Dependencies..."
    sudo apt-get install -y \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg \
        gnupg-agent \
        lsb-release \
        software-properties-common \
        unzip

    # Azure CLI
    curl -sL https://packages.microsoft.com/keys/microsoft.asc |
        gpg --dearmor |
        sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null
    AZ_REPO=$(lsb_release -cs)
    echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" |
        sudo tee /etc/apt/sources.list.d/azure-cli.list
    sudo apt-get update
    sudo apt-get install azure-cli

    # Disable the firewall
    sudo ufw disable

    ## Packer
    echo Fetching Packer...
    curl -s -L $PACKERDOWNLOAD > packer.zip
    echo Installing Packer...
    unzip packer.zip -d /usr/local/bin
    chmod 0755 /usr/local/bin/packer
    chown root:root /usr/local/bin/packer

    ## Terraform
    echo Fetching Terraform...
    curl -s -L $TERRAFORMDOWNLOAD > terraform.zip
    echo Installing Terraform...
    unzip terraform.zip -d /usr/local/bin
    chmod 0755 /usr/local/bin/terraform
    chown root:root /usr/local/bin/terraform

    # Download and install Docker.
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    apt-get update
    apt-get install -y \
      docker-ce \
      docker-ce-cli \
      containerd.io
    usermod -aG docker vagrant

  SHELL

  config.vm.synced_folder "aws/", "/home/vagrant/aws", owner: "vagrant", group: "vagrant"
  config.vm.synced_folder "azure/", "/home/vagrant/azure", owner: "vagrant", group: "vagrant"
  config.vm.synced_folder "shared/", "/home/vagrant/shared", owner: "vagrant", group: "vagrant"
  config.vm.synced_folder "examples/", "/home/vagrant/examples", owner: "vagrant", group: "vagrant"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
  end

end
