As a contractor - software developer, I remaster my work environment often, depending on the project requirements. Also, depending on the NDA, sometimes I work remotely on the boxes provided by my client. All in all, it is important for me to get a typical set of work tools quickly. So, let me share here how I get my new environment up and running while I am drinking coffee.
This article demonstrates an approach for unattended environment configuration with Ansible. Why Ansible? Because it has no dependencies except Python, which by default is installed on the box. List of available software recipes:
Tools to ensure your project documentation does not get lost:
Installation is done through these simple steps:
sudo apt-get install curl git
git clone git@github.com:Voronenko/ansible-developer_recipes.git
local.yml.template
to local.yml
local.sh
to provision your box.# - include: tasks_cleanupubuntu.yml # removes games, lens, etc
# - include: tasks_python.yml # basic updates to py & pip
# - include: tasks_worktools.yml # swiss knife for desktop utilities
# - include: tasks_mongodb_3.yml # mongodb 3.0
# - include: tasks_mysql.yml # MYSQL 5.5
# - include: tasks_percona_toolkit.yml # percona tools for mysql
# - include: tasks_nginx.yml # nginx
# - include: tasks_apache.yml # apache prefork|worker
# - include: tasks_nodejs.yml # node 0.10.* 0.12.*
# - include: tasks_java.yml # java 6-7-8
# - include: tasks_php_apache.yml # php 5.5 for apache
# - include: tasks_jetbrains_phpstorm.yml # PHP IDE
# - include: tasks_jetbrains_pycharm_community.yml # PY IDE
# - include: tasks_jetbrains_rubymine.yml # RUBY IDE
# - include: tasks_jetbrains_intellij_community.yml # JAVA IDE
# - include: tasks_robomongo.yml # mongo GUI tool
# - include: tasks_dbeawer.yml # mysql | postgre GUI tool
# - include: tasks_docker.yml # docker
# - include: tasks_oracle_virtualbox.yml # Oracle Virtual Box
# - include: tasks_vagrant.yml # Vagrant
# - include: tools/tasks_expect.yml # expect tool
# - include: tools/tasks_plantuml.yml # plant uml
# - include: tools/tasks_toggle.yml # toggle time tracker
# - include: tools/tasks_dpr.yml # d.pr screenshoting tool
# VMWARE
# - include: vmware/tasks_vmware_tools.yml # ESX vmware tools
# DEVELOPMENT
# - include: tools/tasks_mailhog.yml # Web and API based SMTP testing
# - include: "{{root_dir}}/vagrant/tasks_vagrant_php_webgrind.yml" # Webgrind
# - include: "{{root_dir}}/vagrant/tasks_vagrant_phpmyadmin.yml" # PhpMyAdmin
# - include: "{{root_dir}}/vagrant/tasks_vagrant_php_xdebug.yml" # XDebug extension
# db import script, python venv init scripts
# - include: "{{root_dir}}/vagrant/tasks_vagrant_write_tools.yml"
# - include: "{{root_dir}}/vagrant/tasks_vagrant_import_mysqldb_databag.yml"
# (re)imports databases from db folder
# - include: "{{root_dir}}/vagrant/tasks_vagrant_apache2_devsites.yml"
# register apache websites on vagrant
apps_dir: "/home/YOURUSER/apps"
mysql_root_user: root
mysql_root_password: devroot
apache_mode: worker # use prefork or worker variables
dbeawer_version: 3.4.5
intellij_version: 14.1.4
java_version: 8
mailhog_version: 0.1.6
mongo_version: 3
nodejs_version: "0.12" # 0.10 0.12
oracle_vbox_version: 4.3
phpstorm_version: 10.0 # | 9.0.2 | 8.0.3 | 8.0.1 | 7.1.4 | 6.0.3 | 5.0.4
php_xdebug_version: 2.2.4
pycharm_version: 4.5.4
robomongo_version: 0.8.5
rubymine_version: 7.1.4
vagrant_version: 1.7.4
php_family: default # 5.4 | 5.5 | 5.6 | default
hypervisor: esx
If you want to apply a similar set of recipes for your virtual machine - you might be interested in the example LAMP box at https://github.com/voronenko /lamp-box
I’m looking for forks and pull requests! Feel free to let me know if there are some similar projects that will allow one to configure Mac box in a similar way. Hope you find this developer box configuration useful.