One VM to rule them all, One VM to find them, One VM to bring them all, and in the darkness bind them.
Want to learn more? Check out the blog post!
First create a directory on your machine to hold all slashdeploy
repositories. The instructions assume
~/slashdeploy, but you're welcome
to use any directory you want. This value must be set in the
SLASHDEPLOY_PROJECT_PATH environment variable. Put this or it's
equivalent in your shell config:
Next enter that directory and clone this repository
$ cd "$SLASHDEPLOY_PROJECT_PATH" $ git clone email@example.com:slashdeploy/workstation.git --recursive $ cd workstation
Now it's time to configure your host system. Althought most of the heavy lifting is done by the workstation virtual machine, your host system still needs to support the virtual machine. This requires some dependencies and setting other environment variables. There is a test program that verifies your host system. Run:
Repeat and follow the instructions until everything is configured correctly.
$ slashdeploy-workstation up $ slashdeploy-workstation provision
Last but not least it's time to clone all slashdeploy code to your machine.
Now you should be ready to go! You should alias
to something shorter in your shell. This will save you a ton of
Upgrades notices come from the SRE team. Upgrading happens with the following command:
$ slashdeploy-workstation upgrade
slashdeploy-workstation upgrade command is a three step process which involves:
git pullto get the latest code
git submodule updateto update vendored dependnecies
slashdeploy-workstation provisionto reconfigure the workstation
NOTE: Upgrades may require you to configure more environment variables.
How it works
- We boot a vagrant-machine and set it up to have essential tools
$SLASHDEPLOY_PROJECT_PATHis mounted at
/projectsinside the VM
- Aliases are used to easily run commands inside the VM under the relative path
$ slashdeploy-workstation run -- whatevercan be used to run whatever
These commands are intended to run against a particular project.
shell- Open terminal
These commands may be invoked from anywhere since they are not project specific.
make coordinates the test process. The test process provisions a new
VM from scratch and ensure all the appropriate things went off
$ make clean test-ci