Vagrant
Vagrant is an amazing tool for managing virtual machines via a simple to use command line interface.
Install
Vagrant uses Virtualbox to manage the virtual dependencies by default. (You can directly download virtualbox and install or use homebrew for it.) But I like using VMware Fusion 7 Professional with the Vagrant VMware provider.
I’m assuming you know how to download and install VMware Fusion the typical way.
brew install caskroom/cask/brew-cask brew cask install vagrant brew cask install vagrant-manager vagrant plugin install vagrant-vmware-fusion vagrant plugin license vagrant-vmware-fusion license.lic vagrant box add precise64_vmware http://files.vagrantup.com/precise64_vmware.box vagrant init precise64_vmware vagrant up vagrant ssh
SSHFS
Installation
An easy-to-use installer package for the latest version of SSHFS can be downloaded from the SSHFS repository’s download section. The package installs a self-contained (as in “does not depend on external libraries”) version of SSHFS. It supports Mac OS X 10.5 (Intel, PowerPC) and later.
Note: This build of SSHFS is based on the “FUSE for OS X” software, that is not contained in the installer package and has to be installed separately. The latest release of “FUSE for OS X” can be downloaded from http://osxfuse.github.com.
Macfusion
To use Macfusion with the newer “FUSE for OS X”-based version of SSHFS, put Macfusion in your Applications folder and run the following commands in Terminal. See 3. under “Frequently Asked Questions” for more information as to why you might want to use Macfusion.
cd /Applications/Macfusion.app/Contents/PlugIns/sshfs.mfplugin/Contents/Resources mv sshfs-static sshfs-static.orig ln -s /usr/local/bin/sshfs sshfs-static
I ran into a problem though. I mount some of my servers via SSH, and even though the SSH account has write access to some files, OS X doesn’t let me open them with the standard “permission denied” error. This is because the user on the server has another UID than the local user on my mac. To get around this issue, I’ve entered the following line into the Extra Options (Advanced) field of MacFusion:
-o idmap=user -o uid=501 -o gid=501
This maps the remote UIDs to match those of the local system. If you’re on a mac, your user ID will most likely be 501. If not, make sure you enter the right ID.
A few more customizations:
cd ~/vagrant/ vagrant ssh useradd -d /home/preilly -m preilly -s /bin/bash -c "Patrick Reilly" vim /etc/hostname #change to vagrant vim /etc/hosts #change to vagrant ifconfig | grep "inet addr" #take note of address (non loopback) exit vim /etc/hosts #add vagrant entry with previous ip from ifconfig ssh vagrant mkdir -p /home/preilly/.ssh vim authorized_keys chmod 700 /home/preilly/.ssh/ chmod 640 .ssh/authorized_keys exit ssh -A vagrant
Git
sudo apt-get install git git config --global user.name "Patrick Reilly" git config --global user.email "patrick@kismatic.io"
So now I can use the Macfusion menu item to mount my Vagrant image as a local volume:
cd /Volumes/vagrant/
and use the editor of my choice to work with my home directory in Vagrant.
Docker
Prerequisites
Docker requires a 64-bit installation regardless of your Ubuntu version. Additionally, your kernel must be 3.10 at minimum. The latest 3.10 minor version or a newer maintained version are also acceptable.
Kernels older than 3.10 lack some of the features required to run Docker containers. These older versions are known to have bugs which cause data loss and frequently panic under certain conditions.
To check your current kernel version, open a terminal and use uname -r
to display your kernel version:
$ ssh -A vagrant $ uname -r 3.2.0-29-virtual $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install linux-image-generic-lts-trusty $ sudo reboot
Get the latest Docker package
$ sudo apt-get install apparmor $ wget -qO- https://get.docker.com/ | sh $ sudo usermod -aG docker preilly
Verify docker is installed correctly.
$ sudo docker run hello-world
Installing Go
$ sudo apt-get install curl git mercurial make binutils bison gcc build-essential $ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) $ sudo apt-get install bison $ gvm install go1.4 $ gvm use go1.4 --default # I got bit by this issue: https://github.com/moovweb/gvm/issues/124 $ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:git-core/ppa $ sudo apt-get update $ sudo apt-get install git $ gvm use go1.4 --default
This is my current development environment on my MacBook. I’d really like to get others feedback or suggestions as well.