-
-
Notifications
You must be signed in to change notification settings - Fork 242
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Based on previous work on vagrant branches, adjusted to use the new --dev argument of the install script.
- Loading branch information
Showing
2 changed files
with
156 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
# -*- mode: ruby -*- | ||
# vi: set ft=ruby : | ||
|
||
BOX_NAME = ENV['BOX_NAME'] || "precise64" | ||
BOX_URI = ENV['BOX_URI'] || "http://files.vagrantup.com/precise64.box" | ||
|
||
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! | ||
VAGRANTFILE_API_VERSION = "2" | ||
|
||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | ||
# All Vagrant configuration is done here. The most common configuration | ||
# options are documented and commented below. For a complete reference, | ||
# please see the online documentation at vagrantup.com. | ||
|
||
# Every Vagrant virtual environment requires a box to build off of. | ||
config.vm.box = BOX_NAME | ||
|
||
# The url from where the 'config.vm.box' box will be fetched if it | ||
# doesn't already exist on the user's system. | ||
config.vm.box_url = BOX_URI | ||
|
||
# Create a forwarded port mapping which allows access to a specific port | ||
# within the machine from a port on the host machine. In the example below, | ||
# accessing "localhost:8080" will access port 80 on the guest machine. | ||
config.vm.network :forwarded_port, guest: 3000, host: 3000 | ||
|
||
config.vm.provider "virtualbox" do |v| | ||
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] | ||
end | ||
|
||
config.vm.provision :shell, :inline => <<-EOS | ||
# To prevent "dpkg-preconfigure: unable to re-open stdin: No such file or directory" warnings | ||
export DEBIAN_FRONTEND=noninteractive | ||
# To be in the shared directory where the repository might already be | ||
cd /vagrant/ | ||
# We need curl to fetch the install script | ||
apt-get update -qq | ||
apt-get install -qq -y curl >/dev/null | ||
curl -s https://raw.github.com/mysociety/commonlib/master/bin/install-site.sh | \ | ||
sh -s -- --dev fixmystreet vagrant 127.0.0.1.xip.io | ||
# Assume a developer will want to run the tests. | ||
# TODO The tests should be further altered to work regardless of | ||
# configuration file settings | ||
sed -i -r \ | ||
-e "s,(MAPIT_URL:) '',\\1 'http://mapit.mysociety.org/'," \ | ||
-e "s, - cobrand_one, - barnet\\n - bromley\\n - emptyhomes\\n - fiksgatami\\n - fixmybarangay\\n - lichfielddc\\n - reading\\n - seesomething\\n - southampton\\n - zurich," \ | ||
-e "s, - cobrand_two: 'hostname_substring2', - fixmystreet: '.'," \ | ||
fixmystreet/conf/general.yml | ||
# All done | ||
echo "****************" | ||
echo "You can now ssh into your vagrant box: vagrant ssh" | ||
echo "The website code is found in: ~/fixmystreet" | ||
echo "You can run the dev server with: bin/cron-wrapper script/fixmystreet_app_server.pl [-d] [-r] [--fork]" | ||
EOS | ||
|
||
# Create a private network, which allows host-only access to the machine | ||
# using a specific IP. | ||
# config.vm.network :private_network, ip: "192.168.33.10" | ||
|
||
# Create a public network, which generally matched to bridged network. | ||
# Bridged networks make the machine appear as another physical device on | ||
# your network. | ||
# config.vm.network :public_network | ||
|
||
# If true, then any SSH connections made will enable agent forwarding. | ||
# Default value: false | ||
# config.ssh.forward_agent = true | ||
|
||
# Share an additional folder to the guest VM. The first argument is | ||
# the path on the host to the actual folder. The second argument is | ||
# the path on the guest to mount the folder. And the optional third | ||
# argument is a set of non-required options. | ||
# config.vm.synced_folder "../data", "/vagrant_data" | ||
|
||
# Provider-specific configuration so you can fine-tune various | ||
# backing providers for Vagrant. These expose provider-specific options. | ||
# Example for VirtualBox: | ||
# | ||
# config.vm.provider :virtualbox do |vb| | ||
# # Don't boot with headless mode | ||
# vb.gui = true | ||
# | ||
# # Use VBoxManage to customize the VM. For example to change memory: | ||
# vb.customize ["modifyvm", :id, "--memory", "1024"] | ||
# end | ||
# | ||
# View the documentation for the provider you're using for more | ||
# information on available options. | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# Using Vagrant | ||
|
||
Vagrant provides an easy method to setup virtual development environments, for | ||
further information see [their website](http://www.vagrantup.com). | ||
|
||
The included steps will use vagrant to create a dev environment where you can | ||
run the test suite, the development server and of course make changes to the | ||
codebase. | ||
|
||
The basic process is to create a "base" vm, and then "provision" it with the | ||
software packages and setup needed. There are several ways to do this, including | ||
Chef, Puppet, or the existing FixMyStreet install script which we will use. The | ||
supplied scripts will create you a Vagrant VM based on the server edition of | ||
Ubuntu 12.04 LTS that contains everything you need to work on FixMyStreet. | ||
|
||
## Pre-requisites | ||
|
||
1. Install [VirtualBox](http://www.virtualbox.org/wiki/Downloads) | ||
2. Install [Vagrant](http://downloads.vagrantup.com/) | ||
|
||
## Get the FixMyStreet code | ||
|
||
Create a folder somewhere that you'll be doing your work from and clone the repo | ||
into it. | ||
|
||
``` bash | ||
mkdir FMS-vagrant | ||
cd FMS-vagrant | ||
git clone --recursive https://github.com/mysociety/fixmystreet.git | ||
``` | ||
|
||
## Set up the Vagrant box | ||
|
||
The vagrant configuration needs to be placed in the correct place. | ||
|
||
``` bash | ||
# NOTE - you need to be in the 'FMS-vagrant' dir | ||
|
||
cp fixmystreet/conf/Vagrantfile.example Vagrantfile | ||
|
||
# start the vagrant box. This will provision the system and can take a long time. | ||
vagrant up --no-color | ||
``` | ||
|
||
## Working with the vagrant box | ||
|
||
You should now have a local FixMyStreet development server to work with. You | ||
can edit the files locally and the changes will be reflected on the virtual | ||
machine. | ||
|
||
To start the dev server: | ||
|
||
``` bash | ||
vagrant ssh | ||
|
||
# You are now in a terminal on the virtual machine | ||
cd /vagrant/fixmystreet | ||
|
||
# run the dev server | ||
bin/cron-wrapper script/fixmystreet_app_server.pl -d -r --fork | ||
``` | ||
|
||
The server should now be running and you can visit it at the address | ||
http://127.0.0.1.xip.io:3000/ | ||
|
||
Enjoy! |