2014 DevOps Day – Philippines
February 22, 2014

Microsoft Philippines

8th Floor, 6750 Ayala Ave., Makati City
{ DevOps Way } : Consistent
Development Environment using
Vagrant and Chef

Gerald Z. Villorente

DevOps Engineer | Drupal...
About Me
 Started to learn how to use computer in 2005
 I became a computer technician in 2007
 I became a Web Develope...
Agenda:
Agenda:

 The Traditional Setup
 What is Vagrant
 Why to use Vagrant
 DevOps with Vagrant in Mind
 What is Ch...
Your Dev and Prod
environment
are not the same!
 Different Operating Systems
 Different version of PHP|Python|Ruby|Node....
Well, it worked on my
machine!
Against DevOps principle!
Dev and Ops War
The Right Way!
Virtualized Environments
Reasons why we should:
Reasons why we should:
 Consistent Operating Systems and PHP|Python|Ruby|Node.js
versions between ...
Reasons why we don't:
Reasons why we don't:

 Can never get the networking between host and guest OS.
 Scared of the com...
What
is Vagrant?
A tool for building and
distributing virtualized
environments.
Why Vagrant?
Isolation
Mirror Production
Test Ops scripts
with a free server
Designers and QA
can setup their
environment easily
Faster Onboarding
Getting Started

 Install Virtualbox | VMware
 Install Vagrant
 Import your base OS ($ vagrant box add [BASE_NAME] [PAT...
Demo
That's the OS only.
How about the
packages I needed?
Should I install them manually?
Well, you have 2 options.

 Package an existing running environment.

$ vagrant package --base VM_ID --output BOX_NAME.bo...
DevOps with
Vagrant in Mind
The Goal: Develop
Cookbooks and Modules
to run in a
VM and Production
Vagrant and DevOps:
Vagrant and DevOps:

Little Extra Effort
Big Gain
Good Practices
Chef

A tool for automating the provisioning and management of servers
A Good Example
Why Chef?
Less documentation
Bash doesn't scale.
Seriously.

Bash is a wonderful thing, but like all UNIX tools, it is fundamentally
limited by design....
Maybe you can do this using “sed”. But hey are you sick?
Technical Awesomeness.
NOSQL FTW

One of the virtues that many *nix tools share is that they store their
configurations in text files rather than...
Knowing is Half the Battle

Chef uses Ohai to collect data about your system. Your recipes can
access these attributes and...
Search

Search is a feature in Chef Server that allows you to query the
configuration information of all other servers and...
Knife

Knife is one of the truly great command line tools. It is your primary
mechanism for interacting with the chef-serv...
Shef

Shef works the way you work, in an iterative manner. Most of us
system administrators are self-taught and we learn b...
Chef grows with you.

Chef uses pure Ruby as its configuration language, not a shackled
subset of ruby, nor yet another cu...
You can stop
reinventing the wheel.

Until Chef, we sysadmins did not have a truly modular way to
abstract and share our s...
Demo
I don't know Ruby. How
can I create a robust
script|recipe|manifest?
rove.io
PuPHPet
Questions?
Thank You!
References:
References:
1. http://www.scoop.it/
2. http://devopsanywhere.blogspot.com/
3. http://www.vagrantup.com/
4. htt...
Credits:
Credits:
1. Mitchell Hashimoto
Founder of HashiCorp, Creator of Vagrant and Packer
2. Opscode
Creator of Chef
3. ...
Upcoming SlideShare
Loading in …5
×

Consistent Development Environment using Vagrant and Chef

2,834 views
2,556 views

Published on

This presentation is about how to setup a consistent environment using Vagrant and Chef.

Published in: Technology
2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total views
2,834
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
14
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide

Consistent Development Environment using Vagrant and Chef

  1. 1. 2014 DevOps Day – Philippines February 22, 2014 Microsoft Philippines 8th Floor, 6750 Ayala Ave., Makati City
  2. 2. { DevOps Way } : Consistent Development Environment using Vagrant and Chef Gerald Z. Villorente DevOps Engineer | Drupal Developer | Open-Source Enthusiast
  3. 3. About Me  Started to learn how to use computer in 2005  I became a computer technician in 2007  I became a Web Developer in 2009  Drupalista since 2011  Drupal Developer at CNN Travel|KiteSystems 2011-2013  DevOps Engineer at BodogNation 2013-2014  Drupal Engineer at X-Team 2014-present
  4. 4. Agenda: Agenda:  The Traditional Setup  What is Vagrant  Why to use Vagrant  DevOps with Vagrant in Mind  What is Chef  Why to use Chef
  5. 5. Your Dev and Prod environment are not the same!  Different Operating Systems  Different version of PHP|Python|Ruby|Node.js  Different configuration files  Different libraries and extensions
  6. 6. Well, it worked on my machine!
  7. 7. Against DevOps principle!
  8. 8. Dev and Ops War
  9. 9. The Right Way!
  10. 10. Virtualized Environments
  11. 11. Reasons why we should: Reasons why we should:  Consistent Operating Systems and PHP|Python|Ruby|Node.js versions between production and development machine.  New comers can get going with the development right away. No more painful setups.  Redistributable in case of hardware failure.
  12. 12. Reasons why we don't: Reasons why we don't:  Can never get the networking between host and guest OS.  Scared of the command line.  Massive overhead keeping the VM up to date.
  13. 13. What is Vagrant?
  14. 14. A tool for building and distributing virtualized environments.
  15. 15. Why Vagrant?
  16. 16. Isolation
  17. 17. Mirror Production
  18. 18. Test Ops scripts with a free server
  19. 19. Designers and QA can setup their environment easily
  20. 20. Faster Onboarding
  21. 21. Getting Started  Install Virtualbox | VMware  Install Vagrant  Import your base OS ($ vagrant box add [BASE_NAME] [PATH.box])  Generate Vagrantfile config ($ vagrant init [BASE_NAME])  Boot your guest machine ($ vagrant up)
  22. 22. Demo
  23. 23. That's the OS only. How about the packages I needed? Should I install them manually?
  24. 24. Well, you have 2 options.  Package an existing running environment. $ vagrant package --base VM_ID --output BOX_NAME.box  Use Chef or Puppet to provision that packages and needed config.
  25. 25. DevOps with Vagrant in Mind
  26. 26. The Goal: Develop Cookbooks and Modules to run in a VM and Production
  27. 27. Vagrant and DevOps: Vagrant and DevOps: Little Extra Effort Big Gain Good Practices
  28. 28. Chef A tool for automating the provisioning and management of servers
  29. 29. A Good Example
  30. 30. Why Chef?
  31. 31. Less documentation
  32. 32. Bash doesn't scale. Seriously. Bash is a wonderful thing, but like all UNIX tools, it is fundamentally limited by design. Bash doesn't have a code reuse mechanism more powerful than functions.
  33. 33. Maybe you can do this using “sed”. But hey are you sick?
  34. 34. Technical Awesomeness.
  35. 35. NOSQL FTW One of the virtues that many *nix tools share is that they store their configurations in text files rather than binary formats or in a database. Chef stores your system configurations in text and in a database. It accomplishes this by using the documentoriented database, CouchDB.
  36. 36. Knowing is Half the Battle Chef uses Ohai to collect data about your system. Your recipes can access these attributes and make decisions based on them. For example, you can determine which version of Red Hat you are using simply by looking up the value of node['platform_version']. You don't have to cat | grep | awk to find out which release you are on.
  37. 37. Search Search is a feature in Chef Server that allows you to query the configuration information of all other servers and of globally-defined databags (global variable). This allows you to do things like configure clusters where a member of cluster needs to know not only about its own configuration but about the configurations of the other members of the cluster.
  38. 38. Knife Knife is one of the truly great command line tools. It is your primary mechanism for interacting with the chef-server. Knife shares many usage patterns with git. If you love git, you'll love knife.
  39. 39. Shef Shef works the way you work, in an iterative manner. Most of us system administrators are self-taught and we learn best by doing. Fire up shef and you can on the fly play with attributes and create recipes. Further, you can connect to your server and download the cookbooks.
  40. 40. Chef grows with you. Chef uses pure Ruby as its configuration language, not a shackled subset of ruby, nor yet another custom configuration language. You only have to learn a small amount of ruby to get started with chef.
  41. 41. You can stop reinventing the wheel. Until Chef, we sysadmins did not have a truly modular way to abstract and share our system configurations.
  42. 42. Demo
  43. 43. I don't know Ruby. How can I create a robust script|recipe|manifest?
  44. 44. rove.io
  45. 45. PuPHPet
  46. 46. Questions?
  47. 47. Thank You!
  48. 48. References: References: 1. http://www.scoop.it/ 2. http://devopsanywhere.blogspot.com/ 3. http://www.vagrantup.com/ 4. https://puphpet.com/ 5. http://rove.io/ 6. http://www.getchef.com/ 7. http://puppetlabs.com/
  49. 49. Credits: Credits: 1. Mitchell Hashimoto Founder of HashiCorp, Creator of Vagrant and Packer 2. Opscode Creator of Chef 3. Puppet Labs Creator of Puppet

×