SlideShare a Scribd company logo
1 of 88
Download to read offline
© Zühlke 2013
Torben Knerr
Cooking with Chef, Knife,
Vagrant & Co
4 Ingredients for tasty “Infrastructure-As-Code”
27. September 2013
Slide 1
© Zühlke 2013
With typical components:
• Application Servers
• Database Servers
• Caching Servers
• Load Balancer / Reverse Proxy
• Clustering & Failover
A Typical Web App Project…
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
nginx
Tomcat Tomcat
DB Master
DB Slave
App App
memcached
27. September 2013 Slide 2
© Zühlke 2013
With a typical Deployment Pipeline:
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
Local DEV TEST PROD
A Typical Web App Project…
27. September 2013 Slide 3
© Zühlke 2013
With typical (?) problems:
• All environments are somehow different
• Nobody knows the differences in detail
• Setting up a new environment takes weeks
• And again it looks different from the others
• Totally no Dev/Prod Parity
• And last but not least…
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
A Typical Web App Project…
27. September 2013 Slide 5
© Zühlke 2013
First Approach:
Hey, let’s build VMs!
This already helps:
• Use VMs for a consistent work environment
• Manually set up a local developer VM with Tomcat,
PostgreSQL, nginx, etc…
• Carefully hand-crafted with love!
• Distribute it to the team
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 7
© Zühlke 2013
But…
• Manual management of VMs is cumbersome
• How do you version a 40GB VM?
• How do you take care of updates?
• Can you diff the changes?
• Once it works locally, how can you apply this to the
rest of the deployment pipeline?
• How do you parameterize such VMs?
Better than nothing, but still far from perfect!
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 8
First Approach:
Hey, let’s build VMs!
© Zühlke 2013
Why Scripting / Automation?
• Lightweight scripts vs. fat VMs
– Allows for proper versioning and diffing!
– Easy to share
• Infrastructure can be reliably recreated
– Minimize manual (= boring & error prone) tasks
– Basis for “clean” infrastructure deployments
– Anywhere in the deployment pipeline
• Explicit design of infrastructure
– Described as an executable specification
– Not formed “by accident”
Treat your infrastructure like code!
Better Solution:
Automate your VMs!
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 9
© Zühlke 2013
Cooking with Chef, Knife,
Vagrant & Co
Torben Knerr
Welcome to the DevOps
Kitchen!
Infrastructure á la Carte
27. September 2013
Slide 10
© Zühlke 2013
Goal: set up a simple server infrastructure, fully automated
• For example on a developer machine
• Separate VMs for app server and database server
• Anywhere reproducible („clean setup“)
Our Example Scenario
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
App Server VM
Tomcat
Database Server VM
PostgreSQL
.war
27. September 2013 Slide 11
© Zühlke 2013
Cooking with Chef, Knife,
Vagrant & Co
Torben Knerr
Ingredient #1
We need VMs
27. September 2013
Slide 12
© Zühlke 2013
Ingredient #1: we need VMs
Enter Vagrant
What is Vagrant?
• Vagrant is “automation for VMs”
• Different VM providers: VirtualBox, aws, rackspace, etc..
• The configuration of VMs is described in a Vagrantfile
• Simple commands for interacting with VMs:
– vagrant up
– vagrant ssh
– vagrant halt
– …
• http://vagrantup.com
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 13
Ingredient #1: we need VMs – A simple Vagrantfile
Ingredient #1: we need VMs – A simple Vagrantfile
Basebox
Ingredient #1: we need VMs – A simple Vagrantfile
App Server VM
Ingredient #1: we need VMs – A simple Vagrantfile
Database Server VM
Ingredient #1: we need VMs – Interacting with Vagrant VMs
vagrant up
Ingredient #1: we need VMs – Interacting with Vagrant VMs
vagrant ssh
© Zühlke 2013
Ingredient #1: we need VMs
A quick look at the VirtualBox GUI
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
Is this the App Server VM?
Or the Database Server VM?
27. September 2013 Slide 20
Ingredient #1: we need VMs – More VM configuration
Ingredient #1: we need VMs – More VM configuration
Ingredient #1: we need VMs – More VM configuration
Name, CPUs, RAM, etc…
Ingredient #1: we need VMs – More VM configuration
vagrant reload
© Zühlke 2013
Ingredient #1: we need VMs
Looking at the VirtualBox GUI again
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
and the VM Parameters are applied too
Better names 
27. September 2013 Slide 25
© Zühlke 2013
Cooking with Chef, Knife,
Vagrant & Co
Torben Knerr
Ingredient #2:
Provisioning
27. September 2013
Slide 26
© Zühlke 2013
Ingredient #2: Provisioning
Back to our Example Scenario
“Naked” VMs are not enough
• On the database server VM we need PostgreSQL
• On the app server VM we need Tomcat
We need a tool (“provisioner”) for installing
and configuring software components on top
of naked VMs
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 27
© Zühlke 2013
Ingredient #2: Provisioning
Enter Chef
What is Chef?
• Chef is a “Configuration Management” system
• Installs & configures software on nodes
• Provides a DSL for describing the configuration of a
node in a readable and platform-independent way
More information:
• http://www.opscode.com/chef/
Vagrant supports provisioning of VMs
via Chef out-of-the-box!
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 28
Ingredient #2: Provisioning – Installing PostgreSQL
Ingredient #2: Provisioning – Installing PostgreSQL
run the PostgreSQL Server recipe
Ingredient #2: Provisioning – Installing PostgreSQL
configuration parameters
vagrant up db
What’s inside the PostgreSQL
Recipe?
install the “postgresql“ package
create the config file
Erzeuge die Konfig-Datei
create another config file
start the „postgresql“ service
we also need the postgresql client…
Ingredient #2: Provisioning – Installing Tomcat
Ingredient #2: Provisioning – Installing Tomcat
run the Tomcat default recipe
(short for “tomcat::default“)
Ingredient #2: Provisioning – Installing Tomcat
tomcat specific configuration
vagrant up web
© Zühlke 2013
Chef Philosophy
Specification of the target state
• Idempotence
• Convergence (“self-healing“)
Chef DSL abstracts the OS-specific details via
• Resources
• Providers
Naming: kitchen metaphor
• Chef, Cookbook, Recipe, Knife, …
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 46
© Zühlke 2013
Cooking with Chef, Knife,
Vagrant & Co
Torben Knerr
Ingredient #3:
Managing Cookbooks
27. September 2013
Slide 47
© Zühlke 2013
Ingredient #3: Managing Cookbooks
Back to our Example Scenario
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
where is the PostgreSQL cookbook /
recipe coming from???
27. September 2013 Slide 48
© Zühlke 2013
Ingredient #3: Managing Cookbooks
Typical Sources for “Community Cookbooks”
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
http://community.opscode.com/cookbooks/
https://github.com/search?q=cookbook
27. September 2013 Slide 49
© Zühlke 2013
Ingredient #3: Managing Cookbooks
Enter Librarian
What is Librarian?
• Librarian is a Dependency Management tool for Cookbooks
• Downloads and extracts cookbooks for you
Dependencies are specified in a Cheffile
• Transitive dependencies are resolved as well
• Different cookbook sources and version constraints are respected
More information:
• https://github.com/applicationsonline/librarian-chef
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 50
© Zühlke 2013
Ingredient #3: Managing Cookbooks
A simple Cheffile
Cheffile
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 51
Ingredient #3: Managing Cookbooks – A simple Cheffile
Librarian „installs“ the cookbooks
© Zühlke 2013
Cooking with Chef, Knife,
Vagrant & Co
Torben Knerr
Ingredient #4:
Application Cookbooks
27. September 2013
Slide 53
© Zühlke 2013
Ingredient #4: Application Cookbooks
Back to our Example Scenario
Re-using Community Cookbooks is not enough
• We need a specific database and database user
for our application
• We need to deploy our application’s .war file
in Tomcat
• Existing Community Cookbooks don’t “know” our
specific requirements!
We need to write our own “Application
Cookbook” for this purpose!
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 54
© Zühlke 2013
Did you know? You can create cookbooks with a knife!
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
Ingredient #4: Application Cookbooks
Enter Knife
27. September 2013 Slide 55
© Zühlke 2013
Ingredient #4: Application Cookbooks
Structure of our “myapp” cookbook
Single cookbook with separate recipes for setting up
the database and webapp
Goal: hide implementation details from the user
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
27. September 2013 Slide 56
© Zühlke 2013
Ingredient #4: Application Cookbooks
Structure of our “myapp” cookbook
Attributes files expose the “configuration parameters”
of a cookbook and supply sensible defaults
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
27. September 2013 Slide 57
© Zühlke 2013
Ingredient #4: Application Cookbooks
Structure of our “myapp” cookbook
• myapp/attributes/db.rb
• myapp/attributes/web.rb
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 58
© Zühlke 2013
Ingredient #4: Application Cookbooks
Structure of our “myapp” cookbook
The “db” recipe first installs PostgreSQL, then creates
the database and database user
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
27. September 2013 Slide 59
first install the PostgreSQL server
installs prerequisites for interacting with
PostgreSQL from within this recipe
creates the database user
creates the database
© Zühlke 2013
Ingredient #4: Application Cookbooks
Use “myapp::db” in the Vagrantfile
Vagrantfile
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 65
© Zühlke 2013
Ingredient #4: Application Cookbooks
Use “myapp::db” in the Vagrantfile
Vagrantfile
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
instead of “postgresql::server”
27. September 2013 Slide 66
vagrant provision db
© Zühlke 2013
Ingredient #4: Application Cookbooks
Extended Cheffile
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 68
© Zühlke 2013
Ingredient #4: Application Cookbooks
Structure of our “myapp” cookbook
The “web” recipe first installs tomcat, then configures
and deploys the our web app
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
27. September 2013 Slide 69
we need to install Tomcat first
there is our .war file located
database configuration (via context.xml)
deploy the webapp to Tomcat
© Zühlke 2013
Ingredient #4: Application Cookbooks
Use “myapp::web” in the Vagrantfile
Vagrantfile
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 75
© Zühlke 2013
Ingredient #4: Application Cookbooks
Use “myapp::web” in the Vagrantfile
Vagrantfile
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
instead of the “tomcat::default“ recipe
27. September 2013 Slide 76
© Zühlke 2013
Ingredient #4: Application Cookbooks
Use “myapp::web” in the Vagrantfile
Vagrantfile
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
C
connect to this database host
(here: ip address of the db vm)
27. September 2013 Slide 77
vagrant provision web
Is it running now?
Or whatever is in your context…
(we have borrowed the “yabe“ example from Play! here:
http://www.playframework.org/documentation/1.0/samples)
© Zühlke 2013
Cooking with Chef, Knife,
Vagrant & Co
Torben Knerr
The DevOps Kitchen –
Recap
27. September 2013
Slide 81
© Zühlke 2013
Recap:
Ingredients for cooking in the DevOps Kitchen
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr
Ingr. #1 We need VMs
Ingr. #2 Provisioning
Ingr. #3 Cookbook Management
Ingr. #4 Application Cookbooks
+
+
+
27. September 2013 Slide 82
© Zühlke 2013
Fully Automated Infrastructure via Textual Specification
• No shell scripts, but specification of the target state via Chef DSL
• Crisp and concise, but not cryptic
• SCM-friendly: Kilobytes instead of Gigabytes, diffable
• Complex infrastructure available at the push-of-a-button
• Reproducible anywhere in the deployment pipeline
• Good software engineering principles applied to infrastructure
What have we achieved?
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 83
© Zühlke 2013
We have barely touched the surface…
There’s much more of Chef, Vagrant & Co we have not seen today:
• More Vagrant features
– Alternative Providers (e.g. vmware, aws, rackspace, managed-servers, etc…)
– Alternative Provisioners (e.g. puppet, shell, ansible, salt, etc…)
– Vagrant Plugins (e.g. vagrant-omnibus, vagrant-berkshelf, vagrant-cachier, …)
– …
• More Chef concepts
– Writing Custom Resources und Providers (LWRPs)
– Data bags
– Environments
– Search
– Chef Solo vs. Chef Server
– …
• And most importantly…
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 84
© Zühlke 2013Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 85
…if we treat infrastructure as code, then
we have to test!
Linting
• foodcritic
Unit-Level Testing
• chefspec
• fauxhai
Integration Testing (from the inside)
• chef-minitest-handler
• test-kitchen
Acceptance Testing (outside-in)
• cucumber-nagios
© Zühlke 2013
Resources
Some useful stuff to check out…
• Code Examples from this talk
https://github.com/tknerr/oop-chef-demo
• Newer Example based on Vagrant / Chef / Berkshelf
https://github.com/tknerr/sample-application-cookbook
• Bills Kitchen – all you need for cooking with Chef & Vagrant on Windows
https://github.com/tknerr/bills-kitchen
https://ikm.zuehlke.com/topics/Pages/Bill%27s%20Kitchen.aspx
• “Chef, Vagrant & Co” Yammer Group
https://www.yammer.com/zuehlke.com/#/threads/inGroup?type=in_group&feedId=2051695
• “Test-Driven Infrastructure with Chef (2nd ed.)” – highly recommended!
http://shop.oreilly.com/product/0636920030973.do
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 86
© Zühlke 2013
Resources
More of the Vagrant Ecosystem…
• Bindler – Manage your Vagrant Plugins via `plugins.json`
https://github.com/fgrehm/bindler
• Selection of useful Vagrant plugins
https://github.com/schisamo/vagrant-omnibus – installs Chef on a “provisionerless” basebox
https://github.com/riotgames/vagrant-berkshelf – resolves cookbook dependencies on `vagrant up`
https://github.com/fgrehm/vagrant-cachier – transparently caches downloaded packages
https://github.com/tmatilai/vagrant-proxyconf – sets the proxy inside the VM
…
• Selection of Vagrant Providers
https://github.com/mitchellh/vagrant-aws – provision EC2 instances in the AWS cloud with Vagrant
https://github.com/tknerr/vagrant-managed-servers – provision “non-VMs” with Vagrant
https://github.com/fgrehm/vagrant-lxc - provision LXC containers
…
Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 87
© Zühlke 2013
Cooking with Chef, Knife,
Vagrant & Co
Torben Knerr
Discussion Time!
20. Juli 2012
Puppet, Berkshelf,
Foo, Bar, Baz
DevOps, NoOps,
Blablabla
Vagrant, Chef,
Deployment Stuff
Holy Cloud!
Slide 88
Thank You! 
And let’s continue the discussion here:

More Related Content

What's hot

Learn How Selenium And Jenkins Fit In DevOps | Edureka Live
Learn How Selenium And Jenkins Fit In DevOps | Edureka LiveLearn How Selenium And Jenkins Fit In DevOps | Edureka Live
Learn How Selenium And Jenkins Fit In DevOps | Edureka LiveEdureka!
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsCloudBees
 
Continuous Delivery to Kubernetes with Jenkins and Helm
Continuous Delivery to Kubernetes with Jenkins and HelmContinuous Delivery to Kubernetes with Jenkins and Helm
Continuous Delivery to Kubernetes with Jenkins and HelmDavid Currie
 
Baking Docker Using Chef
Baking Docker Using ChefBaking Docker Using Chef
Baking Docker Using ChefMukta Aphale
 
Michelin Starred Cooking with Chef
Michelin Starred Cooking with ChefMichelin Starred Cooking with Chef
Michelin Starred Cooking with ChefJon Cowie
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSBamdad Dashtban
 
Continuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins WorkflowContinuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins WorkflowUdaypal Aarkoti
 
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Simplilearn
 
Docker Enables DevOps
Docker Enables DevOpsDocker Enables DevOps
Docker Enables DevOpsBoyd Hemphill
 
What's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the CloudWhat's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the Cloudmartinlippert
 
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Simplilearn
 
Jenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated DeploymentJenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated DeploymentDan Stine
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014Jean-Charles JOREL
 
Distributed Docker Pipeline Architecture with CloudBees Jenkins Enterprise
Distributed Docker Pipeline Architecture with CloudBees Jenkins EnterpriseDistributed Docker Pipeline Architecture with CloudBees Jenkins Enterprise
Distributed Docker Pipeline Architecture with CloudBees Jenkins EnterpriseKurt Madel
 
Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Andreas Rehn
 
Continuous Delivery with Jenkins & Kubernetes @ Sky
Continuous Delivery with Jenkins & Kubernetes @ SkyContinuous Delivery with Jenkins & Kubernetes @ Sky
Continuous Delivery with Jenkins & Kubernetes @ SkyAdriana Vasiu
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Tracy Kennedy
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for TestingCarlos Sanchez
 
Getting started with Chef
Getting started with ChefGetting started with Chef
Getting started with ChefEdureka!
 

What's hot (20)

Learn How Selenium And Jenkins Fit In DevOps | Edureka Live
Learn How Selenium And Jenkins Fit In DevOps | Edureka LiveLearn How Selenium And Jenkins Fit In DevOps | Edureka Live
Learn How Selenium And Jenkins Fit In DevOps | Edureka Live
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
 
Continuous Delivery to Kubernetes with Jenkins and Helm
Continuous Delivery to Kubernetes with Jenkins and HelmContinuous Delivery to Kubernetes with Jenkins and Helm
Continuous Delivery to Kubernetes with Jenkins and Helm
 
Baking Docker Using Chef
Baking Docker Using ChefBaking Docker Using Chef
Baking Docker Using Chef
 
Michelin Starred Cooking with Chef
Michelin Starred Cooking with ChefMichelin Starred Cooking with Chef
Michelin Starred Cooking with Chef
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
 
Continuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins WorkflowContinuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins Workflow
 
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...
 
Docker Enables DevOps
Docker Enables DevOpsDocker Enables DevOps
Docker Enables DevOps
 
What's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the CloudWhat's new with tooling for Spring, Grails, and the Cloud
What's new with tooling for Spring, Grails, and the Cloud
 
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
 
Jenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated DeploymentJenkins and Chef: Infrastructure CI and Automated Deployment
Jenkins and Chef: Infrastructure CI and Automated Deployment
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
 
Distributed Docker Pipeline Architecture with CloudBees Jenkins Enterprise
Distributed Docker Pipeline Architecture with CloudBees Jenkins EnterpriseDistributed Docker Pipeline Architecture with CloudBees Jenkins Enterprise
Distributed Docker Pipeline Architecture with CloudBees Jenkins Enterprise
 
Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014
 
Continuous Delivery with Jenkins & Kubernetes @ Sky
Continuous Delivery with Jenkins & Kubernetes @ SkyContinuous Delivery with Jenkins & Kubernetes @ Sky
Continuous Delivery with Jenkins & Kubernetes @ Sky
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
Getting started with Chef
Getting started with ChefGetting started with Chef
Getting started with Chef
 

Similar to Cooking with Chef, Knife, Vagrant and Co

Infrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & CoInfrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & CoTorben Knerr
 
Continuous Deployment to the cloud
Continuous Deployment to the cloudContinuous Deployment to the cloud
Continuous Deployment to the cloudVMware Tanzu
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneciberkleid
 
Experts Live Europe 2017 - Why you should care about Docker - an introduction
Experts Live Europe 2017 - Why you should care about Docker - an introductionExperts Live Europe 2017 - Why you should care about Docker - an introduction
Experts Live Europe 2017 - Why you should care about Docker - an introductionMarc Müller
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Marcin Grzejszczak
 
Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kuberneteskloia
 
Continuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour DallasContinuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour DallasVMware Tanzu
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Marcin Grzejszczak
 
CI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online WorkshopCI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online WorkshopBhuvaneswari Subramani
 
Seminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & KubernetesSeminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & KubernetesPT Datacomm Diangraha
 
Building Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloudBuilding Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloud Faculty of Computer Science
 
Enterprise Cloud with IBM & Chef (ChefConf 2013)
Enterprise Cloud with IBM & Chef (ChefConf 2013)Enterprise Cloud with IBM & Chef (ChefConf 2013)
Enterprise Cloud with IBM & Chef (ChefConf 2013)Michael Elder
 
MongoDB Ops Manager and Kubernetes - James Broadhead
MongoDB Ops Manager and Kubernetes - James BroadheadMongoDB Ops Manager and Kubernetes - James Broadhead
MongoDB Ops Manager and Kubernetes - James BroadheadMongoDB
 
Ansible Meetup FI - Ansible use cases with enterprise application
Ansible Meetup FI - Ansible use cases with enterprise application Ansible Meetup FI - Ansible use cases with enterprise application
Ansible Meetup FI - Ansible use cases with enterprise application Tanja REPO 🦊
 
Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...Nikhil Hiremath
 
Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote ConferenceHamida Rebai Trabelsi
 
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> KubernetesJJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> KubernetesMauricio (Salaboy) Salatino
 
DCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDocker, Inc.
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 

Similar to Cooking with Chef, Knife, Vagrant and Co (20)

Infrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & CoInfrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
 
Continuous Deployment to the cloud
Continuous Deployment to the cloudContinuous Deployment to the cloud
Continuous Deployment to the cloud
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Experts Live Europe 2017 - Why you should care about Docker - an introduction
Experts Live Europe 2017 - Why you should care about Docker - an introductionExperts Live Europe 2017 - Why you should care about Docker - an introduction
Experts Live Europe 2017 - Why you should care about Docker - an introduction
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kubernetes
 
Continuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour DallasContinuous Deployment of your Application - SpringOne Tour Dallas
Continuous Deployment of your Application - SpringOne Tour Dallas
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5
 
CI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online WorkshopCI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online Workshop
 
Seminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & KubernetesSeminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & Kubernetes
 
Building Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloudBuilding Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloud
 
Enterprise Cloud with IBM & Chef (ChefConf 2013)
Enterprise Cloud with IBM & Chef (ChefConf 2013)Enterprise Cloud with IBM & Chef (ChefConf 2013)
Enterprise Cloud with IBM & Chef (ChefConf 2013)
 
MongoDB Ops Manager and Kubernetes - James Broadhead
MongoDB Ops Manager and Kubernetes - James BroadheadMongoDB Ops Manager and Kubernetes - James Broadhead
MongoDB Ops Manager and Kubernetes - James Broadhead
 
Ansible Meetup FI - Ansible use cases with enterprise application
Ansible Meetup FI - Ansible use cases with enterprise application Ansible Meetup FI - Ansible use cases with enterprise application
Ansible Meetup FI - Ansible use cases with enterprise application
 
Cicd.pdf
Cicd.pdfCicd.pdf
Cicd.pdf
 
Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...
 
Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote Conference
 
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> KubernetesJJUG CCC 2018 : Lessons Learned: Spring Cloud ->  Docker -> Kubernetes
JJUG CCC 2018 : Lessons Learned: Spring Cloud -> Docker -> Kubernetes
 
DCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application PackagesDCEU 18: App-in-a-Box with Docker Application Packages
DCEU 18: App-in-a-Box with Docker Application Packages
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 

More from Torben Knerr

Monitoring in Azure
Monitoring in AzureMonitoring in Azure
Monitoring in AzureTorben Knerr
 
Zuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible sessionZuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible sessionTorben Knerr
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Torben Knerr
 
Kollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und RealitätKollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und RealitätTorben Knerr
 
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...Torben Knerr
 
ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?Torben Knerr
 

More from Torben Knerr (7)

Monitoring in Azure
Monitoring in AzureMonitoring in Azure
Monitoring in Azure
 
Zuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible sessionZuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible session
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
 
Kollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und RealitätKollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und Realität
 
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
 
ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?
 
Maven Intro
Maven IntroMaven Intro
Maven Intro
 

Recently uploaded

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 

Recently uploaded (20)

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 

Cooking with Chef, Knife, Vagrant and Co

  • 1. © Zühlke 2013 Torben Knerr Cooking with Chef, Knife, Vagrant & Co 4 Ingredients for tasty “Infrastructure-As-Code” 27. September 2013 Slide 1
  • 2. © Zühlke 2013 With typical components: • Application Servers • Database Servers • Caching Servers • Load Balancer / Reverse Proxy • Clustering & Failover A Typical Web App Project… Cooking with Chef, Knife, Vagrant & Co | Torben Knerr nginx Tomcat Tomcat DB Master DB Slave App App memcached 27. September 2013 Slide 2
  • 3. © Zühlke 2013 With a typical Deployment Pipeline: Cooking with Chef, Knife, Vagrant & Co | Torben Knerr Local DEV TEST PROD A Typical Web App Project… 27. September 2013 Slide 3
  • 4. © Zühlke 2013 With typical (?) problems: • All environments are somehow different • Nobody knows the differences in detail • Setting up a new environment takes weeks • And again it looks different from the others • Totally no Dev/Prod Parity • And last but not least… Cooking with Chef, Knife, Vagrant & Co | Torben Knerr A Typical Web App Project… 27. September 2013 Slide 5
  • 5.
  • 6. © Zühlke 2013 First Approach: Hey, let’s build VMs! This already helps: • Use VMs for a consistent work environment • Manually set up a local developer VM with Tomcat, PostgreSQL, nginx, etc… • Carefully hand-crafted with love! • Distribute it to the team Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 7
  • 7. © Zühlke 2013 But… • Manual management of VMs is cumbersome • How do you version a 40GB VM? • How do you take care of updates? • Can you diff the changes? • Once it works locally, how can you apply this to the rest of the deployment pipeline? • How do you parameterize such VMs? Better than nothing, but still far from perfect! Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 8 First Approach: Hey, let’s build VMs!
  • 8. © Zühlke 2013 Why Scripting / Automation? • Lightweight scripts vs. fat VMs – Allows for proper versioning and diffing! – Easy to share • Infrastructure can be reliably recreated – Minimize manual (= boring & error prone) tasks – Basis for “clean” infrastructure deployments – Anywhere in the deployment pipeline • Explicit design of infrastructure – Described as an executable specification – Not formed “by accident” Treat your infrastructure like code! Better Solution: Automate your VMs! Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 9
  • 9. © Zühlke 2013 Cooking with Chef, Knife, Vagrant & Co Torben Knerr Welcome to the DevOps Kitchen! Infrastructure á la Carte 27. September 2013 Slide 10
  • 10. © Zühlke 2013 Goal: set up a simple server infrastructure, fully automated • For example on a developer machine • Separate VMs for app server and database server • Anywhere reproducible („clean setup“) Our Example Scenario Cooking with Chef, Knife, Vagrant & Co | Torben Knerr App Server VM Tomcat Database Server VM PostgreSQL .war 27. September 2013 Slide 11
  • 11. © Zühlke 2013 Cooking with Chef, Knife, Vagrant & Co Torben Knerr Ingredient #1 We need VMs 27. September 2013 Slide 12
  • 12. © Zühlke 2013 Ingredient #1: we need VMs Enter Vagrant What is Vagrant? • Vagrant is “automation for VMs” • Different VM providers: VirtualBox, aws, rackspace, etc.. • The configuration of VMs is described in a Vagrantfile • Simple commands for interacting with VMs: – vagrant up – vagrant ssh – vagrant halt – … • http://vagrantup.com Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 13
  • 13. Ingredient #1: we need VMs – A simple Vagrantfile
  • 14. Ingredient #1: we need VMs – A simple Vagrantfile Basebox
  • 15. Ingredient #1: we need VMs – A simple Vagrantfile App Server VM
  • 16. Ingredient #1: we need VMs – A simple Vagrantfile Database Server VM
  • 17. Ingredient #1: we need VMs – Interacting with Vagrant VMs vagrant up
  • 18. Ingredient #1: we need VMs – Interacting with Vagrant VMs vagrant ssh
  • 19. © Zühlke 2013 Ingredient #1: we need VMs A quick look at the VirtualBox GUI Cooking with Chef, Knife, Vagrant & Co | Torben Knerr Is this the App Server VM? Or the Database Server VM? 27. September 2013 Slide 20
  • 20. Ingredient #1: we need VMs – More VM configuration
  • 21. Ingredient #1: we need VMs – More VM configuration
  • 22. Ingredient #1: we need VMs – More VM configuration Name, CPUs, RAM, etc…
  • 23. Ingredient #1: we need VMs – More VM configuration vagrant reload
  • 24. © Zühlke 2013 Ingredient #1: we need VMs Looking at the VirtualBox GUI again Cooking with Chef, Knife, Vagrant & Co | Torben Knerr and the VM Parameters are applied too Better names  27. September 2013 Slide 25
  • 25. © Zühlke 2013 Cooking with Chef, Knife, Vagrant & Co Torben Knerr Ingredient #2: Provisioning 27. September 2013 Slide 26
  • 26. © Zühlke 2013 Ingredient #2: Provisioning Back to our Example Scenario “Naked” VMs are not enough • On the database server VM we need PostgreSQL • On the app server VM we need Tomcat We need a tool (“provisioner”) for installing and configuring software components on top of naked VMs Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 27
  • 27. © Zühlke 2013 Ingredient #2: Provisioning Enter Chef What is Chef? • Chef is a “Configuration Management” system • Installs & configures software on nodes • Provides a DSL for describing the configuration of a node in a readable and platform-independent way More information: • http://www.opscode.com/chef/ Vagrant supports provisioning of VMs via Chef out-of-the-box! Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 28
  • 28. Ingredient #2: Provisioning – Installing PostgreSQL
  • 29. Ingredient #2: Provisioning – Installing PostgreSQL run the PostgreSQL Server recipe
  • 30. Ingredient #2: Provisioning – Installing PostgreSQL configuration parameters
  • 32. What’s inside the PostgreSQL Recipe?
  • 33.
  • 39. we also need the postgresql client…
  • 40.
  • 41. Ingredient #2: Provisioning – Installing Tomcat
  • 42. Ingredient #2: Provisioning – Installing Tomcat run the Tomcat default recipe (short for “tomcat::default“)
  • 43. Ingredient #2: Provisioning – Installing Tomcat tomcat specific configuration
  • 45. © Zühlke 2013 Chef Philosophy Specification of the target state • Idempotence • Convergence (“self-healing“) Chef DSL abstracts the OS-specific details via • Resources • Providers Naming: kitchen metaphor • Chef, Cookbook, Recipe, Knife, … Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 46
  • 46. © Zühlke 2013 Cooking with Chef, Knife, Vagrant & Co Torben Knerr Ingredient #3: Managing Cookbooks 27. September 2013 Slide 47
  • 47. © Zühlke 2013 Ingredient #3: Managing Cookbooks Back to our Example Scenario Cooking with Chef, Knife, Vagrant & Co | Torben Knerr where is the PostgreSQL cookbook / recipe coming from??? 27. September 2013 Slide 48
  • 48. © Zühlke 2013 Ingredient #3: Managing Cookbooks Typical Sources for “Community Cookbooks” Cooking with Chef, Knife, Vagrant & Co | Torben Knerr http://community.opscode.com/cookbooks/ https://github.com/search?q=cookbook 27. September 2013 Slide 49
  • 49. © Zühlke 2013 Ingredient #3: Managing Cookbooks Enter Librarian What is Librarian? • Librarian is a Dependency Management tool for Cookbooks • Downloads and extracts cookbooks for you Dependencies are specified in a Cheffile • Transitive dependencies are resolved as well • Different cookbook sources and version constraints are respected More information: • https://github.com/applicationsonline/librarian-chef Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 50
  • 50. © Zühlke 2013 Ingredient #3: Managing Cookbooks A simple Cheffile Cheffile Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 51
  • 51. Ingredient #3: Managing Cookbooks – A simple Cheffile Librarian „installs“ the cookbooks
  • 52. © Zühlke 2013 Cooking with Chef, Knife, Vagrant & Co Torben Knerr Ingredient #4: Application Cookbooks 27. September 2013 Slide 53
  • 53. © Zühlke 2013 Ingredient #4: Application Cookbooks Back to our Example Scenario Re-using Community Cookbooks is not enough • We need a specific database and database user for our application • We need to deploy our application’s .war file in Tomcat • Existing Community Cookbooks don’t “know” our specific requirements! We need to write our own “Application Cookbook” for this purpose! Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 54
  • 54. © Zühlke 2013 Did you know? You can create cookbooks with a knife! Cooking with Chef, Knife, Vagrant & Co | Torben Knerr Ingredient #4: Application Cookbooks Enter Knife 27. September 2013 Slide 55
  • 55. © Zühlke 2013 Ingredient #4: Application Cookbooks Structure of our “myapp” cookbook Single cookbook with separate recipes for setting up the database and webapp Goal: hide implementation details from the user Cooking with Chef, Knife, Vagrant & Co | Torben Knerr myapp attributes recipes db.rb web.rb db.rb default.rb web.rb 27. September 2013 Slide 56
  • 56. © Zühlke 2013 Ingredient #4: Application Cookbooks Structure of our “myapp” cookbook Attributes files expose the “configuration parameters” of a cookbook and supply sensible defaults Cooking with Chef, Knife, Vagrant & Co | Torben Knerr myapp attributes recipes db.rb web.rb db.rb default.rb web.rb 27. September 2013 Slide 57
  • 57. © Zühlke 2013 Ingredient #4: Application Cookbooks Structure of our “myapp” cookbook • myapp/attributes/db.rb • myapp/attributes/web.rb Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 58
  • 58. © Zühlke 2013 Ingredient #4: Application Cookbooks Structure of our “myapp” cookbook The “db” recipe first installs PostgreSQL, then creates the database and database user Cooking with Chef, Knife, Vagrant & Co | Torben Knerr myapp attributes recipes db.rb web.rb db.rb default.rb web.rb 27. September 2013 Slide 59
  • 59.
  • 60. first install the PostgreSQL server
  • 61. installs prerequisites for interacting with PostgreSQL from within this recipe
  • 64. © Zühlke 2013 Ingredient #4: Application Cookbooks Use “myapp::db” in the Vagrantfile Vagrantfile Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 65
  • 65. © Zühlke 2013 Ingredient #4: Application Cookbooks Use “myapp::db” in the Vagrantfile Vagrantfile Cooking with Chef, Knife, Vagrant & Co | Torben Knerr instead of “postgresql::server” 27. September 2013 Slide 66
  • 67. © Zühlke 2013 Ingredient #4: Application Cookbooks Extended Cheffile Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 68
  • 68. © Zühlke 2013 Ingredient #4: Application Cookbooks Structure of our “myapp” cookbook The “web” recipe first installs tomcat, then configures and deploys the our web app Cooking with Chef, Knife, Vagrant & Co | Torben Knerr myapp attributes recipes db.rb web.rb db.rb default.rb web.rb 27. September 2013 Slide 69
  • 69.
  • 70. we need to install Tomcat first
  • 71. there is our .war file located
  • 73. deploy the webapp to Tomcat
  • 74. © Zühlke 2013 Ingredient #4: Application Cookbooks Use “myapp::web” in the Vagrantfile Vagrantfile Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 75
  • 75. © Zühlke 2013 Ingredient #4: Application Cookbooks Use “myapp::web” in the Vagrantfile Vagrantfile Cooking with Chef, Knife, Vagrant & Co | Torben Knerr instead of the “tomcat::default“ recipe 27. September 2013 Slide 76
  • 76. © Zühlke 2013 Ingredient #4: Application Cookbooks Use “myapp::web” in the Vagrantfile Vagrantfile Cooking with Chef, Knife, Vagrant & Co | Torben Knerr C connect to this database host (here: ip address of the db vm) 27. September 2013 Slide 77
  • 79. Or whatever is in your context… (we have borrowed the “yabe“ example from Play! here: http://www.playframework.org/documentation/1.0/samples)
  • 80. © Zühlke 2013 Cooking with Chef, Knife, Vagrant & Co Torben Knerr The DevOps Kitchen – Recap 27. September 2013 Slide 81
  • 81. © Zühlke 2013 Recap: Ingredients for cooking in the DevOps Kitchen Cooking with Chef, Knife, Vagrant & Co | Torben Knerr Ingr. #1 We need VMs Ingr. #2 Provisioning Ingr. #3 Cookbook Management Ingr. #4 Application Cookbooks + + + 27. September 2013 Slide 82
  • 82. © Zühlke 2013 Fully Automated Infrastructure via Textual Specification • No shell scripts, but specification of the target state via Chef DSL • Crisp and concise, but not cryptic • SCM-friendly: Kilobytes instead of Gigabytes, diffable • Complex infrastructure available at the push-of-a-button • Reproducible anywhere in the deployment pipeline • Good software engineering principles applied to infrastructure What have we achieved? Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 83
  • 83. © Zühlke 2013 We have barely touched the surface… There’s much more of Chef, Vagrant & Co we have not seen today: • More Vagrant features – Alternative Providers (e.g. vmware, aws, rackspace, managed-servers, etc…) – Alternative Provisioners (e.g. puppet, shell, ansible, salt, etc…) – Vagrant Plugins (e.g. vagrant-omnibus, vagrant-berkshelf, vagrant-cachier, …) – … • More Chef concepts – Writing Custom Resources und Providers (LWRPs) – Data bags – Environments – Search – Chef Solo vs. Chef Server – … • And most importantly… Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 84
  • 84. © Zühlke 2013Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 85 …if we treat infrastructure as code, then we have to test! Linting • foodcritic Unit-Level Testing • chefspec • fauxhai Integration Testing (from the inside) • chef-minitest-handler • test-kitchen Acceptance Testing (outside-in) • cucumber-nagios
  • 85. © Zühlke 2013 Resources Some useful stuff to check out… • Code Examples from this talk https://github.com/tknerr/oop-chef-demo • Newer Example based on Vagrant / Chef / Berkshelf https://github.com/tknerr/sample-application-cookbook • Bills Kitchen – all you need for cooking with Chef & Vagrant on Windows https://github.com/tknerr/bills-kitchen https://ikm.zuehlke.com/topics/Pages/Bill%27s%20Kitchen.aspx • “Chef, Vagrant & Co” Yammer Group https://www.yammer.com/zuehlke.com/#/threads/inGroup?type=in_group&feedId=2051695 • “Test-Driven Infrastructure with Chef (2nd ed.)” – highly recommended! http://shop.oreilly.com/product/0636920030973.do Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 86
  • 86. © Zühlke 2013 Resources More of the Vagrant Ecosystem… • Bindler – Manage your Vagrant Plugins via `plugins.json` https://github.com/fgrehm/bindler • Selection of useful Vagrant plugins https://github.com/schisamo/vagrant-omnibus – installs Chef on a “provisionerless” basebox https://github.com/riotgames/vagrant-berkshelf – resolves cookbook dependencies on `vagrant up` https://github.com/fgrehm/vagrant-cachier – transparently caches downloaded packages https://github.com/tmatilai/vagrant-proxyconf – sets the proxy inside the VM … • Selection of Vagrant Providers https://github.com/mitchellh/vagrant-aws – provision EC2 instances in the AWS cloud with Vagrant https://github.com/tknerr/vagrant-managed-servers – provision “non-VMs” with Vagrant https://github.com/fgrehm/vagrant-lxc - provision LXC containers … Cooking with Chef, Knife, Vagrant & Co | Torben Knerr 27. September 2013 Slide 87
  • 87. © Zühlke 2013 Cooking with Chef, Knife, Vagrant & Co Torben Knerr Discussion Time! 20. Juli 2012 Puppet, Berkshelf, Foo, Bar, Baz DevOps, NoOps, Blablabla Vagrant, Chef, Deployment Stuff Holy Cloud! Slide 88
  • 88. Thank You!  And let’s continue the discussion here: