SlideShare a Scribd company logo
W11	
  
DevOps	
  &	
  Testing	
  
5/4/16	
  13:45	
  
Continuous	
  Integration	
  Testing	
  
Techniques	
  to	
  Improve	
  Chef	
  Cookbook	
  
Quality	
  
Presented	
  by:	
  
Glenn	
  Buckholz	
  
Coveros,	
  Inc.	
  
Brought	
  to	
  you	
  by:	
  	
  
350	
  Corporate	
  Way,	
  Suite	
  400,	
  Orange	
  Park,	
  FL	
  32073	
  
888-268-8770 904-278-0524 info@techwell.com http://www.stareast.techwell.com/
Glenn	
  Buckholz	
  
Coveros,	
  Inc.	
  
With	
  fifteen	
  years	
  of	
  industry	
  experience,	
  Glenn	
  Buckholz	
  leads	
  continuous	
  
integration	
  and	
  deployment	
  automation	
  efforts	
  at	
  Coveros.	
  His	
  career	
  began	
  as	
  a	
  
consultant	
  implementing	
  automated	
  test	
  frameworks	
  and	
  introducing	
  the	
  
concept	
  of	
  change	
  management	
  to	
  many,	
  many	
  projects.	
  Glenn	
  then	
  decided	
  to	
  
become	
  a	
  part	
  of	
  honest	
  society	
  and	
  settled	
  down	
  at	
  the	
  Public	
  Company	
  
Accounting	
  Oversight	
  Board	
  as	
  their	
  full8 time	
  enterprise	
  change	
  manager.	
  
Several	
  years	
  later,	
  he	
  joined	
  Coveros,	
  where	
  he	
  specializes	
  in	
  implementing	
  agile	
  
practices	
  and	
  CI,	
  and	
  engineering	
  configuration	
  management	
  instead	
  of	
  simply	
  
documenting	
  it.	
  
© Copyright 2016 Coveros, Inc. All rights reserved.
Continuous Integration Testing
Techniques to Improve Chef
Cookbook Quality
STAREAST – 04 May 2016
Glenn Buckholz
glenn.buckholz@coveros.com
© Copyright 2016 Coveros, Inc. All rights reserved.
Agenda
•What did I do?
•What is problem?
•What are the needs?
•Demo
•Architecture
•Workflow
•Testing Techniques and Tools
•Metrics?
•Docker and Cloud
•Discussion
© Copyright 2016 Coveros, Inc. All rights reserved.
What did I do?
● Used a modern CI/CD toolchain to apply
continuous integration testing techniques to
Chef code (CI):
○ Static analysis
○ Chefspec testing
○ Automated Functional Testing
● Introduces the idea of automatically making
cookbooks available when they are ready
(CD).
○ There is still a human gate between
available and in use by way of version
pinning.
© Copyright 2016 Coveros, Inc. All rights reserved.
What is the problem?
● Infrastructure as Code is currently the wild
west with little formal testing methodology.
● Chef lacks coherent CM on its own.
○ Cookbook versions and freezing are not
enough.
● No quick way to advance a piece of
infrastructure from one state to another and
back for purposes of testing.
● No minimal standards and requirements on
cookbook functionality.
© Copyright 2016 Coveros, Inc. All rights reserved.
What are the needs?
YOU ARE CHANGING THE TIRE AT
55MPH AND CAN’T STOP!!!
● Find flaws early.
● Ability to test pieces of an architecture
without having to have a whole system.
○ Unit testing system components.
● Simulate the effect of a deploy on a running
system.
● Dashboarding so you can trend code
quality.
© Copyright 2016 Coveros, Inc. All rights reserved.
Definitions
● Hands Off Deploy - Deployment that is
completely driven by Chef or some other
infrastructure tool.
● Static Analysis - evaluation of the code
without execution.
● Feedback loop - The events between when
a developer commits their code and results
can be observed.
● Application Code - The custom or home
grown software the current IT organization
is curating.
© Copyright 2016 Coveros, Inc. All rights reserved.
Demo
© Copyright 2016 Coveros, Inc. All rights reserved.
Architecture
Local Git Branch
Chefspec
Test Kitchen
Food Critic
Developer Workstation
Docker
Container
Binary Repository
Docker
Repository
Local Testing
Docker
Container
Upload Cookbook
© Copyright 2016 Coveros, Inc. All rights reserved.
Workflow
1. Clone master branch on the developer
machine.
2. Make changes and run static analysis.
3. Run Chefspec and test kitchen locally on a
docker container.
4. Push changes to remote branch.
5. Jenkins detects changes and checks out
branch onto a slave node.
© Copyright 2016 Coveros, Inc. All rights reserved.
Workflow
6. Jenkins merges the code with master
locally.
7. Chef reruns the static analysis.
8. Chef reruns Chefspec and test kitchen.
9. Results and metrics are recorded.
10.Successful tests see code merged into
master.
11.Cookbooks are uploaded to the chef
server.
12.After the code is executed in production,
AMI and Docker containers are
automatically updated from production.
Steps 8-9
automate
integration
testing
© Copyright 2016 Coveros, Inc. All rights reserved.
Reuse of well known patterns
● Feature Branches
○ Small bite sized changes.
● Automated Merging
○ Let the Jenkins objectively merge the
code after certain minimum standards are
achieved by the developer.
● Local tests that mirror a golden standard
○ Give the developers a cheat sheet.
● Short feedback loops.
● Auto Promotion
○ Let Jenkins keep the working cookbooks
in sync with SCM
Smaller changes are
more likely to make it
through the pipeline.
© Copyright 2016 Coveros, Inc. All rights reserved.
Testing Techniques
● Tabula Rasa
○ Start with a base image
○ Apply Security Hardening
○ Install stack fresh
○ Deploy application code
○ Run tests
● Production Approximation
○ Start with a clone from production
○ Run cookbooks
■ Only changes are executed
○ Run test
© Copyright 2016 Coveros, Inc. All rights reserved.
Testing Techniques
● Test in parallel
○ Do not block on critical resources clone
them.
○ VMs and containers are cheap, create
one for every commit you want to test.
○ Make unit and integration test cases
isolated. (Script system state for each
test case do not rely on other tests)
● Test local
○ Very short feedback loop for developers.
○ Reduces most pipeline failures to
integration errors.
© Copyright 2016 Coveros, Inc. All rights reserved.
Testing Tools
● Unit Testing
○ chefspec - extension of Rspec
● Functional Testing
○ BATS or chefspec
● Static Analysis
○ Foodcritic - lint like
● Git hooks
○ Make certain static tests run as a git hook
making them prerequisites to commit or
push.
© Copyright 2016 Coveros, Inc. All rights reserved.
Testing Tools
● Git Branching
○ Let the branch name decide if the CI
stack will run the changes.
○ You may want to use a prefix CI-
branchname
© Copyright 2016 Coveros, Inc. All rights reserved.
Testing Tools - Jenkins Master
● Jenkins master only monitors git.
○ Container on slave in the cloud for quick
tests.
○ VMs in cloud for executing tests in a
production like system.
■ Template AMI matches target machine.
○ All “work” takes place off the master to allow
testing in parallel.
● Create Jenkins jobs to capture production
templates post deployment. (AMI or docker
image)
© Copyright 2016 Coveros, Inc. All rights reserved.
Testing Tools - Developer Workstation
● Provide an easy to install package that includes:
○ Tools - Chefspec, Foodcritic, etc…
○ Docker settings.
○ Access to a docker repository.
○ Templates to create new cookbooks
● Enough memory and CPU to run the tools.
● DO NOT ALLOW COOKBOOK UPLOAD PRIVILEGES!!!!!
● DO NOT ALLOW MERGE TO MASTER PRIVILEGES!!!!!
● The ability for a developer to find mistakes locally is the
most cost effective testing technique available to an
organization. (Short Feedback Loop)
© Copyright 2016 Coveros, Inc. All rights reserved.
Transitioning to the CI Approach
● From the previous slides we have the tools to create
an method for retrofitting a CI driven approach to an
existing Chef infrastructure.
● On a separate branch create cookbooks that install
a piece of the production stack on a server or
container.
● On a feature branch develop just the chef code
needed to deploy your custom application.
● Slowly merge the two once per iteration. Merge one
item from the stack branch and merge your install
code to master.
© Copyright 2016 Coveros, Inc. All rights reserved.
Transitioning to the CI Approach
● Do not try to boil the ocean.
● Start with installing the application code.
● Move up to controlling the application stack
one layer at a time.
● This maps to Agile sprints and iterations.
● Cookbooks should be idempotent.
Master (What is in Chef Server)
Install Code
(Feature
Branch)
Install Code
(Feature
Branch)
Install Code
(Feature
Branch)
Install Code
(Feature
Branch)
Install Code
(Feature
Branch)
Infrastructure or Application Stack Cookbooks (Apache, Tomcat, etc.)
Test
Here
Test
Here
Test
Here
Test
Here
© Copyright 2016 Coveros, Inc. All rights reserved.
Metrics
● Failed Merges
○ How many times did a developer cause a
potential merge conflict?
● Static analysis thresholds
○ How many times did a commit fail?
● Failed rspec tests.
● Failed functional tests.
● How long is the component down during
upgrade.
© Copyright 2016 Coveros, Inc. All rights reserved.
Docker and Cloud
● Docker
○ Can be very fast
○ Need a local Docker repository.
● Cloud
○ You can use a mirror of production
environment.
○ Need to find a way to clone VMs without
downtime or cluster components.
● If production uses docker this is a moot
point, just use docker.
© Copyright 2016 Coveros, Inc. All rights reserved.
Discussion Points
● Tool chain can be complicated.
○ If you already invested in CI you have a sunk cost
with many of the tools already.
● Two major types of transitions:
○ Introducing CI to chef.
○ Introducing Chef and CI to a project.
● Start small, big bang automation is high risk.
● Make the quality gates automated and give the
developers the answer key, don’t change the test, and
let Jenkins proctor the exam.
● Allocate time to sync production changes to testing
images.
© Copyright 2016 Coveros, Inc. All rights reserved.
What Problems Did We Solve?
● Version management - The git cookbook version linkage
provides change traceability. This is enforced by Jenkins.
● Enforcing testing in general for Infrastructure - By ceeding
cookbook upload control to Jenkins we can have a
minimal set of quality standards for all deployments and
changes.
● Making Testing accessible to the developers - By putting a
framework at their fingertips. This makes it easier for
developers to follow the process than circumvent the
process.
● Provide testing metrics so cookbook quality can be
analyzed.
● Provided an automated testing framework to provide quick
feedback on integration errors.
● Disposable infrastructure for rapidly changing server state.
© Copyright 2016 Coveros, Inc. All rights reserved.
What Problems Didn’t We Solve?
● Adoption
○ Change it hard, things can be done to ease
the transition but it cannot be forced. You
still have to convince developers the value
proposition of writing the tests.
● Integration errors
○ While we can find them faster, there is no
tool I know of that can predict code
interaction accurately.
© Copyright 2016 Coveros, Inc. All rights reserved.
Thoughts? Questions?
Thank you for your time.

More Related Content

What's hot

Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Ohad Basan
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
Knoldus Inc.
 
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
 
SkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid CloudSkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid Cloud
Vlad Kuusk
 
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
Marcin Grzejszczak
 
AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?
Rob Brown
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
ciberkleid
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
Crevise Technologies
 
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesDevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
Centric Consulting
 
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsJournée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Publicis Sapient Engineering
 
Continuous Testing using Shippable and Docker
Continuous Testing using Shippable and DockerContinuous Testing using Shippable and Docker
Continuous Testing using Shippable and Docker
Mukta Aphale
 
Continuous Deployment to the cloud
Continuous Deployment to the cloudContinuous Deployment to the cloud
Continuous Deployment to the cloud
VMware Tanzu
 
SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8Rajwinder Singh
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
Cprime
 
Building a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and PuppetBuilding a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and Puppet
smeunier114
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
Mandi Walls
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
Edureka!
 
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
Jean-Charles JOREL
 
"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
Innovation Roots
 
Continuous Testing and New Tools for Automation - Presentation from StarWest ...
Continuous Testing and New Tools for Automation - Presentation from StarWest ...Continuous Testing and New Tools for Automation - Presentation from StarWest ...
Continuous Testing and New Tools for Automation - Presentation from StarWest ...
Sauce Labs
 

What's hot (20)

Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
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
 
SkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid CloudSkyBase - a Devops Platform for Hybrid Cloud
SkyBase - a Devops Platform for Hybrid Cloud
 
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
 
AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesDevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
 
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec JenkinsJournée DevOps : De l'intégration continue au déploiement continu avec Jenkins
Journée DevOps : De l'intégration continue au déploiement continu avec Jenkins
 
Continuous Testing using Shippable and Docker
Continuous Testing using Shippable and DockerContinuous Testing using Shippable and Docker
Continuous Testing using Shippable and Docker
 
Continuous Deployment to the cloud
Continuous Deployment to the cloudContinuous Deployment to the cloud
Continuous Deployment to the cloud
 
SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
 
Building a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and PuppetBuilding a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and Puppet
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
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
 
"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
 
Continuous Testing and New Tools for Automation - Presentation from StarWest ...
Continuous Testing and New Tools for Automation - Presentation from StarWest ...Continuous Testing and New Tools for Automation - Presentation from StarWest ...
Continuous Testing and New Tools for Automation - Presentation from StarWest ...
 

Similar to Continuous Integration Testing Techniques to Improve Chef Cookbook Quality

DevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best PracticesDevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best Practices
QBurst
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Richard Bullington-McGuire
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
Lars Rosenquist
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
Lars Rosenquist
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
Inductive Automation
 
Dev ops presentation
Dev ops presentationDev ops presentation
Dev ops presentation
Ahmed Kamel
 
Continuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and JenkinsContinuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and Jenkins
SOASTA
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weaveworks
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
ciberkleid
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The Cloud
Marcin Grzejszczak
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
Drew Hannay
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
VMware Tanzu
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
Anatoliy Okhotnikov
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
Eklove Mohan
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...
DevOps Enterprise Summmit
 
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the Clouds
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the CloudsDOES14 - David Ashman - Blackboard Learn - Keep Your Head in the Clouds
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the Clouds
Gene Kim
 
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
VMware Tanzu
 
Mastering DevOps With Oracle
Mastering DevOps With OracleMastering DevOps With Oracle
Mastering DevOps With Oracle
Kelly Goetsch
 
Using DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the CloudUsing DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the Cloud
TechWell
 

Similar to Continuous Integration Testing Techniques to Improve Chef Cookbook Quality (20)

DevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best PracticesDevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best Practices
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
Dev ops presentation
Dev ops presentationDev ops presentation
Dev ops presentation
 
Continuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and JenkinsContinuous Load Testing with CloudTest and Jenkins
Continuous Load Testing with CloudTest and Jenkins
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The Cloud
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
 
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...
 
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the Clouds
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the CloudsDOES14 - David Ashman - Blackboard Learn - Keep Your Head in the Clouds
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the Clouds
 
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
 
Mastering DevOps With Oracle
Mastering DevOps With OracleMastering DevOps With Oracle
Mastering DevOps With Oracle
 
Using DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the CloudUsing DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the Cloud
 

More from Josiah Renaudin

Solve Everyday IT Problems with DevOps
Solve Everyday IT Problems with DevOpsSolve Everyday IT Problems with DevOps
Solve Everyday IT Problems with DevOps
Josiah Renaudin
 
End-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of TestingEnd-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of Testing
Josiah Renaudin
 
Product Management: The Innovation Glue for the Lean Enterprise
Product Management: The Innovation Glue for the Lean EnterpriseProduct Management: The Innovation Glue for the Lean Enterprise
Product Management: The Innovation Glue for the Lean Enterprise
Josiah Renaudin
 
Slay the Dragons of Agile Measurement
Slay the Dragons of Agile MeasurementSlay the Dragons of Agile Measurement
Slay the Dragons of Agile Measurement
Josiah Renaudin
 
Blending Product Discovery and Product Delivery
Blending Product Discovery and Product DeliveryBlending Product Discovery and Product Delivery
Blending Product Discovery and Product Delivery
Josiah Renaudin
 
Determining Business Value in Agile Development
Determining Business Value in Agile DevelopmentDetermining Business Value in Agile Development
Determining Business Value in Agile Development
Josiah Renaudin
 
Three Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile EnterpriseThree Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile Enterprise
Josiah Renaudin
 
Internet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of MobileInternet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of Mobile
Josiah Renaudin
 
How to Do Kick-Ass Software Development
How to Do Kick-Ass Software DevelopmentHow to Do Kick-Ass Software Development
How to Do Kick-Ass Software Development
Josiah Renaudin
 
The Power of an Agile Mindset
The Power of an Agile MindsetThe Power of an Agile Mindset
The Power of an Agile Mindset
Josiah Renaudin
 
DevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsDevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software Organizations
Josiah Renaudin
 
Uncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data ProfilingUncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Josiah Renaudin
 
Build a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation FrameworkBuild a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation Framework
Josiah Renaudin
 
Don’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation StrategyDon’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Josiah Renaudin
 
Testing Lessons from the Land of Make Believe
Testing Lessons from the Land of Make BelieveTesting Lessons from the Land of Make Believe
Testing Lessons from the Land of Make Believe
Josiah Renaudin
 
Finding Success with Test Process Improvement
Finding Success with Test Process ImprovementFinding Success with Test Process Improvement
Finding Success with Test Process Improvement
Josiah Renaudin
 
Git and GitHub for Testers
Git and GitHub for TestersGit and GitHub for Testers
Git and GitHub for Testers
Josiah Renaudin
 
Stay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity CurveStay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity Curve
Josiah Renaudin
 
The Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelThe Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in Parallel
Josiah Renaudin
 
Testing at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and HowTesting at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and How
Josiah Renaudin
 

More from Josiah Renaudin (20)

Solve Everyday IT Problems with DevOps
Solve Everyday IT Problems with DevOpsSolve Everyday IT Problems with DevOps
Solve Everyday IT Problems with DevOps
 
End-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of TestingEnd-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of Testing
 
Product Management: The Innovation Glue for the Lean Enterprise
Product Management: The Innovation Glue for the Lean EnterpriseProduct Management: The Innovation Glue for the Lean Enterprise
Product Management: The Innovation Glue for the Lean Enterprise
 
Slay the Dragons of Agile Measurement
Slay the Dragons of Agile MeasurementSlay the Dragons of Agile Measurement
Slay the Dragons of Agile Measurement
 
Blending Product Discovery and Product Delivery
Blending Product Discovery and Product DeliveryBlending Product Discovery and Product Delivery
Blending Product Discovery and Product Delivery
 
Determining Business Value in Agile Development
Determining Business Value in Agile DevelopmentDetermining Business Value in Agile Development
Determining Business Value in Agile Development
 
Three Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile EnterpriseThree Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile Enterprise
 
Internet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of MobileInternet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of Mobile
 
How to Do Kick-Ass Software Development
How to Do Kick-Ass Software DevelopmentHow to Do Kick-Ass Software Development
How to Do Kick-Ass Software Development
 
The Power of an Agile Mindset
The Power of an Agile MindsetThe Power of an Agile Mindset
The Power of an Agile Mindset
 
DevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsDevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software Organizations
 
Uncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data ProfilingUncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data Profiling
 
Build a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation FrameworkBuild a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation Framework
 
Don’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation StrategyDon’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
 
Testing Lessons from the Land of Make Believe
Testing Lessons from the Land of Make BelieveTesting Lessons from the Land of Make Believe
Testing Lessons from the Land of Make Believe
 
Finding Success with Test Process Improvement
Finding Success with Test Process ImprovementFinding Success with Test Process Improvement
Finding Success with Test Process Improvement
 
Git and GitHub for Testers
Git and GitHub for TestersGit and GitHub for Testers
Git and GitHub for Testers
 
Stay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity CurveStay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity Curve
 
The Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelThe Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in Parallel
 
Testing at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and HowTesting at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and How
 

Recently uploaded

Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 

Recently uploaded (20)

Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 

Continuous Integration Testing Techniques to Improve Chef Cookbook Quality

  • 1. W11   DevOps  &  Testing   5/4/16  13:45   Continuous  Integration  Testing   Techniques  to  Improve  Chef  Cookbook   Quality   Presented  by:   Glenn  Buckholz   Coveros,  Inc.   Brought  to  you  by:     350  Corporate  Way,  Suite  400,  Orange  Park,  FL  32073   888-268-8770 904-278-0524 info@techwell.com http://www.stareast.techwell.com/
  • 2. Glenn  Buckholz   Coveros,  Inc.   With  fifteen  years  of  industry  experience,  Glenn  Buckholz  leads  continuous   integration  and  deployment  automation  efforts  at  Coveros.  His  career  began  as  a   consultant  implementing  automated  test  frameworks  and  introducing  the   concept  of  change  management  to  many,  many  projects.  Glenn  then  decided  to   become  a  part  of  honest  society  and  settled  down  at  the  Public  Company   Accounting  Oversight  Board  as  their  full8 time  enterprise  change  manager.   Several  years  later,  he  joined  Coveros,  where  he  specializes  in  implementing  agile   practices  and  CI,  and  engineering  configuration  management  instead  of  simply   documenting  it.  
  • 3. © Copyright 2016 Coveros, Inc. All rights reserved. Continuous Integration Testing Techniques to Improve Chef Cookbook Quality STAREAST – 04 May 2016 Glenn Buckholz glenn.buckholz@coveros.com
  • 4. © Copyright 2016 Coveros, Inc. All rights reserved. Agenda •What did I do? •What is problem? •What are the needs? •Demo •Architecture •Workflow •Testing Techniques and Tools •Metrics? •Docker and Cloud •Discussion
  • 5. © Copyright 2016 Coveros, Inc. All rights reserved. What did I do? ● Used a modern CI/CD toolchain to apply continuous integration testing techniques to Chef code (CI): ○ Static analysis ○ Chefspec testing ○ Automated Functional Testing ● Introduces the idea of automatically making cookbooks available when they are ready (CD). ○ There is still a human gate between available and in use by way of version pinning.
  • 6. © Copyright 2016 Coveros, Inc. All rights reserved. What is the problem? ● Infrastructure as Code is currently the wild west with little formal testing methodology. ● Chef lacks coherent CM on its own. ○ Cookbook versions and freezing are not enough. ● No quick way to advance a piece of infrastructure from one state to another and back for purposes of testing. ● No minimal standards and requirements on cookbook functionality.
  • 7. © Copyright 2016 Coveros, Inc. All rights reserved. What are the needs? YOU ARE CHANGING THE TIRE AT 55MPH AND CAN’T STOP!!! ● Find flaws early. ● Ability to test pieces of an architecture without having to have a whole system. ○ Unit testing system components. ● Simulate the effect of a deploy on a running system. ● Dashboarding so you can trend code quality.
  • 8. © Copyright 2016 Coveros, Inc. All rights reserved. Definitions ● Hands Off Deploy - Deployment that is completely driven by Chef or some other infrastructure tool. ● Static Analysis - evaluation of the code without execution. ● Feedback loop - The events between when a developer commits their code and results can be observed. ● Application Code - The custom or home grown software the current IT organization is curating.
  • 9. © Copyright 2016 Coveros, Inc. All rights reserved. Demo
  • 10. © Copyright 2016 Coveros, Inc. All rights reserved. Architecture Local Git Branch Chefspec Test Kitchen Food Critic Developer Workstation Docker Container Binary Repository Docker Repository Local Testing Docker Container Upload Cookbook
  • 11. © Copyright 2016 Coveros, Inc. All rights reserved. Workflow 1. Clone master branch on the developer machine. 2. Make changes and run static analysis. 3. Run Chefspec and test kitchen locally on a docker container. 4. Push changes to remote branch. 5. Jenkins detects changes and checks out branch onto a slave node.
  • 12. © Copyright 2016 Coveros, Inc. All rights reserved. Workflow 6. Jenkins merges the code with master locally. 7. Chef reruns the static analysis. 8. Chef reruns Chefspec and test kitchen. 9. Results and metrics are recorded. 10.Successful tests see code merged into master. 11.Cookbooks are uploaded to the chef server. 12.After the code is executed in production, AMI and Docker containers are automatically updated from production. Steps 8-9 automate integration testing
  • 13. © Copyright 2016 Coveros, Inc. All rights reserved. Reuse of well known patterns ● Feature Branches ○ Small bite sized changes. ● Automated Merging ○ Let the Jenkins objectively merge the code after certain minimum standards are achieved by the developer. ● Local tests that mirror a golden standard ○ Give the developers a cheat sheet. ● Short feedback loops. ● Auto Promotion ○ Let Jenkins keep the working cookbooks in sync with SCM Smaller changes are more likely to make it through the pipeline.
  • 14. © Copyright 2016 Coveros, Inc. All rights reserved. Testing Techniques ● Tabula Rasa ○ Start with a base image ○ Apply Security Hardening ○ Install stack fresh ○ Deploy application code ○ Run tests ● Production Approximation ○ Start with a clone from production ○ Run cookbooks ■ Only changes are executed ○ Run test
  • 15. © Copyright 2016 Coveros, Inc. All rights reserved. Testing Techniques ● Test in parallel ○ Do not block on critical resources clone them. ○ VMs and containers are cheap, create one for every commit you want to test. ○ Make unit and integration test cases isolated. (Script system state for each test case do not rely on other tests) ● Test local ○ Very short feedback loop for developers. ○ Reduces most pipeline failures to integration errors.
  • 16. © Copyright 2016 Coveros, Inc. All rights reserved. Testing Tools ● Unit Testing ○ chefspec - extension of Rspec ● Functional Testing ○ BATS or chefspec ● Static Analysis ○ Foodcritic - lint like ● Git hooks ○ Make certain static tests run as a git hook making them prerequisites to commit or push.
  • 17. © Copyright 2016 Coveros, Inc. All rights reserved. Testing Tools ● Git Branching ○ Let the branch name decide if the CI stack will run the changes. ○ You may want to use a prefix CI- branchname
  • 18. © Copyright 2016 Coveros, Inc. All rights reserved. Testing Tools - Jenkins Master ● Jenkins master only monitors git. ○ Container on slave in the cloud for quick tests. ○ VMs in cloud for executing tests in a production like system. ■ Template AMI matches target machine. ○ All “work” takes place off the master to allow testing in parallel. ● Create Jenkins jobs to capture production templates post deployment. (AMI or docker image)
  • 19. © Copyright 2016 Coveros, Inc. All rights reserved. Testing Tools - Developer Workstation ● Provide an easy to install package that includes: ○ Tools - Chefspec, Foodcritic, etc… ○ Docker settings. ○ Access to a docker repository. ○ Templates to create new cookbooks ● Enough memory and CPU to run the tools. ● DO NOT ALLOW COOKBOOK UPLOAD PRIVILEGES!!!!! ● DO NOT ALLOW MERGE TO MASTER PRIVILEGES!!!!! ● The ability for a developer to find mistakes locally is the most cost effective testing technique available to an organization. (Short Feedback Loop)
  • 20. © Copyright 2016 Coveros, Inc. All rights reserved. Transitioning to the CI Approach ● From the previous slides we have the tools to create an method for retrofitting a CI driven approach to an existing Chef infrastructure. ● On a separate branch create cookbooks that install a piece of the production stack on a server or container. ● On a feature branch develop just the chef code needed to deploy your custom application. ● Slowly merge the two once per iteration. Merge one item from the stack branch and merge your install code to master.
  • 21. © Copyright 2016 Coveros, Inc. All rights reserved. Transitioning to the CI Approach ● Do not try to boil the ocean. ● Start with installing the application code. ● Move up to controlling the application stack one layer at a time. ● This maps to Agile sprints and iterations. ● Cookbooks should be idempotent. Master (What is in Chef Server) Install Code (Feature Branch) Install Code (Feature Branch) Install Code (Feature Branch) Install Code (Feature Branch) Install Code (Feature Branch) Infrastructure or Application Stack Cookbooks (Apache, Tomcat, etc.) Test Here Test Here Test Here Test Here
  • 22. © Copyright 2016 Coveros, Inc. All rights reserved. Metrics ● Failed Merges ○ How many times did a developer cause a potential merge conflict? ● Static analysis thresholds ○ How many times did a commit fail? ● Failed rspec tests. ● Failed functional tests. ● How long is the component down during upgrade.
  • 23. © Copyright 2016 Coveros, Inc. All rights reserved. Docker and Cloud ● Docker ○ Can be very fast ○ Need a local Docker repository. ● Cloud ○ You can use a mirror of production environment. ○ Need to find a way to clone VMs without downtime or cluster components. ● If production uses docker this is a moot point, just use docker.
  • 24. © Copyright 2016 Coveros, Inc. All rights reserved. Discussion Points ● Tool chain can be complicated. ○ If you already invested in CI you have a sunk cost with many of the tools already. ● Two major types of transitions: ○ Introducing CI to chef. ○ Introducing Chef and CI to a project. ● Start small, big bang automation is high risk. ● Make the quality gates automated and give the developers the answer key, don’t change the test, and let Jenkins proctor the exam. ● Allocate time to sync production changes to testing images.
  • 25. © Copyright 2016 Coveros, Inc. All rights reserved. What Problems Did We Solve? ● Version management - The git cookbook version linkage provides change traceability. This is enforced by Jenkins. ● Enforcing testing in general for Infrastructure - By ceeding cookbook upload control to Jenkins we can have a minimal set of quality standards for all deployments and changes. ● Making Testing accessible to the developers - By putting a framework at their fingertips. This makes it easier for developers to follow the process than circumvent the process. ● Provide testing metrics so cookbook quality can be analyzed. ● Provided an automated testing framework to provide quick feedback on integration errors. ● Disposable infrastructure for rapidly changing server state.
  • 26. © Copyright 2016 Coveros, Inc. All rights reserved. What Problems Didn’t We Solve? ● Adoption ○ Change it hard, things can be done to ease the transition but it cannot be forced. You still have to convince developers the value proposition of writing the tests. ● Integration errors ○ While we can find them faster, there is no tool I know of that can predict code interaction accurately.
  • 27. © Copyright 2016 Coveros, Inc. All rights reserved. Thoughts? Questions? Thank you for your time.