This document discusses continuous delivery and DevOps practices using Jenkins and Puppet. It defines DevOps as addressing security at every stage and having high-performing teams that spend less time fixing issues. It also discusses the DevOps trinity of people, processes, and tools. Jenkins Pipelines and infrastructure as code with Puppet are presented as key practices for continuous delivery. The integration of Jenkins and Puppet Enterprise is demonstrated for automating application deployments.
5. Sound familiar?
5
“Why won’t Ops just make this
change? It’s small”
“Don’t the developers know
anything about logging?”
“Why does it take so long for Ops
to deploy this code?”
“Why can’t the developers
build packages?”
“The devs don’t care that this
code doesn’t scale.”
“Ops won’t let us use the latest
Ruby for some reason.”
9. …. except not really though
Product Delivery Process
Problem
Statement
Problem
Prioritization
Design /
Development Deployment Monitoring
Engineering
OpsProduct
management DevOps?DevOps?
DevOps?
28. 28
Software changes
continuously
deployed to live
production
continuous
deployment
Software changes
continuously delivered to
stakeholders in any
environment
continuous
deliverycontinuous integration
Automated commit, build and testing of
code in the development environment
Feedback
Rapid Changes
Discipline
agile
An incremental
approach to
identifying,
prioritizing, and
coordinating feature
development
Development Production / Prod-like Live Production
Env.Stage
Release Deploy Monitor
Upstream (left) Downstream (right)
Define Plan Code Commit Build Non-Func Test Scan Integrate Int. Test Package Deploy Acct. Test Load Test
Change Mgt.
Production
CD and DevOps in Context
28
DevOps → Cultural focus on shared objectives
29. Continuous delivery doesn’t mean every change is
deployed to production ASAP
But with every change it is release ready
(which includes depoyable!)
32. 32
Complex Delivery Pipelines
Delivery of App and Config
Robust and Highly Available
Results Report
SOURCE
CODE
CONTROL
SYSTEM
Code
Commit
</>
Development Production
Continuous Integration/Delivery
Commit Build Test Stage Deploy
P
P
P
Jenkins – #1 Automation Platform for CI àCD
41. 4141
Drive CD with Jenkins Pipeline
Development Production
Commit Build Stage Deploy
? ?
Pipelines Need:
P Branching
P Looping
P Restarts
P Checkpoints
P Manual Input
Sonar Test
Selenium Test
Perf Test
Jenkins Pipeline
42. Pipeline as Code
Introduce “pipeline” as a first class in Jenkins
Codify stages into an explicit Jenkinsfile in your source repository
Resumability/durability of the pipeline state
Extend the DSL with your own steps
github.com/jenkinsci/pipeline-examples
49. Tools & Technologies enable “crossing the chasm”
Normalized
✓ Language and
practice agnostic
✓ Not Dev or Ops
specific
✓ Distributed
Rich Integration
Support
✓ Tools as
microservices
✓ Modular
Automated
✓ Repeatability
✓ Reportability
✓ Flexibility
Confidence In
Downstream
Deliverables
✓ Support supply-
chain
✓ Traceability
✓ Immutability
✓ Measure and report
Scale To
Enterprise
✓ Cross-domain
visibility metrics
✓ Security and
governance
✓ Supported
49
51. The toolchain
… across all technologies.
Version control
Infrastructure
automation
Continuous Integration
Deployment
automation
Monitoring
and
others
…
and
others
…
and
others
…
52. Where to start
Infrastructure as Code
Collaboration IterationFast Feedback Visibility
Infrastructure
Automation
Version Control
& Peer Review
Continuous
Integration &
Delivery
Automated
Testing
Deployment
Automation
53. Infrastructure as code and
continuous delivery pipelines push
quality to the left, getting ever
closer to the keyboard.
54. Push quality left
● Infrastructure code is portable
● Infrastructure code is repeatable
● Puppet is idempotent (same result
regardless of beginning state)
● Puppet is declarative (less DevOoops)
56. Example application
App relies on multiple services that span infrastructure
Glass Fish F5 LB
App API
Kerberos
SSH
Log stash
WebSphere
App API
SSH
Log stash
F5 LB MS SQL
57. Database
HTTP
Example application
Use Puppet language to model your application
WebSphereApp API
SSHLog stash
F5 LB
MS SQL
● Services
● Relationships
● Dependencies
● Instances
– Dev, Staging, Production, etc.
60. Code management
● Know exactly when your Puppet code
deployments are complete
● Control who can deploy code into
what areas with built-in integration to
Role-Based Access Control
Deploy code confidently with a new command line interface and API