vagrant and chef on fossasia 2014

Post on 06-May-2015

893 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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 http://de.slideshare.net/Sebobo/continuous-delivery-with-open-source-tools as well!

TRANSCRIPT

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

I am NO

Vagrant /

Chef

Guru!!!

Outline

• Motivation

• Introducing Vagrant & Chef

• Vagrant „Hands-On“

• Advanced usage

Motivation

Motivation

• Internal project

• Estimated development time ~2

years

• Approx. 15 developers

• 2-day sprints, every second week

• 4 developers per sprint

MotivationObservations

• 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 BoxesProvisioning 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 StackVirtualBoxFree open source virtualization tool

ChefAutomation tool for Configuration Management

Vagrant“Remote control” for VirtualBox

Introducing

Vagrant

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

Introducing

Chef

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

Provisionin

g with Chef

Using chef-solo

• mount cookbooks directory into your

box

• run chef-solo in your box

config.vm.synced_folder "./chef", "/var/chef"config.vm.synced_folder "./home", "/var/\ vagrant-home"

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:

• Further configuration in config.json

overwrites defaults in cookbooks

{"run_list" : ["recipe[cookbook_name]"]}

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

1

2

3

4

“Hands-on”

Provisioning ActivityP

rovis

ion

ing

A

cti

vit

y

Set up Box

Booting Box

Configuration Management

Provision Projects

Vagrant

Vagrant,VirtualBox

Vagrant,Chef

Chef,Git

Set Up Box

1. Install VirtualBox & Vagrant

2. Add a box

3. Create a first Vagrantfilemkdir vagrantcd vagrantvagrant init

vagrant box add box_name http://box_url

Set up & Boot the Box

4. Use the box in your Vagrantfile

5. Boot your machine

6. ssh into your machine

Vagrant.configure("2") do |config|config.vm.box = "box_name"

end

vagrant up

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 asgit clone git@github.com:my/vagrant.gitcd vagrantvagrant up

Daily Vagrant Usage

• Start the box

• Stop the box

• Suspend the box

• Resume the box

vagrant up

Vagrant halt

vagrant suspend

vagrant resume

Advanced

Usage

PROs- Easy to set up- Can have different systems

in a box

CONs- Have multiple Boxes running

at the same time consumes resources

Multiple Boxes for Multiple Projects

Multiple Projects in one Box

PROs- Less ressources required

CONs- No easy way to set up- Longer provisioning time- Bigger boxes

Identical Copy of Server

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

top related