SlideShare a Scribd company logo
DEVELOPING LOCALLY WITH VIRTUAL MACHINES
William Hurley, Manager of Programming
April 11, 2014
Monday, April 14, 14
About Forum One
1,500	
  projects	
  since	
  1996
Full	
  Service	
  Strategy	
  +	
  UX	
  +	
  Tech	
  +	
  Support
100%	
  Open	
  Source!
Monday, April 14, 14
75	
  Staff	
  Members	
  in
Alexandria,	
  SeaJle,
San	
  Francisco	
  and	
  more!
Monday, April 14, 14
The Challenge
Monday, April 14, 14
In 2008
LAMPi
n
u
x
p
a
c
h
e
y
S
q
l
H
P
Monday, April 14, 14
In 2008
4	
  languages
PHP
SQL
CSS	
  /	
  JS
3	
  services
Apache
MySQL
PHP	
  with	
  mod_php
5	
  Developers
1	
  Themer
2	
  System	
  
Administrators
Everyone	
  in	
  one	
  
building
Monday, April 14, 14
In 2014
LNMPSVMi
n
u
x
n
g
i
n
x
y
S
q
l
H
P
o
l
r
a
r
n
i
s
h
e
m
c
a
c
h
e
d
Monday, April 14, 14
In 2014
15	
  Developers
5	
  Interface	
  Engineers
2	
  Technical	
  PM
10	
  Contractors
2	
  System	
  
Administrators
Working	
  across	
  the	
  US	
  
and	
  Europe
7	
  languages
PHP
SQL
Ruby
Java
SASS	
  /	
  CSS	
  /	
  JS
7	
  services
Apache
nginx
MySQL
PostgreSQL
Solr
Varnish
Memcached
Redis
NodeJS
Monday, April 14, 14
Develop and Support
Launched	
  29	
  sites	
  in	
  2013
AcUvely	
  host	
  and	
  support	
  65+	
  sites
Drupal	
  6	
  and	
  7,	
  even	
  some	
  Drupal	
  5
WordPress
Custom	
  applicaUons	
  in	
  Python,	
  NodeJS,	
  Zend	
  
Framework,	
  Code	
  Igniter	
  and	
  others
Hosted	
  by	
  Forum	
  One,	
  Acquia,	
  Pantheon	
  and	
  
others
Monday, April 14, 14
Software and Versions Matter
Apache	
  or	
  nginx?
FPM	
  or	
  mod_php?
PHP	
  5.2,	
  5.3	
  or	
  5.4?
Ruby	
  1.8.7,	
  1.9	
  or	
  2.0?
Solr	
  3.5,	
  3.6,	
  4.4	
  or	
  4.6?
Redis	
  or	
  memcached
Varnish
Monday, April 14, 14
Looking to the Future
Web	
  properUes	
  ge`ng	
  more	
  complex
New	
  technologies	
  -­‐-­‐	
  not	
  yet	
  easily	
  installed	
  
on	
  consumer	
  systems
HHVM
PageSpeed
Mahout	
  /	
  Hadoop
Larger	
  and	
  more	
  distributed	
  teams
Monday, April 14, 14
Solutions
Monday, April 14, 14
Monday, April 14, 14
What is it?
“Vagrant	
  is	
  a	
  tool	
  for	
  building	
  complete	
  
development	
  environments.	
  With	
  an	
  easy-­‐
to-­‐use	
  workflow	
  and	
  focus	
  on	
  automaUon,	
  
Vagrant	
  lowers	
  development	
  environment	
  
setup	
  Ume,	
  increases	
  development/
producUon	
  parity,	
  and	
  makes	
  the	
  "works	
  on	
  
my	
  machine"	
  excuse	
  a	
  relic	
  of	
  the	
  past.”
Monday, April 14, 14
What Does that Mean?
Manages	
  per-­‐project	
  virtual	
  machines
Eases	
  configuraUon	
  for:
Port	
  forwarding
Shared	
  folders	
  including	
  NFS
SSH	
  agent	
  forwarding
Integrates	
  with	
  system	
  configuraUon	
  
management
Monday, April 14, 14
Why Does it Matter?
Easily	
  create	
  new	
  projects	
  -­‐-­‐	
  just	
  
run	
  “vagrant	
  up”
Keep	
  each	
  project	
  isolated
Keep	
  everyone	
  working	
  in	
  the	
  
same	
  environment
Monday, April 14, 14
Vagrant Workflow
Check	
  out	
  repository
Run	
  “vagrant	
  up”
Log	
  in	
  to	
  VM	
  by	
  running	
  “vagrant	
  ssh”
Run	
  git	
  or	
  drush	
  from	
  the	
  VM	
  or	
  locally
Work	
  with	
  files	
  locally
Monday, April 14, 14
Easy First Steps
Create	
  a	
  single	
  virtual	
  machine	
  with	
  
sojware	
  you	
  need
Generate	
  template
Share	
  with	
  team
Monday, April 14, 14
Challenges
More	
  system	
  resources	
  necessary
Requires	
  use	
  of	
  the	
  command-­‐line
Does	
  not	
  preserve	
  idiosyncraUc	
  preferences
Requires	
  addiUonal	
  sojware	
  -­‐-­‐	
  some	
  
changing	
  frequently
Not	
  all	
  drush	
  commands	
  work	
  well	
  from	
  
outside	
  the	
  VM
Monday, April 14, 14
Common Issues
On	
  some	
  machines	
  Intel	
  VirtualizaUon	
  
Technology	
  for	
  Directed	
  I/O	
  (VT-­‐d)	
  is	
  not	
  
enabled
SSH	
  commands	
  need	
  the	
  host	
  SSH	
  key	
  in	
  
the	
  SSH	
  agent	
  -­‐-­‐	
  ssh-­‐add
NaUve	
  file	
  sharing	
  on	
  OSX	
  and	
  Linux	
  is	
  slow	
  
-­‐-­‐	
  use	
  NFS
Monday, April 14, 14
Monday, April 14, 14
What is it?
“Puppet	
  is	
  IT	
  automaUon	
  sojware	
  that	
  helps	
  
system	
  administrators	
  manage	
  infrastructure	
  
throughout	
  its	
  lifecycle,	
  from	
  provisioning	
  and	
  
configuraUon	
  to	
  orchestraUon	
  and	
  reporUng.	
  
Using	
  Puppet,	
  you	
  can	
  easily	
  automate	
  
repeUUve	
  tasks,	
  quickly	
  deploy	
  criUcal	
  
applicaUons,	
  and	
  proacUvely	
  manage	
  change,	
  
scaling	
  from	
  10s	
  of	
  servers	
  to	
  1000s,	
  on-­‐
premise	
  or	
  in	
  the	
  cloud.”
Monday, April 14, 14
What Does that Mean?
Ensures	
  current	
  environment	
  matches	
  
configuraUon
Domain	
  specific	
  language	
  to	
  configure:
Services
Files
Permissions
Se`ngs
Monday, April 14, 14
Alternatives
Monday, April 14, 14
Why Does it Matter?
Ability	
  to	
  customize	
  sojware	
  for	
  each	
  
project	
  independently
Ability	
  to	
  customize	
  se`ngs	
  for	
  each	
  
project	
  independently	
  and	
  share	
  those	
  
se`ngs	
  with	
  each	
  team	
  member
Leverage	
  experUse	
  in	
  certain	
  technologies	
  
across	
  the	
  enUre	
  team
Monday, April 14, 14
Challenges
Centralizes	
  knowledge	
  and	
  experUse
Takes	
  Ume	
  to	
  provision	
  virtual	
  machine
Achieving	
  parity	
  with	
  developer	
  desired	
  
tools	
  -­‐-­‐	
  e.g.	
  XDebug,	
  XHProf
Change	
  can	
  be	
  difficult
Monday, April 14, 14
PuPHPet
Monday, April 14, 14
Other Examples
Drupal-­‐VM	
  (github.com/Bussmeyer/drupal-­‐vm)
Varying	
  Vagrant	
  Vagrants	
  (github.com/Varying-­‐
Vagrant-­‐Vagrants/VVV)
Kalabox	
  (www.kalamuna.com/products/kalabox)
Monday, April 14, 14
Or Roll Your Own
Advantages
Control	
  over	
  all	
  aspects	
  of	
  the	
  provisioning
Easy	
  to	
  use	
  organizaUon	
  specific	
  configuraUon	
  -­‐-­‐	
  
e.g.	
  Varnish,	
  Solr,	
  nginx
Challenges
Takes	
  Ume	
  to	
  learn	
  tool
Limits	
  your	
  community
Monday, April 14, 14
Key Components
Librarian	
  Puppet
Puppet	
  modules	
  -­‐-­‐	
  Puppet	
  Forge,	
  Git
Hiera
Monday, April 14, 14
Hiera
---
classes:
- forumone::varnish
- forumone::nodejs
- forumone::ruby
- memcached
forumone::webserver::webserver: nginx
forumone::php::modules:
- pecl-memcached
- xcache
- gd
php::modules:
xcache:
settings:
xcache.size: "96M"
---
classes:
- forumone::webserver
- forumone::php
- forumone::drush
- forumone::mailcatcher
forumone::php::modules:
- xml
- pdo
- mbstring
- mysql
- pecl-xdebug
php::ini:
display_errors: "On"
memory_limit: "256M"
upload_max_filesize: "50M"
post_max_size: "100M"
sendmail_path: "/usr/bin/env catchmail"
percona::conf:
max_allowed_packets:
content: "[mysqld]nmax_allowed_packet=100M"
innodb_file_per_table:
content: "[mysqld]ninnodb_file_per_table"
query_cache_size:
content: "[mysqld]nquery_cache_size = 128M"
table_open_cache:
content: "[mysqld]ntable_open_cache = 2048"
memory_buffers:
content: "[mysqld]ntmp_table_size =
128nmax_heap_table_size = 128Mnjoin_buffer_size = 1M
nmyisam_sort_buffer_size = 8Mnsort_buffer_size = 2M"
php::modules:
xdebug:
pkgname: "pecl-xdebug"
zend: "/usr/lib64/php/modules"
settings:
---
forumone::databases:
web:
username: web
forumone::webserver::vhosts:
vagrant:
path: "/vagrant/public"
forumone::php::prefix: "php53u"
forumone::solr::collections:
drupal:
order: 1
Server Platform Site
Monday, April 14, 14
THANK YOU!
Any questions?
whurley@forumone.com
Monday, April 14, 14

More Related Content

What's hot

FOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula ProjectFOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula ProjectOpenNebula Project
 
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategiesrahulbot
 
The swiss knife of a word press developer
The swiss knife of a word press developerThe swiss knife of a word press developer
The swiss knife of a word press developer
Ivelina Dimova
 
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Frank van der Linden
 
Vagrant up-and-running
Vagrant up-and-runningVagrant up-and-running
Vagrant up-and-running
Joe Ferguson
 
Beyond Local Development w/Kalabox (SFDUG July 2015)
Beyond Local Development w/Kalabox (SFDUG July 2015)Beyond Local Development w/Kalabox (SFDUG July 2015)
Beyond Local Development w/Kalabox (SFDUG July 2015)
Alec Reynolds
 
Drupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflowDrupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflow
valuebound
 
NWJS. Web on desktop
NWJS. Web on desktopNWJS. Web on desktop
NWJS. Web on desktop
Aigars Zeiza
 
Deploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureDeploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on Azure
Michele Aponte
 
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd ErkOpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebula Project
 
Saving Time and Money with Vagrant
Saving Time and Money with VagrantSaving Time and Money with Vagrant
Saving Time and Money with Vagrant
Tim Broder
 
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier FontanOpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
NETWAYS
 
Symfony presentation
Symfony presentationSymfony presentation
Symfony presentation
maxpower57
 
Node.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechNode.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechChristopher Bumgardner
 
Portable PHP
Portable PHPPortable PHP
Portable PHP
weltling
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress Workflow
Ann Cascarano
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
nuppla
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più
DrupalDay
 
Working in harmony
Working in harmonyWorking in harmony
Working in harmony
Edmund Turbin
 

What's hot (20)

FOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula ProjectFOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula Project
 
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies
 
The swiss knife of a word press developer
The swiss knife of a word press developerThe swiss knife of a word press developer
The swiss knife of a word press developer
 
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
 
Vagrant up-and-running
Vagrant up-and-runningVagrant up-and-running
Vagrant up-and-running
 
Beyond Local Development w/Kalabox (SFDUG July 2015)
Beyond Local Development w/Kalabox (SFDUG July 2015)Beyond Local Development w/Kalabox (SFDUG July 2015)
Beyond Local Development w/Kalabox (SFDUG July 2015)
 
Drupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflowDrupal 8 - Improving your development workflow
Drupal 8 - Improving your development workflow
 
NWJS. Web on desktop
NWJS. Web on desktopNWJS. Web on desktop
NWJS. Web on desktop
 
Deploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on AzureDeploy an Asp.Net Core App on Azure
Deploy an Asp.Net Core App on Azure
 
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd ErkOpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
OpenNebulaConf 2013 - OpenNebula in a Multi-Customer-Environment by Bernd Erk
 
Saving Time and Money with Vagrant
Saving Time and Money with VagrantSaving Time and Money with Vagrant
Saving Time and Money with Vagrant
 
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier FontanOpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
OpenNebula Conf 2014 | OpenNebula as Open Replacement of vCloud by Javier Fontan
 
Symfony presentation
Symfony presentationSymfony presentation
Symfony presentation
 
Node.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ BenetechNode.js, Vagrant, Chef, and Mathoid @ Benetech
Node.js, Vagrant, Chef, and Mathoid @ Benetech
 
Portable PHP
Portable PHPPortable PHP
Portable PHP
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress Workflow
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più
 
Working in harmony
Working in harmonyWorking in harmony
Working in harmony
 

Similar to Developing locally with virtual machines

Puppet Keynote
Puppet KeynotePuppet Keynote
Puppet Keynote
Puppet
 
Joomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJoomla Continuous Delivery with Docker
Joomla Continuous Delivery with Docker
Jirayut Nimsaeng
 
Speed Up Development With OpenShift
Speed Up Development With OpenShiftSpeed Up Development With OpenShift
Speed Up Development With OpenShift
plarsen67
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Florent BENOIT
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
Shean McManus
 
Puppet Camp London 2014: Keynote
Puppet Camp London 2014: KeynotePuppet Camp London 2014: Keynote
Puppet Camp London 2014: Keynote
Puppet
 
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationScaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global Organization
Puppet
 
Cumulus Networks & Puppet Labs webinar
Cumulus Networks & Puppet Labs webinarCumulus Networks & Puppet Labs webinar
Cumulus Networks & Puppet Labs webinar
Cumulus Networks
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
Jirayut Nimsaeng
 
OFC 2014 Dinesh Dutt
OFC 2014 Dinesh DuttOFC 2014 Dinesh Dutt
OFC 2014 Dinesh Dutt
Cumulus Networks
 
Muraliupdatedpersona150716
Muraliupdatedpersona150716Muraliupdatedpersona150716
Muraliupdatedpersona150716Murali Krishna R
 
Choosing the Right Infrastructure Provider
Choosing the Right Infrastructure ProviderChoosing the Right Infrastructure Provider
Choosing the Right Infrastructure Provider
NephoScale
 
[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE
[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE
[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE
Nuxeo
 
Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...
Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...
Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...
Zohar Babin
 
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07
Jorge Hidalgo
 
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Ori Bendet
 
Show an Open Source Project Some Love and Start Using Travis-CI
Show an Open Source Project Some Love and Start Using Travis-CIShow an Open Source Project Some Love and Start Using Travis-CI
Show an Open Source Project Some Love and Start Using Travis-CI
Joel Byler
 
PHP Vs ASP.NET : How to Choose the Right One?
PHP Vs ASP.NET: How to Choose the Right One?PHP Vs ASP.NET: How to Choose the Right One?
PHP Vs ASP.NET : How to Choose the Right One?
netdroidtech
 
Headless Drupal, Singapore Drupal Meetup
Headless Drupal, Singapore Drupal MeetupHeadless Drupal, Singapore Drupal Meetup
Headless Drupal, Singapore Drupal Meetup
Pratomo Ardianto
 
Tech talk: PHP
Tech talk: PHPTech talk: PHP
Tech talk: PHP
Jen Wei Lee
 

Similar to Developing locally with virtual machines (20)

Puppet Keynote
Puppet KeynotePuppet Keynote
Puppet Keynote
 
Joomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJoomla Continuous Delivery with Docker
Joomla Continuous Delivery with Docker
 
Speed Up Development With OpenShift
Speed Up Development With OpenShiftSpeed Up Development With OpenShift
Speed Up Development With OpenShift
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
 
Puppet Camp London 2014: Keynote
Puppet Camp London 2014: KeynotePuppet Camp London 2014: Keynote
Puppet Camp London 2014: Keynote
 
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationScaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global Organization
 
Cumulus Networks & Puppet Labs webinar
Cumulus Networks & Puppet Labs webinarCumulus Networks & Puppet Labs webinar
Cumulus Networks & Puppet Labs webinar
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
OFC 2014 Dinesh Dutt
OFC 2014 Dinesh DuttOFC 2014 Dinesh Dutt
OFC 2014 Dinesh Dutt
 
Muraliupdatedpersona150716
Muraliupdatedpersona150716Muraliupdatedpersona150716
Muraliupdatedpersona150716
 
Choosing the Right Infrastructure Provider
Choosing the Right Infrastructure ProviderChoosing the Right Infrastructure Provider
Choosing the Right Infrastructure Provider
 
[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE
[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE
[Nuxeo World 2013] ADVANCED WORKFLOWS WITH CONTENT ROUTING - ALAIN ESCAFFRE
 
Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...
Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...
Debugging LAMP Apps on Linux/UNIX Using Open Source Tools - Jess Portnot - OS...
 
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07
 
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
Tales from the Dark Side: Ori Bendet Selenium Conference India 2016
 
Show an Open Source Project Some Love and Start Using Travis-CI
Show an Open Source Project Some Love and Start Using Travis-CIShow an Open Source Project Some Love and Start Using Travis-CI
Show an Open Source Project Some Love and Start Using Travis-CI
 
PHP Vs ASP.NET : How to Choose the Right One?
PHP Vs ASP.NET: How to Choose the Right One?PHP Vs ASP.NET: How to Choose the Right One?
PHP Vs ASP.NET : How to Choose the Right One?
 
Headless Drupal, Singapore Drupal Meetup
Headless Drupal, Singapore Drupal MeetupHeadless Drupal, Singapore Drupal Meetup
Headless Drupal, Singapore Drupal Meetup
 
Tech talk: PHP
Tech talk: PHPTech talk: PHP
Tech talk: PHP
 

Recently uploaded

GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 

Recently uploaded (20)

GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 

Developing locally with virtual machines

  • 1. DEVELOPING LOCALLY WITH VIRTUAL MACHINES William Hurley, Manager of Programming April 11, 2014 Monday, April 14, 14
  • 2. About Forum One 1,500  projects  since  1996 Full  Service  Strategy  +  UX  +  Tech  +  Support 100%  Open  Source! Monday, April 14, 14
  • 3. 75  Staff  Members  in Alexandria,  SeaJle, San  Francisco  and  more! Monday, April 14, 14
  • 6. In 2008 4  languages PHP SQL CSS  /  JS 3  services Apache MySQL PHP  with  mod_php 5  Developers 1  Themer 2  System   Administrators Everyone  in  one   building Monday, April 14, 14
  • 8. In 2014 15  Developers 5  Interface  Engineers 2  Technical  PM 10  Contractors 2  System   Administrators Working  across  the  US   and  Europe 7  languages PHP SQL Ruby Java SASS  /  CSS  /  JS 7  services Apache nginx MySQL PostgreSQL Solr Varnish Memcached Redis NodeJS Monday, April 14, 14
  • 9. Develop and Support Launched  29  sites  in  2013 AcUvely  host  and  support  65+  sites Drupal  6  and  7,  even  some  Drupal  5 WordPress Custom  applicaUons  in  Python,  NodeJS,  Zend   Framework,  Code  Igniter  and  others Hosted  by  Forum  One,  Acquia,  Pantheon  and   others Monday, April 14, 14
  • 10. Software and Versions Matter Apache  or  nginx? FPM  or  mod_php? PHP  5.2,  5.3  or  5.4? Ruby  1.8.7,  1.9  or  2.0? Solr  3.5,  3.6,  4.4  or  4.6? Redis  or  memcached Varnish Monday, April 14, 14
  • 11. Looking to the Future Web  properUes  ge`ng  more  complex New  technologies  -­‐-­‐  not  yet  easily  installed   on  consumer  systems HHVM PageSpeed Mahout  /  Hadoop Larger  and  more  distributed  teams Monday, April 14, 14
  • 14. What is it? “Vagrant  is  a  tool  for  building  complete   development  environments.  With  an  easy-­‐ to-­‐use  workflow  and  focus  on  automaUon,   Vagrant  lowers  development  environment   setup  Ume,  increases  development/ producUon  parity,  and  makes  the  "works  on   my  machine"  excuse  a  relic  of  the  past.” Monday, April 14, 14
  • 15. What Does that Mean? Manages  per-­‐project  virtual  machines Eases  configuraUon  for: Port  forwarding Shared  folders  including  NFS SSH  agent  forwarding Integrates  with  system  configuraUon   management Monday, April 14, 14
  • 16. Why Does it Matter? Easily  create  new  projects  -­‐-­‐  just   run  “vagrant  up” Keep  each  project  isolated Keep  everyone  working  in  the   same  environment Monday, April 14, 14
  • 17. Vagrant Workflow Check  out  repository Run  “vagrant  up” Log  in  to  VM  by  running  “vagrant  ssh” Run  git  or  drush  from  the  VM  or  locally Work  with  files  locally Monday, April 14, 14
  • 18. Easy First Steps Create  a  single  virtual  machine  with   sojware  you  need Generate  template Share  with  team Monday, April 14, 14
  • 19. Challenges More  system  resources  necessary Requires  use  of  the  command-­‐line Does  not  preserve  idiosyncraUc  preferences Requires  addiUonal  sojware  -­‐-­‐  some   changing  frequently Not  all  drush  commands  work  well  from   outside  the  VM Monday, April 14, 14
  • 20. Common Issues On  some  machines  Intel  VirtualizaUon   Technology  for  Directed  I/O  (VT-­‐d)  is  not   enabled SSH  commands  need  the  host  SSH  key  in   the  SSH  agent  -­‐-­‐  ssh-­‐add NaUve  file  sharing  on  OSX  and  Linux  is  slow   -­‐-­‐  use  NFS Monday, April 14, 14
  • 22. What is it? “Puppet  is  IT  automaUon  sojware  that  helps   system  administrators  manage  infrastructure   throughout  its  lifecycle,  from  provisioning  and   configuraUon  to  orchestraUon  and  reporUng.   Using  Puppet,  you  can  easily  automate   repeUUve  tasks,  quickly  deploy  criUcal   applicaUons,  and  proacUvely  manage  change,   scaling  from  10s  of  servers  to  1000s,  on-­‐ premise  or  in  the  cloud.” Monday, April 14, 14
  • 23. What Does that Mean? Ensures  current  environment  matches   configuraUon Domain  specific  language  to  configure: Services Files Permissions Se`ngs Monday, April 14, 14
  • 25. Why Does it Matter? Ability  to  customize  sojware  for  each   project  independently Ability  to  customize  se`ngs  for  each   project  independently  and  share  those   se`ngs  with  each  team  member Leverage  experUse  in  certain  technologies   across  the  enUre  team Monday, April 14, 14
  • 26. Challenges Centralizes  knowledge  and  experUse Takes  Ume  to  provision  virtual  machine Achieving  parity  with  developer  desired   tools  -­‐-­‐  e.g.  XDebug,  XHProf Change  can  be  difficult Monday, April 14, 14
  • 28. Other Examples Drupal-­‐VM  (github.com/Bussmeyer/drupal-­‐vm) Varying  Vagrant  Vagrants  (github.com/Varying-­‐ Vagrant-­‐Vagrants/VVV) Kalabox  (www.kalamuna.com/products/kalabox) Monday, April 14, 14
  • 29. Or Roll Your Own Advantages Control  over  all  aspects  of  the  provisioning Easy  to  use  organizaUon  specific  configuraUon  -­‐-­‐   e.g.  Varnish,  Solr,  nginx Challenges Takes  Ume  to  learn  tool Limits  your  community Monday, April 14, 14
  • 30. Key Components Librarian  Puppet Puppet  modules  -­‐-­‐  Puppet  Forge,  Git Hiera Monday, April 14, 14
  • 31. Hiera --- classes: - forumone::varnish - forumone::nodejs - forumone::ruby - memcached forumone::webserver::webserver: nginx forumone::php::modules: - pecl-memcached - xcache - gd php::modules: xcache: settings: xcache.size: "96M" --- classes: - forumone::webserver - forumone::php - forumone::drush - forumone::mailcatcher forumone::php::modules: - xml - pdo - mbstring - mysql - pecl-xdebug php::ini: display_errors: "On" memory_limit: "256M" upload_max_filesize: "50M" post_max_size: "100M" sendmail_path: "/usr/bin/env catchmail" percona::conf: max_allowed_packets: content: "[mysqld]nmax_allowed_packet=100M" innodb_file_per_table: content: "[mysqld]ninnodb_file_per_table" query_cache_size: content: "[mysqld]nquery_cache_size = 128M" table_open_cache: content: "[mysqld]ntable_open_cache = 2048" memory_buffers: content: "[mysqld]ntmp_table_size = 128nmax_heap_table_size = 128Mnjoin_buffer_size = 1M nmyisam_sort_buffer_size = 8Mnsort_buffer_size = 2M" php::modules: xdebug: pkgname: "pecl-xdebug" zend: "/usr/lib64/php/modules" settings: --- forumone::databases: web: username: web forumone::webserver::vhosts: vagrant: path: "/vagrant/public" forumone::php::prefix: "php53u" forumone::solr::collections: drupal: order: 1 Server Platform Site Monday, April 14, 14