Skip to content

Instantly share code, notes, and snippets.

@bergantine
Last active August 30, 2022 19:31
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save bergantine/8742830 to your computer and use it in GitHub Desktop.
Save bergantine/8742830 to your computer and use it in GitHub Desktop.
Vagrant config for basic Python development

Initial setup of Vagrant Base

This step only ever needs to be done once. Once the precise64 box is installed on a system the remaining steps refer to that same box regardless of the project.

Download and install Xcode from the Apple App Store.

Download virtualbox from http://www.virtualbox.org/wiki/Downloads, install dmg.

Download vagrant from http://downloads.vagrantup.com/, install dmg.

Launch a terminal window, check that it installed:

(host) $ which vagrant

Add a vagrant box (we'll be using Ubuntu Precise Pangolin (12.04 LTS) 64-bit):

(host) $ vagrant box add precise64 http://files.vagrantup.com/precise64.box

Starting a New Project

Make a directory for the project and change to it, replacing <path_to> with the path to the project and <project_name> with the name of the project.

(host) $ mkdir <path_to>/<project_name> && cd $_

For example, to create a project called 'website' in your home directory:

(host) $ mkdir ~/website && cd $_

When you're all done, within this directory will be a directory named vagrant/ which will match up with /home/vagrant/ in the virtual envirionment. Virtualbox keeps the two directories in sync so changes to one will be made in the other.

Copy in the Vagrantfile.

(host) $ curl https://gist.github.com/jbergantine/8742830/raw/Vagrantfile > Vagrantfile

Copy in the provisioning files.

(host) $ curl https://gist.github.com/jbergantine/8742830/raw/bootstrap.sh > bootstrap.sh

Startup Vagrant and provision the Virtual Machine:

(host) $ vagrant up

SSH in to the virtualbox:

(host) $ vagrant ssh 
#!/usr/bin/env bash
apt-get update
# install python
apt-get install python-dev python-pip -q -y
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise64"
# 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 = "http://files.vagrantup.com/precise64.box"
# Provision
config.vm.provision :shell, :path => "bootstrap.sh"
# To access a website running on port 8000, we can open a web browser
# on our workstation and go to http://localhost:8000
config.vm.network "forwarded_port", guest: 8000, host: 8000
# Shared folder
config.vm.synced_folder "vagrant/", "/home/vagrant", create: true
end
@AndrewCull
Copy link

Thank you, clean and simple and saved me a few minutes. Appreciate it.

@GadgetSteve
Copy link

The magic that is missing from all of the other tutorials I have found vagrant box add....

@natesire
Copy link

I forgot the default ssh password into the vagrant box is vagrant. haha

@gskluzacek
Copy link

Thanks for the instructions. A couple of questions... why do you need to have Xcode installed? And does the VM support python virtual environments?

@adrianmak
Copy link

I'm curiouse. If i will using python ide like pycharm on the host machine, the code auto-completion, and the python libraries couldn't be recognized by the IDE ? (the python libraries , digango, flask are not installed on the host machine)

@grant-humphries
Copy link

would you be willing to explain the below command a little further?:

apt-get install python-dev python-pip -q -y

what is the difference between python and python-dev and what to -q and -y flags do?

@pretty
Copy link

pretty commented Mar 16, 2017

Will this be accessible in the host browser out of the box at :8000 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment