Vagrantfile 5.72 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
Vagrant.require_version ">= 1.5.3"
unless Vagrant.has_plugin?("vagrant-vbguest")
  raise "Please install the vagrant-vbguest plugin by running `vagrant plugin install vagrant-vbguest`"
end

VAGRANTFILE_API_VERSION = "2"

MEMORY = 4096
CPU_COUNT = 2

edx_platform_mount_dir = "edx-platform"
themes_mount_dir = "themes"
forum_mount_dir = "cs_comments_service"
insights_mount_dir = "insights"
analytics_api_mount_dir = "analytics_api"

if ENV['VAGRANT_MOUNT_BASE']

  edx_platform_mount_dir = ENV['VAGRANT_MOUNT_BASE'] + "/" + edx_platform_mount_dir
  themes_mount_dir = ENV['VAGRANT_MOUNT_BASE'] + "/" + themes_mount_dir
  forum_mount_dir = ENV['VAGRANT_MOUNT_BASE'] + "/" + forum_mount_dir
  insights_mount_dir = ENV['VAGRANT_MOUNT_BASE'] + "/" + insights_mount_dir
  analytics_api_mount_dir = ENV['VAGRANT_MOUNT_BASE'] + "/" + analytics_api_mount_dir

end

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Creates a devstack from a base Ubuntu 12.04 image for virtualbox
  config.vm.box     = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.network :forwarded_port, guest: 8000, host: 8000  # LMS
  config.vm.network :forwarded_port, guest: 8001, host: 8001  # Studio
  config.vm.network :forwarded_port, guest: 8003, host: 8003  # LMS for Bok Choy
  config.vm.network :forwarded_port, guest: 8031, host: 8031  # Studio for Bok Choy
  config.vm.network :forwarded_port, guest: 8120, host: 8120  # edX Notes Service
  config.vm.network :forwarded_port, guest: 8765, host: 8765
  config.vm.network :forwarded_port, guest: 9200, host: 9200
  config.vm.network :forwarded_port, guest: 18080, host: 18080
Gabe Mulley committed
42 43
  config.vm.network :forwarded_port, guest: 8100, host: 8100  # Analytics Data API
  config.vm.network :forwarded_port, guest: 8110, host: 8110  # Insights
44 45
  config.vm.network :forwarded_port, guest: 50070, host: 50070  # HDFS Admin UI
  config.vm.network :forwarded_port, guest: 8088, host: 8088  # Hadoop Resource Manager
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
  config.ssh.insert_key = true

  config.vm.synced_folder  ".", "/vagrant", disabled: true

 # Enable X11 forwarding so we can interact with GUI applications
  if ENV['VAGRANT_X11']
    config.ssh.forward_x11 = true
  end

  if ENV['VAGRANT_USE_VBOXFS'] == 'true'
    config.vm.synced_folder "#{edx_platform_mount_dir}", "/edx/app/edxapp/edx-platform",
      create: true, owner: "edxapp", group: "www-data"
    config.vm.synced_folder "#{themes_mount_dir}", "/edx/app/edxapp/themes",
      create: true, owner: "edxapp", group: "www-data"
    config.vm.synced_folder "#{forum_mount_dir}", "/edx/app/forum/cs_comments_service",
      create: true, owner: "forum", group: "www-data"
62 63 64 65
    config.vm.synced_folder "#{insights_mount_dir}", "/edx/app/insights/edx_analytics_dashboard",
      create: true, owner: "insights", group: "www-data"
    config.vm.synced_folder "#{analytics_api_mount_dir}", "/edx/app/analytics_api/analytics_api",
      create: true, owner: "analytics_api", group: "www-data"
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
    config.vm.synced_folder "#{insights_mount_dir}", "/edx/app/insights/edx_analytics_dashboard",
      create: true, owner: "insights", group: "www-data"
    config.vm.synced_folder "#{analytics_api_mount_dir}", "/edx/app/analytics_api/analytics_api",
      create: true, owner: "analytics_api", group: "www-data"
  else
    config.vm.synced_folder "#{edx_platform_mount_dir}", "/edx/app/edxapp/edx-platform",
      create: true, nfs: true
    config.vm.synced_folder "#{themes_mount_dir}", "/edx/app/edxapp/themes",
      create: true, nfs: true
    config.vm.synced_folder "#{forum_mount_dir}", "/edx/app/forum/cs_comments_service",
      create: true, nfs: true
    config.vm.synced_folder "#{insights_mount_dir}", "/edx/app/insights/edx_analytics_dashboard",
      create: true, nfs: true
    config.vm.synced_folder "#{analytics_api_mount_dir}", "/edx/app/analytics_api/analytics_api",
      create: true, nfs: true
  end


  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", MEMORY.to_s]
    vb.customize ["modifyvm", :id, "--cpus", CPU_COUNT.to_s]

    # Allow DNS to work for Ubuntu 12.10 host
    # http://askubuntu.com/questions/238040/how-do-i-fix-name-service-for-vagrant-client
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end

  ["vmware_fusion", "vmware_workstation"].each do |vmware_provider|
    config.vm.provider vmware_provider do |v, override|
      # Override box url to get vmware one
      override.vm.box     = "precise64_vmware"
      override.vm.box_url = "http://files.vagrantup.com/precise64_vmware.box"
      v.vmx["memsize"] = MEMORY.to_s
      v.vmx["numvcpus"] = CPU_COUNT.to_s
    end
  end


  # Make LC_ALL default to en_US.UTF-8 instead of en_US.
  # See: https://github.com/mitchellh/vagrant/issues/1188
  config.vm.provision "shell", inline: 'echo \'LC_ALL="en_US.UTF-8"\' > /etc/default/locale'

  # Use vagrant-vbguest plugin to make sure Guest Additions are in sync
  config.vbguest.auto_reboot = true
  config.vbguest.auto_update = true

  config.vm.provision :ansible do |ansible|
    ansible.playbook = "../../../playbooks/vagrant-analytics.yml"
    ansible.verbose = "vvvv"

    ansible.extra_vars = {}
    if ENV['ENABLE_LEGACY_ORA']
      ansible.extra_vars['ENABLE_LEGACY_ORA'] = true
    end
    if ENV['OPENEDX_RELEASE']
      ansible.extra_vars = {
        edx_platform_version: ENV['OPENEDX_RELEASE'],
        certs_version: ENV['OPENEDX_RELEASE'],
        forum_version: ENV['OPENEDX_RELEASE'],
        xqueue_version: ENV['OPENEDX_RELEASE'],
      }
    end
    if ENV['CONFIGURATION_VERSION']
      ansible.extra_vars['configuration_version'] = ENV['CONFIGURATION_VERSION']
    end
    if ENV['EDX_PLATFORM_VERSION']
      ansible.extra_vars['edx_platform_version'] = ENV['EDX_PLATFORM_VERSION']
    end
  end
end