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

Automating Continuous Delivery using Puppet and...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Automating Continuous Delivery using Puppet and Jenkins

Avatar for madAndroid

madAndroid

June 24, 2015
Tweet

More Decks by madAndroid

Other Decks in Technology

Transcript

  1. What is Continuous Delivery ? • Two essential concepts: •

    - Continuous Integration (CI) • - Continuous Deployment • Popularized by Jez Humble / David Farley • - Continuous Delivery book • Software delivery best practises: • Deploy often: small increments vs big bang • Use VCS / SCM • Automate as much as possible
  2. Continuous … Delivery… … Entails…. continuous… • Integration: CI Pipelines

    (Jenkins / Bamboo / GO)
 Automated testing => QA / UAT => (manual?) testing
 QA => deployment to STG / PRE-PROD / PROD
 Test on each commit/PR, release often
 • Deployment. CD tools
 Config Management: 
 - Puppet / Chef / SaltStack
 Orchestration/Deployment: 
 - MCollective / Capistrano / Packages
  3. • Java • Config in XML • Web console driven

    • Painful to automate Pain-points
  4. Jenkins Job-Builder • Openstack Infra-team • Config in YAML •

    Idempotent • Easy to puppetize/automate • Written in Python
  5. puppet-jenkins_job_builder • Created by OpenTable infra team • Moved to

    puppet-community account • Suffers from stagnation
 • … but it does the trick

  6. Jenkins job_dsl plugin • Programattically create jobs - i.e. rake/ruby/python/

    whatevs .. even bash if you’”⁹re brave ;-)
 • Automation via Groovy DSL
 • Extricated from puppet, i.e. job creation is adhoc
 • Direct control over plugins where necessary
 • Build upon existing toolset
  7. Gaps in the process • Where does it fall short?

    • Missing plugin support in JJB / Job-DSL • Sometimes, shell scripts • Depends on your position on the curve
  8. Demo!! (recorded, so as not to anger the demo gods)

    All resources available on Github @ https://github.com/madAndroid/ puppet_pipeline_demo