Bootstrap project used to setup environments during my R&D activities and 'pet' projects
I usually use ubuntu neither 12.04.3 LTS (Precise Pangolin), Ubuntu 12.10 (Quantal Quetzal). I am also adapting 13.10 (Saucy Salamander), but it still has some incompatibilities on packages.
- Configure development boxes on your ESX server
- Configure development boxes with Vagrant on your virtual box
- Configure your bare metal development workstation
Once you cloned repository on a target box, run init.sh; For ubuntu 13.10 recommended way is to run init_1310.sh
By default, it will install bootstrap software packages listed below:
- Git
- Ruby 1.9.3 (dev)
- OpsCode CHEF https://wiki.opscode.com/display/chef/Home
- Librarian-chef https://github.com/applicationsonline/librarian-chef
- Berkshelf (for Vagrant based provisioning) http://berkshelf.com/
Install Oracle VirtualBox [http://www.virtualbox.org/], Vagrant [http://vagrantup.com/],
- vagrant berkshelf plugin [vagrant plugin install vagrant-berkshelf]
- vagrant vbguest plugin [vagrant plugin install vagrant-vbguest]
Note: for Vagrant > 1.5.3 syntax for installing berkshelf plugin is different:
- vagrant plugin install vagrant-berkshelf --plugin-version '>= 2.0.1'
Windows: You also will need to have either tar in a path, or patch your ruby devkit with http://gnuwin32.sourceforge.net/packages/gtar.htm
vagrant-berkshelf is a Vagrant plugin to add Berkshelf integration to the Chef provisioners
vagrant-vbguest is a Vagrant plugin which automatically installs the host's VirtualBox Guest Additions on the guest system.
Clone developer bootstrap repository. Using Vagrantfile as an example choose necessary roles for your box. Use vagrant environment file to adjust your software settings and versions.
Use vagrant up to boot up the box.
Note: Vagrantfile is based on official Vagrant Ubuntu 12.04 Precise 32bit image. At present moment it has outdated ruby & chef version installed. By default during provision custom init_vagrant.sh script is executed. In a result, virtuaŠ“ server is upgraded with ruby 1.9.3 and more recent chef-solo version.
Official cookbooks for widely used software
I use this directory to checkout cookbooks that are not available for the public, and are specifically related to project specific environment configuration
Directory contains optional project specific file artifacts for cookbooks.
Contains preferences to package versions, vendors and machine wide configuraiton for packages installed
Contains instructions to configure predefined set of the software on specific workstation basing on it's role (lamp box, java box, big data box, MEAN box, etc.
Contains combination of recipes (roles) to configure workstation for predefined needs. By default roles are:
- gui - installs set of handy tools, so that workstation can be used for GUI development
- sql - installs set of tools for efficient work with MySQL (Percona, MariaDB) box
- lamp_debug - configures workstation for lamp development
Manual steps are:
sudo chef-solo -c solo.rb -j nodes/nodename.json
Vagrant steps are: vagrant up
Suggested recipe requires minimum configuration to run (PHPStorm)
- in project settings/server register vagrant server (You can use some wildcard domain like PROJECT.lvh.me to map test domain name to vagrant box)
- in phpstorm set XDEBUG_SESSION_START variable (PHPSTORM or whatever)
- Put breakpoint, launch debugging session (for example using handy chrome helper [https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc]
http://docs.opscode.com/ [http://docs.vagrantup.com/v2/] (http://docs.vagrantup.com/v2/)
#Linked projects: #
Interested in using developer box Chef recipes in your own cookbooks? See https://github.com/Voronenko/chef-developer_recipes
Interested in building your devbox on top of Vagrant + vagrant-berkshelf plugin? See https://github.com/Voronenko/vagrant-wrap
Note: see following article about future of the vagrant-berkshelf plugin https://sethvargo.com/the-future-of-vagrant-berkshelf/
Interested in building your devbox on top of Vagrant + test-kitchen? See https://github.com/Voronenko/lamp-kitchen