SlideShare une entreprise Scribd logo
1  sur  79
Télécharger pour lire hors ligne
JAMIE WINSOR| SOFTWARE ENGINEER
THE BERKSHELF WAY
LEAGUE OF LEGENDS
ME IN
2009
200
9
201
0
201
1
201
2
200
9
201
0
201
1
201
2
MY CHEF
REPO IN
2010
200
9
201
0
201
1
201
2
AND IN
2011…
200
9
201
0
201
1
201
2
…FROM
2012
AND ON
WHAT’S
BERKSH
ELF?
‣  A COMMAND LINE
TOOL
‣  A SOURCE CODE
MANAGEMENT TOOL
▾  Similar to ‘Mix’, ‘Go’, or
‘Leiningen’
‣  A PACKAGE MANAGER
▾  Similar to ‘Gem’, ‘Apt’, or ‘Yum’
‣  REPLACES PORTIONS
OF KNIFE
▾  Cookbook Generator, Cookbook
Uploader, Cookbook Downloader
WHY IS IT CALLED BERKSHELF?
INTRO TO
COOKBOOKS:60
COOKBOOKS ARE FED INTO CHEF
NGINX
COOKBOO
K
1.2
.3 Chef-Client /
Chef-Solo
RECIPES GO IN COOKBOOKS
NGINX
COOKBOO
K
1.2
.3
RECI
PE
RECI
PE
RECI
PE
RECIPES CONTAIN RESOURCE
COLLECTIONS
DEFAU
LT
PACKAGE NGINX
SERVICE NGINX
REPO
YUM_REPOSI
TORY
NGINX
YUM_KEY NGINX
NGINX
COOKBOO
K
1.2
.3
EXAMPLE RESOURCE
1
2
3
package “nginx” do
action :install
end
PACKAGE NGINX
INTRO TO
BERKSHELF5min
INSTALL BERKSHELF
$ gem install berkshelf 	
Successfully installed berkshelf-1.4.0	
1 gem installed
CREATE A NEW COOKBOOK
$ berks cookbook myface	
create myface/files/default	
create myface/templates/default	
create myface/attributes	
create myface/definitions	
create myface/libraries	
create myface/providers	
create myface/recipes	
create myface/resources	
create myface/recipes/default.rb	
create myface/metadata.rb	
create myface/LICENSE	
create myface/README.md	
create myface/Berksfile	
create myface/chefignore	
create myface/.gitignore	
run git init from "./myface"	
create myface/Gemfile	
create myface/Vagrantfile	
Using myface (0.1.0) at path: '/Users/reset/code/riot-cookbooks/myface'
CONVERT AN EXISTING COOKBOOK
$ berks init 	
create Berksfile	
create chefignore	
create .gitignore	
run git init from "."	
create Gemfile	
create Vagrantfile	
Using old_cookbook (0.1.0) at path: '/Users/reset/code/riot-cookbooks/old_cookbook'	
Successfully initialized
STUCK? ASK FOR HELP!
$ berks cookbook –h	
	
Usage:	
berks cookbook NAME	
	
Options:	
[--foodcritic] # Creates a Thorfile with Foodcritic support to lint test your cookbook	
[--chef-minitest] # Creates chef-minitest support files and directories, adds minitest-handler …	
[--scmversion] # Creates a Thorfile with SCMVersion support to manage versions for continuous
integration	
-L, [--license=LICENSE] # License for cookbook (apachev2, gplv2, gplv3, mit, reserved)	
# Default: reserved	
-m, [--maintainer=MAINTAINER] # Name of cookbook maintainer	
-e, [--maintainer-email=MAINTAINER_EMAIL] # Email address of cookbook maintainer	
[--no-bundler] # Skips generation of a Gemfile and other Bundler specific support	
[--skip-vagrant] # Skips adding a Vagrantfile and adding supporting gems to the Gemfile	
[--skip-git] # Skips adding a .gitignore and running git init in the cookbook directory	
-c, [--config=PATH] # Path to Berkshelf configuration to use.	
-F, [--format=FORMAT] # Output format to use.	
# Default: human	
-q, [--quiet] # Silence all informational output.	
-d, [--debug] # Output debug information	
	
Create a skeleton for a new cookbook
A COMPLETE EXAMPLE
CHEF-
SERVE
RCOOKBOO
K
1.2
.3
"## Berksfile	
"## CHANGELOG.md	
"## CONTRIBUTING.md	
"## Gemfile	
"## LICENSE	
"## README.md	
"## Thorfile	
"## Vagrantfile	
"## attributes	
$   &## default.rb	
"## chefignore	
"## libraries	
$   "## dev_helper.rb	
$   &## omnitruck_client.rb	
"## metadata.rb	
"## recipes	
$   "## default.rb	
$   &## dev.rb	
&## templates	
&## default	
&## chef-server.rb.erb	
Berksfile	
	
	
	
	
	
	
	
	
	
	
	
	
	
metadata.rb
METADATA IS IMPORTANT
COOKB
OOK
COOKB
OOK
METADATA IS IMPORTANT
CHEF-
SERVE
R
THE NAME OF THE
COOKBOOK
COOKB
OOK
CHEF-
SERVE
R
METADATA IS IMPORTANT
V2.0.0 THE VERSION OF THE
COOKBOOK
FOLLOW SEMVER: HTTP://SEMVER.ORG/
METADATA IS IMPORTANT
COOKBO
OK
YUM
V1.2.3
COOKBO
OK
CHEF-
SERVER
V1.2.3
COOKBO
OK
APT
V1.2.3
Red Hat CentOS Ubuntu
SET YOUR SUPPORTED PLATFORMS
CentOS Ubuntu
Red Hat
METADATA IS IMPORTANT
COOKBO
OK
YUM
V1.2.3
SET WHAT COOKBOOKS YOU DEPEND ON
COOKBO
OK
CHEF-
SERVER
V1.2.3
COOKBO
OK
APT
V1.2.3
SUPPORTED
PLATFORMS
SUPPORTED
PLATFORMS
SUPPORTED
PLATFORMS
CHEF-SERVER COOKBOOK’S METADATA
name "chef-server"	
maintainer "Opscode, Inc."	
maintainer_email "cookbooks@opscode.com"	
license "Apache 2.0"	
description "Installs and configures Chef Server"	
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))	
version "2.0.0"	
	
depends "apt", ">= 1.7.0"	
depends "yum", ">= 0.5.0"	
	
%w{ ubuntu redhat centos fedora amazon scientific oracle }.each do |os|	
supports os	
end
IT STARTS WITH A BERKSFILE
"## Berksfile	
"## CHANGELOG.md	
"## CONTRIBUTING.md	
"## Gemfile	
"## LICENSE	
"## README.md	
"## Thorfile	
"## Vagrantfile	
"## attributes	
$   &## default.rb	
"## chefignore	
"## libraries	
$   "## dev_helper.rb	
$   &## omnitruck_client.rb	
"## metadata.rb	
"## recipes	
$   "## default.rb	
$   &## dev.rb	
&## templates	
&## default	
&## chef-server.rb.erb	
Berksfile	
	
	
	
	
	
	
	
	
	
	
	
	
	
site :opscode	
	
metadata	
	
group :dev do	
cookbook 'git'	
end	
Berksfile	
  
INSTALLING COOKBOOKS
Using chef-server (2.0.0) at path: '/Users/reset/code/riot-cookbooks/chef-server'	
Installing git (2.5.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
Installing apt (1.9.2) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
Installing yum (2.2.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
Installing dmg (1.1.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
Installing build-essential (1.4.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
Installing windows (1.8.8) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
Installing chef_handler (1.1.4) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
Installing runit (1.1.2) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'	
$ berks install
INSTALLED TO WHERE?
$ ls ~/.berkshelf/cookbooks	
	
apache2-1.6.0 chef_handler-1.1.4 known_host-0.1.3 nginx-1.3.0 riot_chef-client-2.0.7 tsf4g-0.0.14	
apt-1.9.0 couchdb-2.4.0 liquibase-0.0.1 not_system_ruby-0.1.7 riot_coherence-0.10.12 ucspi-tcp-1.0.0	
ark-0.0.11 cron-1.0.4 logrotate-0.8.2 ntp-1.1.8 riot_ejabberd-0.0.152 ulimit-0.1.3	
artifact-0.10.10 daemontools-1.0.0 logrotate-1.1.0 ohai-1.1.6 riot_ejabberd-0.0.188 users-1.1.4	
artifact-0.10.2 database-1.3.12 lvm-0.8.6 openssl-1.0.0 riot_geoip-0.1.0 vim-1.0.2	
artifact-1.2.0 database-1.3.4 magic_shell-0.2.0 postgresql-1.0.0 riot_java-0.1.4 windows-1.8.2	
artifact-1.3.1 dmg-1.1.0 man-0.7.0 pvpnet_core-2.3.123 riot_java-0.1.8 xfs-1.0.0	
artifact-1.4.0 editor-0.2.0 mysql-1.2.4 pvpnet_core-2.3.131 riot_mysql-2.0.1 xml-1.1.2	
aws-0.100.0 erlang-1.2.0 mysql-1.3.0 python-1.2.2 riot_rtview-1.0.1 yum-2.1.0	
bluepill-1.1.0 gecode-2.0.0 mysql-2.1.0 rbenv-1.3.2 riot_team-0.9.41 zlib-2.0.0	
build-essential-1.1.2 git-2.2.0 mysql-2.1.2 riot_activemq-0.9.28 riot_tomcat-1.0.18	
build-essential-1.3.4 hornetq-0.0.27 networking_basic-0.0.5 riot_base-2.7.32 runit-0.16.2	
chef-client-2.1.4 java-1.5.0 nexus-1.1.0 riot_base-2.7.37 runit-1.0.4	
chef-server-1.1.0 java-1.9.0 nginx-1.2.0 riot_base-2.7.49 sudo-1.2.0
UPLOADING COOKBOOKS
Using chef-server (2.0.0) at path: '/Users/reset/code/riot-cookbooks/chef-server'	
Using git (2.2.0)	
Using apt (1.9.0)	
Using yum (2.1.0)	
Using dmg (1.1.0)	
Using build-essential (1.3.4)	
Using windows (1.8.2)	
Using chef_handler (1.1.4)	
Using runit (0.16.2)	
Uploading chef-server (2.0.0) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading git (2.2.0) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading apt (1.9.0) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading yum (2.1.0) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading dmg (1.1.0) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading build-essential (1.3.4) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading windows (1.8.2) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading chef_handler (1.1.4) to: 'https://api.opscode.com:443/organizations/vialstudios'	
Uploading runit (0.16.2) to: 'https://api.opscode.com:443/organizations/vialstudios'	
$ berks upload
THEBERKSHEL
F WAY
WORK IN
VERTICALS
FROM THE
OUTSIDE-INTHE
BERKSHE
LF
WAY
CREATE A
COOKBOOK
FOR YOUR
APPLICATION
COOK
BOOK
SERVICES ARE MADE UP OF
COMPONENTS
1  app servers
2  cache servers
3  database servers
4  background workers
5  load balancers
6  etc
APPLY A DESIGN PATTERN
APPLICATION
COOKBOOK
PATTERN
COOK
BOOK
COOKB
OOK
MYFA
CE
COMPONENTS OF MYFACE
1  load balancer
2  application server proxy
3  caching service
4  application server
5  background worker
6  database server
MAP
COMPONEN
TS
TO RECIPES
RECI
PE
RECI
PE
RECI
PE
RECI
PE
RECIPES OF MYFACE
myface::default
myface::load_balancer
myface::app_proxy
myface::app_server
myface::cache_server
myface::worker_pool
myface::database_server
CRACK OPEN
MYFACE::DATABASE_SERVER
node.set[:mysql][:port] = 3309
node.set[:mysql][:tunable][:max_connections] = 1000
include_recipe "myface::_common_system"
include_recipe "mysql::server"
PUBLIC/PRIVATE RECIPES
PUBLIC RECIPE
‣  What you put in the
run_list of a node
‣  Documented in the
README
‣  Documented in the
metadata
PRIVATE RECIPE
‣  Not exposed to end user
‣  Should never be put in
the run_list of a node
‣  Always included into
other recipes
‣  Documented in the code
for other developers
WHAT’S IN
MYFACE::_COMMON_SYSTEM?
include_recipe "ntp::default"
# . . . MAYBE SETUP SOME USERS . . .
# . . . MAYBE SETUP SOME ADDITIONAL REPOS . . .
WORK IN
VERTICALS
FROM THE
OUTSIDE-INFAVOR DATA-
DRIVEN
COOKBOOKS
THE
BERKSHE
LF
WAY
COOK
BOOK
CHANGE A
COOKBOOK'S
BEHAVIOR AT
RUNTIME
TUNABLES OF MYFACE
1  listen on a different port or bind address
2  set memory usage of workers
3  any app config
4  set services to started or stopped states
3 WAYS TO CONFIGURE
ATTRIBUTES
DATA BAGS
ENCRYPTED DATA BAGS
FAVOR CONFIGURING WITH ATTRIBUTES
‣  Path of least resistance for cookbook consumers
‣  Provide sensible defaults in the Attribute files
▾  Consider creating an attribute file for each recipe
‣  Can configure your application on an environment
level
WHEN TO USE DATA BAGS
USERS
GROUPS
YUM/APT
THINGS CONFIGURED BY "BASE"
COOKBOOK (IF YOU HAVE ONE)
ORGANIZATION LEVEL
CONFIGURATIONS
USE ENCRYPTED DATA BAGS
WHEN STORING SENSITIVE
DATA
WORK IN
VERTICALS
FROM THE
OUTSIDE-INFAVOR DATA-
DRIVEN
COOKBOOKS
WRITE WELL-
ENCAPSULATED
COOKBOOKS
THE
BERKSHE
LF
WAY
NOT VERSIONED
CAN’T BE PACKAGED / DISTRIBUTED
NOT NAMESPACED
STAHP USING ROLES
THEY ARE ORGANIZATION LEVEL DATA
ADDITIONAL SETUP COMPLEXITY FOR
THE USER
USE DATA BAGS WHERE THEY MAKE
SENSE
DO YOU NEED TO STORE
ORGANIZATION-WIDE DATA?
DO YOU NEED TO STORE
SENSITIVE DATA?
Use one
Use an encrypted one
USE DATA BAGS WHERE THEY MAKE
SENSE
MOST IMPORTANTLY…
VALIDATE YOUR DATA
BAGS!
5  include_recipe "myface::app_proxy"
6  include_recipe "myface::app_server"
7  include_recipe "myface::cache_server"
8  include_recipe "myface::worker_pool"
9  include_recipe "myface::database"
DEFAULTS RECIPE IS SPECIAL
LIGHTWEIGHT RESOURCES AND
PROVIDERS (LWRP)
LIBRARIES
DEFINITIONS
COOKBOOKS ARE MORE THAN RECIPES
COOKBOOKS DON’T
NEED TO HAVE RECIPES
COOK
BOOK LIBRARY
COOKBOOK
PATTERN
LIBRARY COOKBOOKS
‣  Might have recipes, might not
‣  Contain LWRPs, Definitions, or Libraries useful to
other cookbook authors
‣  YUM Cookbook is a perfect example
▾  Contains a yum_key LWRP for adding repository keys to yum
▾  Contains a yum_repository LWRP for adding repositories to yum
▾  Contains some recipes to configure commonly used public yum
repositories on your machine
COOK
BOOK WRAPPER
COOKBOOK
PATTERN
WRAPPER COOKBOOKS
‣  Super lightweight
‣  Contain recipes
‣  Contain attribute overrides
‣  Riot-Java is a perfect example
▾  Contains a Oracle Java 6 recipe
▾  Contains a Oracle Java 7 recipe
▾  An abstraction on top of the Java cookbook for Riot engineers
▾  Overrides the default “install flavor” for Java
▾  Overrides the default location of the Java artifacts to an internal
location
▾  NOT A FORK OF THE JAVA COOKBOOK
WORK IN
VERTICALS
FROM THE
OUTSIDE-INFAVOR DATA-
DRIVEN
COOKBOOKS
WRITE WELL-
ENCAPSULATED
COOKBOOKS
HAVE SHORT
ITERATION
LOOPS
THE
BERKSHE
LF
WAY
OLD WORKFLOW
EDIT	
  
COOKBOOK	
  
UPLOAD	
  
COOKBOOK	
  
PROVISION	
  
MACHINE	
  
BOOTSTRAP	
  
MACHINE	
  
RUN	
  CHEF	
  
CLIENT	
  
SSH	
  AND	
  
VALIDATE	
  
5-30
minutes
NEW WORKFLOW
EDIT	
  
COOKBOOK	
  
VAGRANT	
  UP	
  /	
  
VAGRANT	
  
PROVISION	
  
TEST	
  /	
  SSH	
  
AND	
  VALIDATE	
  
5	
  seconds	
  –	
  1	
  minute	
  
BERKSHELF VAGRANT PLUG-IN
$ vagrant plugin install vagrant-berkshelf	
	
Installing the 'vagrant-berkshelf' plugin. This can take a few minutes...	
Installed the plugin 'vagrant-berkshelf (1.2.0)'!
Bringing machine 'default' up with 'virtualbox' provider...	
[Berkshelf] Updating Vagrant's berkshelf: '/Users/reset/.berkshelf/vagrant/berkshelf-20130424-40671-t43soz’	
Generating chef JSON and uploading...	
Running chef-solo...	
[2013-04-25T03:01:31+00:00] INFO: *** Chef 10.14.2 ***	
[2013-04-25T03:01:32+00:00] INFO: Setting the run_list to ["recipe[minitest-handler::default]", "recipe[myface::default]"] from JSON	
[2013-04-25T03:01:32+00:00] INFO: Starting Chef Run for myface-berkshelf	
#### CHEF RUN GOES HERE ####	
[2013-04-25T03:02:10+00:00] INFO: Chef Run complete in 38.330025825 seconds	
[2013-04-25T03:02:10+00:00] INFO: Running report handlers	
Run options: -v --seed 41224	
	
# Running tests:	
	
minitesthandler::default#test_0001_runs_no_tests = 0.00 s = .	
myface::default#test_0001_runs_no_tests_by_default = 	
0.00 s = .	
	
	
Finished tests in 0.002425s, 824.7576 tests/s, 0.0000 assertions/s.	
	
	
2 tests, 0 assertions, 0 failures, 0 errors, 0 skips	
[2013-04-25T03:02:10+00:00] INFO: Report handlers complete	
PROVISION NEW ENVIRONMENT IN
MINUTES
$ vagrant up	
1 minute 20 secon
Running chef-solo...	
[2013-04-25T03:01:31+00:00] INFO: *** Chef 10.14.2 ***	
[2013-04-25T03:01:32+00:00] INFO: Setting the run_list to ["recipe[minitest-handler::default]", "recipe[myface::default]"] from JSON	
[2013-04-25T03:01:32+00:00] INFO: Starting Chef Run for myface-berkshelf	
#### CHEF RUN GOES HERE ####	
[2013-04-25T03:02:10+00:00] INFO: Chef Run complete in 0.520326234 seconds	
[2013-04-25T03:02:10+00:00] INFO: Running report handlers	
Run options: -v --seed 41224	
	
# Running tests:	
	
minitesthandler::default#test_0001_runs_no_tests = 0.00 s = .	
myface::default#test_0001_runs_no_tests_by_default = 	
0.00 s = .	
	
	
Finished tests in 0.002425s, 824.7576 tests/s, 0.0000 assertions/s.	
	
	
2 tests, 0 assertions, 0 failures, 0 errors, 0 skips	
[2013-04-25T03:02:10+00:00] INFO: Report handlers complete	
CONVERGE IN SECONDS
$ vagrant provision	
7 seconds
WORK IN
VERTICALS
FROM THE
OUTSIDEFAVOR DATA-
DRIVEN
COOKBOOKS
WRITE WELL-
ENCAPSULATED
COOKBOOKS
HAVE SHORT
ITERATION
LOOPS
THE
BERKSHE
LF
WAY
LEARN
MORE AT
BERKSHE
LF.COM
CONTRIBUTE
GITHUB.COM/
RIOTGAMES/
BERKSHELF
HOW CAN YOU HELP?
OR JOIN US
WWW.RIOTGAMES.COM/CAREERS
CALL ME
MAYBE?Jamie Winsor
@resetexistence
github.com/reset

Contenu connexe

Tendances

Testable Infrastructure with Chef, Test Kitchen, and Docker
Testable Infrastructure with Chef, Test Kitchen, and DockerTestable Infrastructure with Chef, Test Kitchen, and Docker
Testable Infrastructure with Chef, Test Kitchen, and DockerMandi Walls
 
Testing for infra code using test-kitchen,docker,chef
Testing for infra code using  test-kitchen,docker,chefTesting for infra code using  test-kitchen,docker,chef
Testing for infra code using test-kitchen,docker,chefkamalikamj
 
Test-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefTest-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefMichael Lihs
 
Kickstarter - Chef Opswork
Kickstarter - Chef OpsworkKickstarter - Chef Opswork
Kickstarter - Chef OpsworkHamza Waqas
 
Deploying a Chef Server
Deploying a Chef ServerDeploying a Chef Server
Deploying a Chef ServerHart Hoover
 
San Antonio Chef Users Meetup, Jun 2014 - Chef Metal
San Antonio Chef Users Meetup, Jun 2014 - Chef MetalSan Antonio Chef Users Meetup, Jun 2014 - Chef Metal
San Antonio Chef Users Meetup, Jun 2014 - Chef MetalHart Hoover
 
Introduction To Continuous Compliance & Remediation
Introduction To Continuous Compliance & RemediationIntroduction To Continuous Compliance & Remediation
Introduction To Continuous Compliance & RemediationNicole Johnson
 
Continous delivery with Jenkins and Chef
Continous delivery with Jenkins and ChefContinous delivery with Jenkins and Chef
Continous delivery with Jenkins and Chefdefrag2
 
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsJUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsCloudBees
 
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...CloudBees
 
Using Chef and Vagrant at Gengo
Using Chef and Vagrant at GengoUsing Chef and Vagrant at Gengo
Using Chef and Vagrant at GengoGengo
 
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...CloudBees
 
Vagrant and Chef on FOSSASIA 2014
Vagrant and Chef on FOSSASIA 2014Vagrant and Chef on FOSSASIA 2014
Vagrant and Chef on FOSSASIA 2014Michael Lihs
 
Automate your Development Environment with Vagrant & Chef
Automate your Development Environment with Vagrant & ChefAutomate your Development Environment with Vagrant & Chef
Automate your Development Environment with Vagrant & Chef Michael Lihs
 
Tips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefTips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefChef Software, Inc.
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?CloudBees
 

Tendances (20)

Testable Infrastructure with Chef, Test Kitchen, and Docker
Testable Infrastructure with Chef, Test Kitchen, and DockerTestable Infrastructure with Chef, Test Kitchen, and Docker
Testable Infrastructure with Chef, Test Kitchen, and Docker
 
Testing for infra code using test-kitchen,docker,chef
Testing for infra code using  test-kitchen,docker,chefTesting for infra code using  test-kitchen,docker,chef
Testing for infra code using test-kitchen,docker,chef
 
Test-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefTest-Driven Infrastructure with Chef
Test-Driven Infrastructure with Chef
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 
Kickstarter - Chef Opswork
Kickstarter - Chef OpsworkKickstarter - Chef Opswork
Kickstarter - Chef Opswork
 
Deploying a Chef Server
Deploying a Chef ServerDeploying a Chef Server
Deploying a Chef Server
 
San Antonio Chef Users Meetup, Jun 2014 - Chef Metal
San Antonio Chef Users Meetup, Jun 2014 - Chef MetalSan Antonio Chef Users Meetup, Jun 2014 - Chef Metal
San Antonio Chef Users Meetup, Jun 2014 - Chef Metal
 
JUC 2015 Pipeline Scaling
JUC 2015 Pipeline ScalingJUC 2015 Pipeline Scaling
JUC 2015 Pipeline Scaling
 
Introduction To Continuous Compliance & Remediation
Introduction To Continuous Compliance & RemediationIntroduction To Continuous Compliance & Remediation
Introduction To Continuous Compliance & Remediation
 
Docker
DockerDocker
Docker
 
Continous delivery with Jenkins and Chef
Continous delivery with Jenkins and ChefContinous delivery with Jenkins and Chef
Continous delivery with Jenkins and Chef
 
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsJUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
 
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
JUC Europe 2015: The Famous Cows of Cambridge: A Non-Standard Use Case for Je...
 
Using Chef and Vagrant at Gengo
Using Chef and Vagrant at GengoUsing Chef and Vagrant at Gengo
Using Chef and Vagrant at Gengo
 
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
 
Vagrant and Chef on FOSSASIA 2014
Vagrant and Chef on FOSSASIA 2014Vagrant and Chef on FOSSASIA 2014
Vagrant and Chef on FOSSASIA 2014
 
Automate your Development Environment with Vagrant & Chef
Automate your Development Environment with Vagrant & ChefAutomate your Development Environment with Vagrant & Chef
Automate your Development Environment with Vagrant & Chef
 
Tips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefTips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with Chef
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?
 

Similaire à The Berkshelf Way

Cookbook testing with KitcenCI and Serverrspec
Cookbook testing with KitcenCI and ServerrspecCookbook testing with KitcenCI and Serverrspec
Cookbook testing with KitcenCI and ServerrspecDaniel Paulus
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode ChefSri Ram
 
Modern Web Application Development Workflow - web2day 2014
Modern Web Application Development Workflow - web2day 2014Modern Web Application Development Workflow - web2day 2014
Modern Web Application Development Workflow - web2day 2014Stéphane Bégaudeau
 
Cook Infrastructure with chef -- Justeat.IN
Cook Infrastructure with chef  -- Justeat.INCook Infrastructure with chef  -- Justeat.IN
Cook Infrastructure with chef -- Justeat.INRajesh Hegde
 
Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2Sylvain Tissot
 
Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...
Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...
Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...Amazon Web Services
 
Testing Your Automation Code (Vagrant Version)
Testing Your Automation Code (Vagrant Version)Testing Your Automation Code (Vagrant Version)
Testing Your Automation Code (Vagrant Version)Mischa Taylor
 
AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)
AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)
AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)Amazon Web Services
 
Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chefLeanDog
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)True-Vision
 
Linecook - A Chef Alternative
Linecook - A Chef AlternativeLinecook - A Chef Alternative
Linecook - A Chef Alternativethinkerbot
 
Making TDD [Somewhat] Bearable on OpenStack
Making TDD [Somewhat] Bearable on OpenStackMaking TDD [Somewhat] Bearable on OpenStack
Making TDD [Somewhat] Bearable on OpenStackHart Hoover
 
Becoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola PaolucciBecoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola PaolucciAtlassian
 
Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Chef
 
Azure handsonlab
Azure handsonlabAzure handsonlab
Azure handsonlabChef
 
chef loves windows
chef loves windowschef loves windows
chef loves windowsMat Schaffer
 
Chef or how to make computers do the work for us
Chef or how to make computers do the work for usChef or how to make computers do the work for us
Chef or how to make computers do the work for ussickill
 
What’s New in Docker - Victor Vieux, Docker
What’s New in Docker - Victor Vieux, DockerWhat’s New in Docker - Victor Vieux, Docker
What’s New in Docker - Victor Vieux, DockerDocker, Inc.
 

Similaire à The Berkshelf Way (20)

Chef introduction
Chef introductionChef introduction
Chef introduction
 
Cookbook testing with KitcenCI and Serverrspec
Cookbook testing with KitcenCI and ServerrspecCookbook testing with KitcenCI and Serverrspec
Cookbook testing with KitcenCI and Serverrspec
 
Cloud Automation with Opscode Chef
Cloud Automation with Opscode ChefCloud Automation with Opscode Chef
Cloud Automation with Opscode Chef
 
Modern Web Application Development Workflow - web2day 2014
Modern Web Application Development Workflow - web2day 2014Modern Web Application Development Workflow - web2day 2014
Modern Web Application Development Workflow - web2day 2014
 
Cook Infrastructure with chef -- Justeat.IN
Cook Infrastructure with chef  -- Justeat.INCook Infrastructure with chef  -- Justeat.IN
Cook Infrastructure with chef -- Justeat.IN
 
Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2Testing your-automation-code (vagrant version) v0.2
Testing your-automation-code (vagrant version) v0.2
 
Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...
Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...
Deploying the 'League of Legends' Data Pipeline with Chef (ARC205) | AWS re:I...
 
Automate or Die
Automate or DieAutomate or Die
Automate or Die
 
Testing Your Automation Code (Vagrant Version)
Testing Your Automation Code (Vagrant Version)Testing Your Automation Code (Vagrant Version)
Testing Your Automation Code (Vagrant Version)
 
AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)
AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)
AWS re:Invent 2016: Amazon ECR Deep Dive on Image Optimization (CON401)
 
Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chef
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)
 
Linecook - A Chef Alternative
Linecook - A Chef AlternativeLinecook - A Chef Alternative
Linecook - A Chef Alternative
 
Making TDD [Somewhat] Bearable on OpenStack
Making TDD [Somewhat] Bearable on OpenStackMaking TDD [Somewhat] Bearable on OpenStack
Making TDD [Somewhat] Bearable on OpenStack
 
Becoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola PaolucciBecoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola Paolucci
 
Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4
 
Azure handsonlab
Azure handsonlabAzure handsonlab
Azure handsonlab
 
chef loves windows
chef loves windowschef loves windows
chef loves windows
 
Chef or how to make computers do the work for us
Chef or how to make computers do the work for usChef or how to make computers do the work for us
Chef or how to make computers do the work for us
 
What’s New in Docker - Victor Vieux, Docker
What’s New in Docker - Victor Vieux, DockerWhat’s New in Docker - Victor Vieux, Docker
What’s New in Docker - Victor Vieux, Docker
 

Plus de Chef Software, Inc.

Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Software, Inc.
 
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Software, Inc.
 
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Software, Inc.
 
Chef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation SetupChef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation SetupChef Software, Inc.
 
Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Software, Inc.
 
Opscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with ChefOpscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with ChefChef Software, Inc.
 
Opscode Webinar: Cooking with Chef on Microsoft Windows
Opscode Webinar: Cooking with Chef on Microsoft WindowsOpscode Webinar: Cooking with Chef on Microsoft Windows
Opscode Webinar: Cooking with Chef on Microsoft WindowsChef Software, Inc.
 
Opscode Webinar: Automation for Education May 08-2013
Opscode Webinar: Automation for Education May 08-2013Opscode Webinar: Automation for Education May 08-2013
Opscode Webinar: Automation for Education May 08-2013Chef Software, Inc.
 
Utility HPC: Right Systems, Right Scale, Right Science
Utility HPC: Right Systems, Right Scale, Right ScienceUtility HPC: Right Systems, Right Scale, Right Science
Utility HPC: Right Systems, Right Scale, Right ScienceChef Software, Inc.
 
Using Kanban and Chef: A Case Study – Jeffrey Hulten
Using Kanban and Chef: A Case Study – Jeffrey HultenUsing Kanban and Chef: A Case Study – Jeffrey Hulten
Using Kanban and Chef: A Case Study – Jeffrey HultenChef Software, Inc.
 
SDN, Network Virtualization and the Software Defined Data Center – Brad Hedlund
SDN, Network Virtualization and the Software Defined Data Center – Brad HedlundSDN, Network Virtualization and the Software Defined Data Center – Brad Hedlund
SDN, Network Virtualization and the Software Defined Data Center – Brad HedlundChef Software, Inc.
 
ChefConf 2013 Keynote Session – Opscode – Adam Jacob
ChefConf 2013 Keynote Session – Opscode – Adam JacobChefConf 2013 Keynote Session – Opscode – Adam Jacob
ChefConf 2013 Keynote Session – Opscode – Adam JacobChef Software, Inc.
 
Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...
Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...
Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...Chef Software, Inc.
 
The InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo SchlossnagleThe InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo SchlossnagleChef Software, Inc.
 
Chef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK BoxChef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK BoxChef Software, Inc.
 
Push jobs: an orchestration building block for private Chef
Push jobs: an orchestration building block for private ChefPush jobs: an orchestration building block for private Chef
Push jobs: an orchestration building block for private ChefChef Software, Inc.
 
Multi-provider Vagrant and Chef: AWS, VMware, and more
Multi-provider Vagrant and Chef: AWS, VMware, and moreMulti-provider Vagrant and Chef: AWS, VMware, and more
Multi-provider Vagrant and Chef: AWS, VMware, and moreChef Software, Inc.
 
Welcome to the IT Industrial Revolution! Are you ready?
Welcome to the IT Industrial Revolution! Are you ready?Welcome to the IT Industrial Revolution! Are you ready?
Welcome to the IT Industrial Revolution! Are you ready?Chef Software, Inc.
 

Plus de Chef Software, Inc. (20)

Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
 
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
Chef Fundamentals Training Series Module 4: The Chef Client Run and Expanding...
 
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
 
Chef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation SetupChef Fundamentals Training Series Module 2: Workstation Setup
Chef Fundamentals Training Series Module 2: Workstation Setup
 
Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of Chef
 
Opscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with ChefOpscode Webinar: Managing Your VMware Infrastructure with Chef
Opscode Webinar: Managing Your VMware Infrastructure with Chef
 
Opscode Webinar: Cooking with Chef on Microsoft Windows
Opscode Webinar: Cooking with Chef on Microsoft WindowsOpscode Webinar: Cooking with Chef on Microsoft Windows
Opscode Webinar: Cooking with Chef on Microsoft Windows
 
Opscode tech festa july 2013
Opscode tech festa   july 2013Opscode tech festa   july 2013
Opscode tech festa july 2013
 
Opscode Webinar: Automation for Education May 08-2013
Opscode Webinar: Automation for Education May 08-2013Opscode Webinar: Automation for Education May 08-2013
Opscode Webinar: Automation for Education May 08-2013
 
Utility HPC: Right Systems, Right Scale, Right Science
Utility HPC: Right Systems, Right Scale, Right ScienceUtility HPC: Right Systems, Right Scale, Right Science
Utility HPC: Right Systems, Right Scale, Right Science
 
Using Kanban and Chef: A Case Study – Jeffrey Hulten
Using Kanban and Chef: A Case Study – Jeffrey HultenUsing Kanban and Chef: A Case Study – Jeffrey Hulten
Using Kanban and Chef: A Case Study – Jeffrey Hulten
 
SDN, Network Virtualization and the Software Defined Data Center – Brad Hedlund
SDN, Network Virtualization and the Software Defined Data Center – Brad HedlundSDN, Network Virtualization and the Software Defined Data Center – Brad Hedlund
SDN, Network Virtualization and the Software Defined Data Center – Brad Hedlund
 
ChefConf 2013 Keynote Session – Opscode – Adam Jacob
ChefConf 2013 Keynote Session – Opscode – Adam JacobChefConf 2013 Keynote Session – Opscode – Adam Jacob
ChefConf 2013 Keynote Session – Opscode – Adam Jacob
 
Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...
Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...
Using Chef and AppFirst to Automate Scale-out/Scale-down of Web Applications ...
 
The InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo SchlossnagleThe InstallShield of the 21st Century – Theo Schlossnagle
The InstallShield of the 21st Century – Theo Schlossnagle
 
Chef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK BoxChef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK Box
 
The unintended benefits of Chef
The unintended benefits of ChefThe unintended benefits of Chef
The unintended benefits of Chef
 
Push jobs: an orchestration building block for private Chef
Push jobs: an orchestration building block for private ChefPush jobs: an orchestration building block for private Chef
Push jobs: an orchestration building block for private Chef
 
Multi-provider Vagrant and Chef: AWS, VMware, and more
Multi-provider Vagrant and Chef: AWS, VMware, and moreMulti-provider Vagrant and Chef: AWS, VMware, and more
Multi-provider Vagrant and Chef: AWS, VMware, and more
 
Welcome to the IT Industrial Revolution! Are you ready?
Welcome to the IT Industrial Revolution! Are you ready?Welcome to the IT Industrial Revolution! Are you ready?
Welcome to the IT Industrial Revolution! Are you ready?
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Dernier (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

The Berkshelf Way

  • 1. JAMIE WINSOR| SOFTWARE ENGINEER THE BERKSHELF WAY
  • 3.
  • 4.
  • 5.
  • 10.
  • 11. WHAT’S BERKSH ELF? ‣  A COMMAND LINE TOOL ‣  A SOURCE CODE MANAGEMENT TOOL ▾  Similar to ‘Mix’, ‘Go’, or ‘Leiningen’ ‣  A PACKAGE MANAGER ▾  Similar to ‘Gem’, ‘Apt’, or ‘Yum’ ‣  REPLACES PORTIONS OF KNIFE ▾  Cookbook Generator, Cookbook Uploader, Cookbook Downloader
  • 12. WHY IS IT CALLED BERKSHELF?
  • 14. COOKBOOKS ARE FED INTO CHEF NGINX COOKBOO K 1.2 .3 Chef-Client / Chef-Solo
  • 15. RECIPES GO IN COOKBOOKS NGINX COOKBOO K 1.2 .3 RECI PE RECI PE RECI PE
  • 16. RECIPES CONTAIN RESOURCE COLLECTIONS DEFAU LT PACKAGE NGINX SERVICE NGINX REPO YUM_REPOSI TORY NGINX YUM_KEY NGINX NGINX COOKBOO K 1.2 .3
  • 17. EXAMPLE RESOURCE 1 2 3 package “nginx” do action :install end PACKAGE NGINX
  • 19. INSTALL BERKSHELF $ gem install berkshelf Successfully installed berkshelf-1.4.0 1 gem installed
  • 20. CREATE A NEW COOKBOOK $ berks cookbook myface create myface/files/default create myface/templates/default create myface/attributes create myface/definitions create myface/libraries create myface/providers create myface/recipes create myface/resources create myface/recipes/default.rb create myface/metadata.rb create myface/LICENSE create myface/README.md create myface/Berksfile create myface/chefignore create myface/.gitignore run git init from "./myface" create myface/Gemfile create myface/Vagrantfile Using myface (0.1.0) at path: '/Users/reset/code/riot-cookbooks/myface'
  • 21. CONVERT AN EXISTING COOKBOOK $ berks init create Berksfile create chefignore create .gitignore run git init from "." create Gemfile create Vagrantfile Using old_cookbook (0.1.0) at path: '/Users/reset/code/riot-cookbooks/old_cookbook' Successfully initialized
  • 22. STUCK? ASK FOR HELP! $ berks cookbook –h Usage: berks cookbook NAME Options: [--foodcritic] # Creates a Thorfile with Foodcritic support to lint test your cookbook [--chef-minitest] # Creates chef-minitest support files and directories, adds minitest-handler … [--scmversion] # Creates a Thorfile with SCMVersion support to manage versions for continuous integration -L, [--license=LICENSE] # License for cookbook (apachev2, gplv2, gplv3, mit, reserved) # Default: reserved -m, [--maintainer=MAINTAINER] # Name of cookbook maintainer -e, [--maintainer-email=MAINTAINER_EMAIL] # Email address of cookbook maintainer [--no-bundler] # Skips generation of a Gemfile and other Bundler specific support [--skip-vagrant] # Skips adding a Vagrantfile and adding supporting gems to the Gemfile [--skip-git] # Skips adding a .gitignore and running git init in the cookbook directory -c, [--config=PATH] # Path to Berkshelf configuration to use. -F, [--format=FORMAT] # Output format to use. # Default: human -q, [--quiet] # Silence all informational output. -d, [--debug] # Output debug information Create a skeleton for a new cookbook
  • 23. A COMPLETE EXAMPLE CHEF- SERVE RCOOKBOO K 1.2 .3 "## Berksfile "## CHANGELOG.md "## CONTRIBUTING.md "## Gemfile "## LICENSE "## README.md "## Thorfile "## Vagrantfile "## attributes $   &## default.rb "## chefignore "## libraries $   "## dev_helper.rb $   &## omnitruck_client.rb "## metadata.rb "## recipes $   "## default.rb $   &## dev.rb &## templates &## default &## chef-server.rb.erb Berksfile metadata.rb
  • 26. COOKB OOK CHEF- SERVE R METADATA IS IMPORTANT V2.0.0 THE VERSION OF THE COOKBOOK FOLLOW SEMVER: HTTP://SEMVER.ORG/
  • 27. METADATA IS IMPORTANT COOKBO OK YUM V1.2.3 COOKBO OK CHEF- SERVER V1.2.3 COOKBO OK APT V1.2.3 Red Hat CentOS Ubuntu SET YOUR SUPPORTED PLATFORMS CentOS Ubuntu Red Hat
  • 28. METADATA IS IMPORTANT COOKBO OK YUM V1.2.3 SET WHAT COOKBOOKS YOU DEPEND ON COOKBO OK CHEF- SERVER V1.2.3 COOKBO OK APT V1.2.3 SUPPORTED PLATFORMS SUPPORTED PLATFORMS SUPPORTED PLATFORMS
  • 29. CHEF-SERVER COOKBOOK’S METADATA name "chef-server" maintainer "Opscode, Inc." maintainer_email "cookbooks@opscode.com" license "Apache 2.0" description "Installs and configures Chef Server" long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) version "2.0.0" depends "apt", ">= 1.7.0" depends "yum", ">= 0.5.0" %w{ ubuntu redhat centos fedora amazon scientific oracle }.each do |os| supports os end
  • 30. IT STARTS WITH A BERKSFILE "## Berksfile "## CHANGELOG.md "## CONTRIBUTING.md "## Gemfile "## LICENSE "## README.md "## Thorfile "## Vagrantfile "## attributes $   &## default.rb "## chefignore "## libraries $   "## dev_helper.rb $   &## omnitruck_client.rb "## metadata.rb "## recipes $   "## default.rb $   &## dev.rb &## templates &## default &## chef-server.rb.erb Berksfile site :opscode metadata group :dev do cookbook 'git' end Berksfile  
  • 31. INSTALLING COOKBOOKS Using chef-server (2.0.0) at path: '/Users/reset/code/riot-cookbooks/chef-server' Installing git (2.5.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' Installing apt (1.9.2) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' Installing yum (2.2.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' Installing dmg (1.1.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' Installing build-essential (1.4.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' Installing windows (1.8.8) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' Installing chef_handler (1.1.4) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' Installing runit (1.1.2) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks' $ berks install
  • 32. INSTALLED TO WHERE? $ ls ~/.berkshelf/cookbooks apache2-1.6.0 chef_handler-1.1.4 known_host-0.1.3 nginx-1.3.0 riot_chef-client-2.0.7 tsf4g-0.0.14 apt-1.9.0 couchdb-2.4.0 liquibase-0.0.1 not_system_ruby-0.1.7 riot_coherence-0.10.12 ucspi-tcp-1.0.0 ark-0.0.11 cron-1.0.4 logrotate-0.8.2 ntp-1.1.8 riot_ejabberd-0.0.152 ulimit-0.1.3 artifact-0.10.10 daemontools-1.0.0 logrotate-1.1.0 ohai-1.1.6 riot_ejabberd-0.0.188 users-1.1.4 artifact-0.10.2 database-1.3.12 lvm-0.8.6 openssl-1.0.0 riot_geoip-0.1.0 vim-1.0.2 artifact-1.2.0 database-1.3.4 magic_shell-0.2.0 postgresql-1.0.0 riot_java-0.1.4 windows-1.8.2 artifact-1.3.1 dmg-1.1.0 man-0.7.0 pvpnet_core-2.3.123 riot_java-0.1.8 xfs-1.0.0 artifact-1.4.0 editor-0.2.0 mysql-1.2.4 pvpnet_core-2.3.131 riot_mysql-2.0.1 xml-1.1.2 aws-0.100.0 erlang-1.2.0 mysql-1.3.0 python-1.2.2 riot_rtview-1.0.1 yum-2.1.0 bluepill-1.1.0 gecode-2.0.0 mysql-2.1.0 rbenv-1.3.2 riot_team-0.9.41 zlib-2.0.0 build-essential-1.1.2 git-2.2.0 mysql-2.1.2 riot_activemq-0.9.28 riot_tomcat-1.0.18 build-essential-1.3.4 hornetq-0.0.27 networking_basic-0.0.5 riot_base-2.7.32 runit-0.16.2 chef-client-2.1.4 java-1.5.0 nexus-1.1.0 riot_base-2.7.37 runit-1.0.4 chef-server-1.1.0 java-1.9.0 nginx-1.2.0 riot_base-2.7.49 sudo-1.2.0
  • 33. UPLOADING COOKBOOKS Using chef-server (2.0.0) at path: '/Users/reset/code/riot-cookbooks/chef-server' Using git (2.2.0) Using apt (1.9.0) Using yum (2.1.0) Using dmg (1.1.0) Using build-essential (1.3.4) Using windows (1.8.2) Using chef_handler (1.1.4) Using runit (0.16.2) Uploading chef-server (2.0.0) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading git (2.2.0) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading apt (1.9.0) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading yum (2.1.0) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading dmg (1.1.0) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading build-essential (1.3.4) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading windows (1.8.2) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading chef_handler (1.1.4) to: 'https://api.opscode.com:443/organizations/vialstudios' Uploading runit (0.16.2) to: 'https://api.opscode.com:443/organizations/vialstudios' $ berks upload
  • 36.
  • 38. SERVICES ARE MADE UP OF COMPONENTS 1  app servers 2  cache servers 3  database servers 4  background workers 5  load balancers 6  etc
  • 39. APPLY A DESIGN PATTERN
  • 42. COMPONENTS OF MYFACE 1  load balancer 2  application server proxy 3  caching service 4  application server 5  background worker 6  database server
  • 45. CRACK OPEN MYFACE::DATABASE_SERVER node.set[:mysql][:port] = 3309 node.set[:mysql][:tunable][:max_connections] = 1000 include_recipe "myface::_common_system" include_recipe "mysql::server"
  • 46. PUBLIC/PRIVATE RECIPES PUBLIC RECIPE ‣  What you put in the run_list of a node ‣  Documented in the README ‣  Documented in the metadata PRIVATE RECIPE ‣  Not exposed to end user ‣  Should never be put in the run_list of a node ‣  Always included into other recipes ‣  Documented in the code for other developers
  • 47. WHAT’S IN MYFACE::_COMMON_SYSTEM? include_recipe "ntp::default" # . . . MAYBE SETUP SOME USERS . . . # . . . MAYBE SETUP SOME ADDITIONAL REPOS . . .
  • 48. WORK IN VERTICALS FROM THE OUTSIDE-INFAVOR DATA- DRIVEN COOKBOOKS THE BERKSHE LF WAY
  • 50. TUNABLES OF MYFACE 1  listen on a different port or bind address 2  set memory usage of workers 3  any app config 4  set services to started or stopped states
  • 51. 3 WAYS TO CONFIGURE ATTRIBUTES DATA BAGS ENCRYPTED DATA BAGS
  • 52. FAVOR CONFIGURING WITH ATTRIBUTES ‣  Path of least resistance for cookbook consumers ‣  Provide sensible defaults in the Attribute files ▾  Consider creating an attribute file for each recipe ‣  Can configure your application on an environment level
  • 53. WHEN TO USE DATA BAGS USERS GROUPS YUM/APT THINGS CONFIGURED BY "BASE" COOKBOOK (IF YOU HAVE ONE) ORGANIZATION LEVEL CONFIGURATIONS
  • 54. USE ENCRYPTED DATA BAGS WHEN STORING SENSITIVE DATA
  • 55. WORK IN VERTICALS FROM THE OUTSIDE-INFAVOR DATA- DRIVEN COOKBOOKS WRITE WELL- ENCAPSULATED COOKBOOKS THE BERKSHE LF WAY
  • 56.
  • 57.
  • 58. NOT VERSIONED CAN’T BE PACKAGED / DISTRIBUTED NOT NAMESPACED STAHP USING ROLES THEY ARE ORGANIZATION LEVEL DATA ADDITIONAL SETUP COMPLEXITY FOR THE USER
  • 59.
  • 60. USE DATA BAGS WHERE THEY MAKE SENSE DO YOU NEED TO STORE ORGANIZATION-WIDE DATA? DO YOU NEED TO STORE SENSITIVE DATA? Use one Use an encrypted one
  • 61. USE DATA BAGS WHERE THEY MAKE SENSE MOST IMPORTANTLY… VALIDATE YOUR DATA BAGS!
  • 62. 5  include_recipe "myface::app_proxy" 6  include_recipe "myface::app_server" 7  include_recipe "myface::cache_server" 8  include_recipe "myface::worker_pool" 9  include_recipe "myface::database" DEFAULTS RECIPE IS SPECIAL
  • 63. LIGHTWEIGHT RESOURCES AND PROVIDERS (LWRP) LIBRARIES DEFINITIONS COOKBOOKS ARE MORE THAN RECIPES COOKBOOKS DON’T NEED TO HAVE RECIPES
  • 65. LIBRARY COOKBOOKS ‣  Might have recipes, might not ‣  Contain LWRPs, Definitions, or Libraries useful to other cookbook authors ‣  YUM Cookbook is a perfect example ▾  Contains a yum_key LWRP for adding repository keys to yum ▾  Contains a yum_repository LWRP for adding repositories to yum ▾  Contains some recipes to configure commonly used public yum repositories on your machine
  • 67. WRAPPER COOKBOOKS ‣  Super lightweight ‣  Contain recipes ‣  Contain attribute overrides ‣  Riot-Java is a perfect example ▾  Contains a Oracle Java 6 recipe ▾  Contains a Oracle Java 7 recipe ▾  An abstraction on top of the Java cookbook for Riot engineers ▾  Overrides the default “install flavor” for Java ▾  Overrides the default location of the Java artifacts to an internal location ▾  NOT A FORK OF THE JAVA COOKBOOK
  • 68. WORK IN VERTICALS FROM THE OUTSIDE-INFAVOR DATA- DRIVEN COOKBOOKS WRITE WELL- ENCAPSULATED COOKBOOKS HAVE SHORT ITERATION LOOPS THE BERKSHE LF WAY
  • 69. OLD WORKFLOW EDIT   COOKBOOK   UPLOAD   COOKBOOK   PROVISION   MACHINE   BOOTSTRAP   MACHINE   RUN  CHEF   CLIENT   SSH  AND   VALIDATE   5-30 minutes
  • 70. NEW WORKFLOW EDIT   COOKBOOK   VAGRANT  UP  /   VAGRANT   PROVISION   TEST  /  SSH   AND  VALIDATE   5  seconds  –  1  minute  
  • 71.
  • 72. BERKSHELF VAGRANT PLUG-IN $ vagrant plugin install vagrant-berkshelf Installing the 'vagrant-berkshelf' plugin. This can take a few minutes... Installed the plugin 'vagrant-berkshelf (1.2.0)'!
  • 73. Bringing machine 'default' up with 'virtualbox' provider... [Berkshelf] Updating Vagrant's berkshelf: '/Users/reset/.berkshelf/vagrant/berkshelf-20130424-40671-t43soz’ Generating chef JSON and uploading... Running chef-solo... [2013-04-25T03:01:31+00:00] INFO: *** Chef 10.14.2 *** [2013-04-25T03:01:32+00:00] INFO: Setting the run_list to ["recipe[minitest-handler::default]", "recipe[myface::default]"] from JSON [2013-04-25T03:01:32+00:00] INFO: Starting Chef Run for myface-berkshelf #### CHEF RUN GOES HERE #### [2013-04-25T03:02:10+00:00] INFO: Chef Run complete in 38.330025825 seconds [2013-04-25T03:02:10+00:00] INFO: Running report handlers Run options: -v --seed 41224 # Running tests: minitesthandler::default#test_0001_runs_no_tests = 0.00 s = . myface::default#test_0001_runs_no_tests_by_default = 0.00 s = . Finished tests in 0.002425s, 824.7576 tests/s, 0.0000 assertions/s. 2 tests, 0 assertions, 0 failures, 0 errors, 0 skips [2013-04-25T03:02:10+00:00] INFO: Report handlers complete PROVISION NEW ENVIRONMENT IN MINUTES $ vagrant up 1 minute 20 secon
  • 74.
  • 75. Running chef-solo... [2013-04-25T03:01:31+00:00] INFO: *** Chef 10.14.2 *** [2013-04-25T03:01:32+00:00] INFO: Setting the run_list to ["recipe[minitest-handler::default]", "recipe[myface::default]"] from JSON [2013-04-25T03:01:32+00:00] INFO: Starting Chef Run for myface-berkshelf #### CHEF RUN GOES HERE #### [2013-04-25T03:02:10+00:00] INFO: Chef Run complete in 0.520326234 seconds [2013-04-25T03:02:10+00:00] INFO: Running report handlers Run options: -v --seed 41224 # Running tests: minitesthandler::default#test_0001_runs_no_tests = 0.00 s = . myface::default#test_0001_runs_no_tests_by_default = 0.00 s = . Finished tests in 0.002425s, 824.7576 tests/s, 0.0000 assertions/s. 2 tests, 0 assertions, 0 failures, 0 errors, 0 skips [2013-04-25T03:02:10+00:00] INFO: Report handlers complete CONVERGE IN SECONDS $ vagrant provision 7 seconds
  • 76. WORK IN VERTICALS FROM THE OUTSIDEFAVOR DATA- DRIVEN COOKBOOKS WRITE WELL- ENCAPSULATED COOKBOOKS HAVE SHORT ITERATION LOOPS THE BERKSHE LF WAY
  • 78. CONTRIBUTE GITHUB.COM/ RIOTGAMES/ BERKSHELF HOW CAN YOU HELP? OR JOIN US WWW.RIOTGAMES.COM/CAREERS