Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Chef Continuous Delivery and Jenkins Traceabili...

Chef Continuous Delivery and Jenkins Traceability Plugin Webinar

Slides from the webinar "Continuous Delivery and Pipeline Traceability with Jenkins and Chef". Presented on Thursday, December 18 at 1pm ET

https://pages.cloudbees.com/2014_1218_Webinar_Jenkins_Chef_Reg.html

Video Link posted soon

George Miranda

December 18, 2014
Tweet

More Decks by George Miranda

Other Decks in Programming

Transcript

  1. Continuous Delivery with Chef & Jenkins Using Jenkins, Chef, and

    the Jenkins “Traceability” feature George Miranda Adam Papai Technical Evangelist Sr Software Engineer Chef Software, Inc. Cloudbees
  2. Introductions • George Miranda • Technical Evangelist @Chef • Partner

    Ecosystem Engineer • Recovering SysAdmin • [email protected] • @gmiranda23
  3. Agenda • Brief Introduction to Chef • Managing your Application

    Infrastructure with Chef • Adopting Continuous Delivery patterns • A sample workflow/toolchain using Chef & Jenkins • Challenges when managing application binaries • Demo of the Jenkins Traceability Plugin • Q&A
  4. Chef & Configuration Management Infrastructure as Code • Open framework

    • Describe desired system state • Manage configuration drift • Multi-platform support • Capture full Application Infrastructure configuration in code • Apply that code to bare compute resources http://www.flickr.com/photos/louisb/4555295187/
  5. Infrastructure as Code? Benefits of Full Stack Configuration Management •

    Infrastructure becomes • Versionable • Testable • Repeatable • Programmatically rebuild Infrastructure • Ensure continuity • Allow Dev experimentation on facsimile of Production
  6. Extensibility with Chef
 Adapting to your workflow • Chef makes

    the easy things approachable and the hard things possible • Non-restrictive DSL • Full power of Ruby available to work through edge cases • Open Source development community • Supermarket for custom resources & reusable cookbooks
  7. Scalability with Chef Managing Infrastructure Sprawl • Distribute updates across

    your entire infrastructure from a central source of truth • Manage 100’s/1000’s/10,000’s of nodes with a single Chef Server • Open Source Chef Server • High-Availability • Chef Server Federation • Analytics
  8. Test Driven Infrastructure Assuring service availability with Test-Kitchen • Infrastructure

    is code too: it deserves tests! • Provision Vagrant machines, install Chef, apply your changes, run tests automatically • TDD: Red, green, refactor • Write quality software • Write quality infrastructure
  9. Leveraging Jenkins The road to Continuous Delivery • Build &

    Test software projects continuously • Your entire Application Infrastructure configuration—expressed as code—is a software project too • Monitor execution of externally-run jobs • Set up CI jobs to run test-kitchen • Set up CI jobs to promote Chef code
  10. Drilling Down Further An Example Toolchain • Use Chef to

    manage all Application Infrastructure state via cookbooks • Use Git as a collaborative SCM • Use Jenkins to poll SCM for cookbook updates then initiate builds & tests • Test-Kitchen to run tests on cookbooks
  11. Continuous Delivery Workflow The 1,000 foot view Git Chef Jenkins

    Test Kitchen KEY Cookbook Change (new git branch) Local Dev runs Test Kitchen works Commit Change Push to remote Open Pull Request Initiate Jenkins CI Yes No Code Change Required Pull Request merged by reviewer Jenkins runs Test Kitchen Initiate Jenkins CI Code Review pass/ fail Pass Pass tests pass/ fail notify github Fail Fail Minor Modification Killed notify github Jenkins Build Job Pull Request merged by reviewer incr cookbook version upload frozen cookbook git tag cookbook repo Jenkins Promote Job Integration Environment Testing via Serverspec Update Env Run Chef on Env Test Jenkins Promote Job UAT Environment Testing via Cucumber Update Env Run Chef on Env Test Jenkins Promote Job Production Environment Testing via Ext. Suite Update Env Run Chef on Env Test
  12. Developing Change Locally Things that happen on workstations Cookbook Change

    (new git branch) Local Dev runs Test Kitchen works Commit Change Push to remote Open Pull Request Initiate Jenkins CI Yes No Code Change Required Git Chef Jenkins Test Kitchen KEY
  13. Jenkins Enforces Coding Standards Verification and Code Review Git Chef

    Jenkins Test Kitchen KEY Code Change Required Pull Request merged by reviewer Jenkins runs Test Kitchen Initiate Jenkins CI Code Review pass/ fail Pass Pass tests pass/ fail notify github Fail Fail Minor Modification Killed notify github
  14. Jenkins Promote Jobs Using “Environments” for cookbook release management Git

    Chef Jenkins Test Kitchen KEY Jenkins Build Job Pull Request merged by reviewer incr cookbook version upload frozen cookbook git tag cookbook repo Jenkins Promote Job Integration Environment Testing via Serverspec Update Env Run Chef on Env Test Jenkins Promote Job UAT Environment Testing via Cucumber Update Env Run Chef on Env Test Jenkins Promote Job Production Environment Testing via Ext. Suite Update Env Run Chef on Env Test
  15. Continuous Delivery Workflow From local workstation through Production Git Chef

    Jenkins Test Kitchen KEY Cookbook Change (new git branch) Local Dev runs Test Kitchen works Commit Change Push to remote Open Pull Request Initiate Jenkins CI Yes No Code Change Required Pull Request merged by reviewer Jenkins runs Test Kitchen Initiate Jenkins CI Code Review pass/ fail Pass Pass tests pass/ fail notify github Fail Fail Minor Modification Killed notify github Jenkins Build Job Pull Request merged by reviewer incr cookbook version upload frozen cookbook git tag cookbook repo Jenkins Promote Job Integration Environment Testing via Serverspec Update Env Run Chef on Env Test Jenkins Promote Job UAT Environment Testing via Cucumber Update Env Run Chef on Env Test Jenkins Promote Job Production Environment Testing via Ext. Suite Update Env Run Chef on Env Test
  16. Application Deployment Patterns Managing Artifacts • Application Code updates are

    encapsulated in cookbooks • Cookbooks typically rely on picking up binaries from an artifact repository • Jenkins might be building your artifacts