Vagrant and Chef on FOSSASIA 2014

50 %
50 %
Information about Vagrant and Chef on FOSSASIA 2014

Published on March 1, 2014

Author: mimiknoll



This presentation gives a short introduction to Vagrant and Chef for automation of configuration management. You will get a first overview of the stack of technology used to set up your own Vagrant Boxes and how they help the to build reliable development environments right on your own local laptop. We will scratch topics like DevOps and Continuous Integration and how they link to Configuration Management and Chef and Vagrant.

If you like these slides, make sure to check out as well!

Reproducible and Portable Work Environments with Vagrant and Chef

About Me • 33 years old, almost married • From Karlsruhe, Germany • Studied Computer Science • Hobbies: guitar, climbing, cycling, travel, photography • Works in Phnom Penh for 3 months • Working with TYPO3

Outline • Motivation • Introducing Vagrant & Chef • Vagrant „Hands-On“ • Advanced usage

Motivation • Internal project • Estimated development time ~2 years • Approx. 15 developers • 2-day sprints, every second week • 4 developers per sprint

Motivation Observations • Setting up dev environment takes > 1 day – More than ½ of the sprint time! • Developers spent too much time on setup • Always needed physical server for testing

Solution: Vagrant Boxes Provisioning 2 virtual machines... • ...each with an extended LAMP stack*) • ...with 4 different projects takes less than 15 minutes *) including RabbitMQ, Solr, Git, Composer, tons of PHP modules...

Technological Stack VirtualBox Free open source virtualization tool Chef Automation tool for Configuration Management Vagrant “Remote control” for VirtualBox

What is Vagrant? • Building tool for portable work environments • Tool for distributing work environments • Written in Ruby • Open Source • Build upon well-established tools

Vagrant Components • Vagrant Box • Vagrantfile • Provisioners • Providers

Vagrant Boxes • Pre-installed base images • Used as base layer for all further provisioning • Many different boxes available online:

The Vagrantfile • Marks root directory of Vagrant project • Describes what Vagrant box to use • Describes settings of box (e.g. network) • Triggers the provisioning of box (using Chef)

Provisioners • Configures your Vagrant box by – Installing packages and software – Configuration and starting of services • Multiple provisioners available • Run once the box is booted

Providers • Describe in which virtualization environment to provision your machines • Multiple providers available – VirtualBox – VMWare – Amazon AWS

What is Chef? • Configuration Management automation tool • Written in Ruby • „Code your desired system state“ • Put system state into version control • Relies on a client / server architecture – Or use chef solo without a server

Chef Architecture

Chef Architecture

Using chef-solo • mount cookbooks directory into your box config.vm.synced_folder "./chef", "/var/chef" config.vm.synced_folder "./home", "/var/ vagrant-home" • run chef-solo in your box config.vm.provision :shell do |s| s.inline = "sudo chef-solo -c /var/chef/ solo.rb -j /var/vagrant-home/config.json" end

The solo.rb File • Define some paths: file_cache_path "/var/chef-cache" cookbook_path ["/var/chef/cookbooks”] data_bag_path "/var/chef/data_bags" role_path "/var/chef/roles"

The config.json File • Define cookbook runlist: {"run_list" : ["recipe[cookbook_name]"]} • Further configuration in config.json overwrites defaults in cookbooks node['key1']['key2']

Chef Provisioning Alternatives • Different ways for Chef provisioning – Mounting Cookbooks and use chef-solo – Copy Cookbooks into box and use chef-solo – Use Chef client in box and Chef server

Overview 2 Chef Cookbooks /home/vagrant/chef mounted/copied into OR taken from chef server Vagrant Box 4 uses cookbooks triggers chef 3 remote controlls 1

Provisioning Activity Provisioning Activity Provision Projects Configuration Management Booting Box Set up Box Chef, Git Vagrant, Chef Vagrant, VirtualBox Vagrant

Set Up Box 1. Install VirtualBox & Vagrant 2. Add a box vagrant box add box_name http://box_url 1. Create a first Vagrantfile mkdir vagrant cd vagrant vagrant init

Set up & Boot the Box 4. Use the box in your Vagrantfile Vagrant.configure("2") do |config| = "box_name" end 5. Boot your machine vagrant up 6. ssh into your machine vagrant ssh

Versioning and Distribution • Remember: „Everything should be put into Version Control!“ • Vagrantfile can easily be put into any VCS • Distributing an environment is as easy as git clone cd vagrant vagrant up

Daily Vagrant Usage • Start the box vagrant up • Stop the box Vagrant halt • Suspend the box vagrant suspend • Resume the box vagrant resume

Multiple Boxes for Multiple Projects PROs - Easy to set up - Can have different systems in a box Vagrant Box Project 1 Vagrant Box Project 2 CONs - Have multiple Boxes running at the same time consumes resources Vagrant Box Project 3

Multiple Projects in one Box PROs - Less ressources required Vagrant Box Project 1 Project 2 Project 3 CONs - No easy way to set up - Longer provisioning time - Bigger boxes

Identical Copy of Server server is provisioned using Chef Client Chef Client Chef Server Chef Cookbooks mounted/copied into OR taken from chef server provisioned using same cookboks Identical Copy of Server as Vagrant Box

Vagrant & Chef for CI / CD • Set up the whole deployment chain locally • Use tools like Jenkins inside your boxes • Provision the projects on Jenkins with Chef

DevOps • Tools like Vagrant and Chef bring Developers and system operators closer together • Learn from each other • Use each other‘s tools for problem solving

Summary • Vagrant is a great tool for portable boxes • Chef can help you manage your configuration • „Infrastructure as Code“ • Same environment on dev and live system • DevOps brings devs and admins together

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

FOSSASIA 2014: Reproducible and portable work environments ...

... Phnom Penh, Cambodia 28 Feb.-2 Mar 2014 ... portable work environments with Vagrant ... Vagrant and Chef ...
Read more

Vagrant And Chef | LinkedIn

View 482 Vagrant And Chef posts, presentations, experts, and more. Get the professional knowledge you need on LinkedIn. LinkedIn Home What is LinkedIn?
Read more

FOSSASIA 2014: Reproducible and portable work environments ...

... Phnom Penh, Cambodia 28 Feb.-2 Mar 2014 Phnom ... Reproducible and portable work environments with Vagrant and Chef, ...
Read more

FOSSASIA | 28 Feb.-2 Mar 2014
Phnom Penh, Cambodia

Reproducible and portable work environments with Vagrant and Chef, Michael Knoll, 55 min. ... FOSSASIA 2014 Agenda. Friday Opening and Keynotes; Schedule ...
Read more

Vagrant by HashiCorp

Vagrant enables users to create and configure lightweight, reproducible, and portable development environments. Vagrant by Hashicorp. Toggle navigation ...
Read more

Using Vagrant and Chef to Manage your development environment

Vagrant and Chef help ensure that everyone in your team, ... 2014 at 10:23 am It’s great that ms open tech is getting involved in chef community, ...
Read more

DevOps: Vagrant with Chef-Server - Insights on Log ...

5 comments on “ DevOps: Vagrant with Chef-Server ” ... 2014 at 10:11 am. Hi, I understand that Vagrant cannot spin up virtual machines on a remote machine.
Read more

Vagrant (Software) – Wikipedia

Vagrant; Vagrant startet eine ... Ansible, CFEngine, Chef Solo, Chef Client, Docker, Puppet Apply ... Seit Version 1.7 vom Dezember 2014 ist Deployment ...
Read more