Continuous Delivery of your infrastructure · Why ops like to package Packages give you features...
Transcript of Continuous Delivery of your infrastructure · Why ops like to package Packages give you features...
![Page 1: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/1.jpg)
Continuous Delivery of your Continuous Delivery of your infrastructureinfrastructure
Christophe Vanlancker
@Carroarmato0
![Page 2: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/2.jpg)
Christophe VanlanckerChristophe Vanlancker
● Internal operations and consultingInternal operations and consulting● MentorMentor● Kris couldn’t make it so I ‘s/Kris/Christophe/g’Kris couldn’t make it so I ‘s/Kris/Christophe/g’
![Page 3: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/3.jpg)
Todays GoalsTodays Goals● A reproducable way to deploy and upgrade A reproducable way to deploy and upgrade
/etc/puppet/etc/puppet
● With 10+ environments in With 10+ environments in /etc/puppet/environments/etc/puppet/environments
● AutomaticallyAutomatically
● FastFast
● ConsistentConsistent
● ContinuouslyContinuously
![Page 4: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/4.jpg)
What's this devops thing What's this devops thing anyhow ? anyhow ?
![Page 5: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/5.jpg)
C(L)AMSC(L)AMS● CultureCulture
● (Lean)(Lean)
● AutomationAutomation
● MeasurementMeasurement
● SharingSharing
Damon Edwards and John WillisDamon Edwards and John Willis
Gene KimGene Kim
![Page 6: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/6.jpg)
![Page 7: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/7.jpg)
devops (<)> continuous delivery devops (<)> continuous delivery
![Page 8: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/8.jpg)
NirvanaNirvanaAn “ecosystem” that supports continuous delivery, from An “ecosystem” that supports continuous delivery, from infrastructure, data and configuration management to infrastructure, data and configuration management to business.business.
Through automation of the build, deployment, and testing Through automation of the build, deployment, and testing process, and improved collaboration between developers, process, and improved collaboration between developers, testers, and operations, delivery teams can get changes testers, and operations, delivery teams can get changes released in a matter of hours — sometimes even minutes–no released in a matter of hours — sometimes even minutes–no matter what the size of a project or the complexity of its code matter what the size of a project or the complexity of its code base.base.
Continuous Delivery , Jez HumbleContinuous Delivery , Jez Humble
![Page 9: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/9.jpg)
![Page 10: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/10.jpg)
![Page 11: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/11.jpg)
How many times a day ?How many times a day ?● 10 @ Flickr10 @ Flickr
● Deployments used to be painDeployments used to be pain
● Nobody dared to deploy a siteNobody dared to deploy a site
● Practice makes perfectPractice makes perfect
● Knowing you can vs constantly doing it Knowing you can vs constantly doing it
![Page 12: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/12.jpg)
" Our job as engineers (and ops, dev-ops, QA, " Our job as engineers (and ops, dev-ops, QA, support, everyone in the company actually) is to support, everyone in the company actually) is to enable the business goals. We strongly feel that enable the business goals. We strongly feel that in order to do that you must have in order to do that you must have the ability to the ability to deploy code quickly and safelydeploy code quickly and safely. Even if the . Even if the business goals are to deploy strongly QA’d code business goals are to deploy strongly QA’d code once a month at 3am (it’s not for us, we push all once a month at 3am (it’s not for us, we push all the time), having a reliable and easy the time), having a reliable and easy deployment should be deployment should be non-negotiablenon-negotiable." ."
Etsy Blog upon releasing DeployinatorEtsy Blog upon releasing Deployinator
http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/
![Page 13: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/13.jpg)
For years we've tolerated humans to make For years we've tolerated humans to make structural manual changes to the infrastructure structural manual changes to the infrastructure our critical applications are running on.our critical applications are running on.
Whilst at the same time demanding those critical Whilst at the same time demanding those critical applications to go through rigid test scenarios.applications to go through rigid test scenarios.
Who let this happen ?Who let this happen ?
![Page 14: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/14.jpg)
Infrastructure as CodeInfrastructure as Code● Treat configuration automation as code Treat configuration automation as code
● Development best practicesDevelopment best practices
• Model your infrastructureModel your infrastructure
• Version your cookbooks / manifestsVersion your cookbooks / manifests
• Test your cookbooks/ manifestsTest your cookbooks/ manifests
• Dev/ test /uat / prod for your infraDev/ test /uat / prod for your infra
● Model your infrastructureModel your infrastructure
● A working service = automated ( Application Code + A working service = automated ( Application Code + Infrastructure Code + Security + Monitoring )Infrastructure Code + Security + Monitoring )
![Page 15: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/15.jpg)
Version all the thingsVersion all the thingsNo more excuses !No more excuses !• Source code ApplicationSource code Application
• Source code InfrastructureSource code Infrastructure
• BuildsBuilds
• TestsTests
• PipelinesPipelines
• ScriptsScripts
• DocumentationDocumentation
• Monitoring scriptsMonitoring scripts
![Page 16: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/16.jpg)
A random projectA random project
[sdog@mine vagrant-graphite]$ lsmanifests modules README TODO Vagrantfile [sdog@mine vagrant-graphite]$ tree -dL 2.├── manifests│ └── hosts└── modules ├── apache ├── collectd ├── graphite ├── jmxtrans ├── logster ├── statsd └── tattle
10 directories
![Page 17: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/17.jpg)
Unless you understand Unless you understand Git SubmodulesGit Submodules
● Basic git, Basic git,
● No extra tools requiredNo extra tools required
Integrates with other projects too.Integrates with other projects too.
(No need for *-librarian etc ..)(No need for *-librarian etc ..)
![Page 18: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/18.jpg)
Librarian Puppet / r10kLibrarian Puppet / r10k● Insert ugly shell scriptInsert ugly shell script
●
● Even with this in place .. people can still hack Even with this in place .. people can still hack on the PuppetMasteron the PuppetMaster
![Page 19: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/19.jpg)
![Page 20: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/20.jpg)
Software Release Software Release management is not a management is not a
solved problemsolved problem
![Page 21: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/21.jpg)
Librarian Puppet Librarian Puppet ● Hides complexity of submodules Hides complexity of submodules
● Easy if you use Forge ModulesEasy if you use Forge Modules
• Does anyone ? Does anyone ?
• Do you trust the internet to be around Do you trust the internet to be around
● Librarian = Old English for “can't use Librarian = Old English for “can't use submodules”submodules”
● And hmm... which customer uses which patched version again ?And hmm... which customer uses which patched version again ?
![Page 22: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/22.jpg)
Continuous IntegrationContinuous IntegrationContinuous integration (CI) is the practice, in software engineering, of Continuous integration (CI) is the practice, in software engineering, of merging all developer working copies with a shared mainline several times a merging all developer working copies with a shared mainline several times a day. It was first named and proposed as part of extreme programming (XP). Its day. It was first named and proposed as part of extreme programming (XP). Its main aim is to prevent integration problems, referred to as "integration hell" main aim is to prevent integration problems, referred to as "integration hell"
(WikiPedia)(WikiPedia)
Does the app you are deploying still work ?Does the app you are deploying still work ?
Did you break your puppet / chef code ?Did you break your puppet / chef code ?
![Page 23: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/23.jpg)
JenkinsJenkins● Open Source Continuous Integration ServerOpen Source Continuous Integration Server
● A zillion plugins (400)A zillion plugins (400)
● Have developers build stable and deployable Have developers build stable and deployable codecode
● Test Infra code Test Infra code
![Page 24: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/24.jpg)
Jenkins Pipeline Jenkins Pipeline
![Page 25: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/25.jpg)
What's in your Pipeline ?What's in your Pipeline ?
![Page 26: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/26.jpg)
A pipelineA pipeline● Checkout codeCheckout code
● SyntaxSyntax
● StyleStyle
● Code CoverageCode Coverage
● TestsTests
● BuildBuild
● More TestsMore Tests
● Package Package
![Page 27: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/27.jpg)
Syntax and StyleSyntax and Style● Initially , Initially ,
all code, all the timeall code, all the time
● Now,Now,
only the changed codeonly the changed code
● Why not in post Commit Hooks ? Why not in post Commit Hooks ?
![Page 28: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/28.jpg)
Package all the thingsPackage all the things
![Page 29: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/29.jpg)
Artifacts:Artifacts:● Tested artifacts that go through a pipelineTested artifacts that go through a pipeline
application code,application code,
Infra codeInfra code
metadatametadata
teststests
![Page 30: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/30.jpg)
Why ops like to package Why ops like to package ● Packages give you featuresPackages give you features
• Consistency, security, dependenciesConsistency, security, dependencies
● Uniquely identify where files come fromUniquely identify where files come from
•Package or cfg-mgmt Package or cfg-mgmt
● Source repo not always availableSource repo not always available
•Firewall / Cloud etc .. Firewall / Cloud etc ..
● Weird deployment locations , no easy accessWeird deployment locations , no easy access
● Little overhead when you automateLittle overhead when you automate
![Page 31: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/31.jpg)
Jordan Sissel is a Hero !Jordan Sissel is a Hero !
![Page 32: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/32.jpg)
#packaginlove#packaginlove
![Page 33: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/33.jpg)
It's not really packagingIt's not really packaging
• It's an immutable branchIt's an immutable branch
• It's a tracable release artefact It's a tracable release artefact
![Page 34: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/34.jpg)
https://github.com/vStone/jenkins-https://github.com/vStone/jenkins-puppet-scriptspuppet-scripts
● TestsTests
● Packages full tree in Packages full tree in
//etc/puppet/environmeetc/puppet/environments/$environment/nts/$environment/
![Page 35: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/35.jpg)
A pipelineA pipeline● Checkout codeCheckout code
● SyntaxSyntax
● StyleStyle
● Code CoverageCode Coverage
● TestsTests
● BuildBuild
● More TestsMore Tests
● Package Package
● Upload to RepoUpload to Repo
![Page 36: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/36.jpg)
Repository ManagementRepository Management
● PulpPulp
• Pro : MirroringLovePro : MirroringLove
• Con : Mongo, Stability, .debCon : Mongo, Stability, .deb
● Aptly (deb only)Aptly (deb only)
● Prm (missing snapshot features for .rpm)Prm (missing snapshot features for .rpm)
![Page 37: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/37.jpg)
Repository ManagementRepository Management
![Page 38: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/38.jpg)
A pipelineA pipeline● Checkout codeCheckout code
● SyntaxSyntax
● StyleStyle
● Code CoverageCode Coverage
● TestsTests
● BuildBuild
● More TestsMore Tests
● Package Package
● Upload to RepoUpload to Repo
● Deploy on TestDeploy on Test
![Page 39: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/39.jpg)
Repos are SLOWRepos are SLOW● Createrepo is slow.Createrepo is slow.
● Pulp is slowPulp is slow
● Bypass repos , upload straight to appropriate Bypass repos , upload straight to appropriate PuppetMasterPuppetMaster
● Upload to repo for rebootstrappingUpload to repo for rebootstrapping
![Page 40: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/40.jpg)
A pipelineA pipeline● Checkout codeCheckout code
● SyntaxSyntax
● StyleStyle
● Code CoverageCode Coverage
● TestsTests
● BuildBuild
● More TestsMore Tests
● Package Package
● Upload to RepoUpload to Repo
● Deploy on TestDeploy on Test
● Check PuppetrunsCheck Puppetruns
● Check MonitoringCheck Monitoring
![Page 41: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/41.jpg)
Testing = MonitoringTesting = Monitoring● Deploy a host,Deploy a host,
● Add it to the monitoring frameworkAdd it to the monitoring framework
● Add collection toolsAdd collection tools
● Add check definitionsAdd check definitions
● Update the monitoring tool configUpdate the monitoring tool config
FULLY AUTOMATEDFULLY AUTOMATED
![Page 42: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/42.jpg)
A pipelineA pipeline● Checkout codeCheckout code
● SyntaxSyntax
● StyleStyle
● Code CoverageCode Coverage
● TestsTests
● BuildBuild
● More TestsMore Tests
● Package Package
● Upload to RepoUpload to Repo
● Deploy on TestDeploy on Test
● Check PuppetrunsCheck Puppetruns
● Check MonitoringCheck Monitoring
● Promote to UATPromote to UAT
![Page 43: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/43.jpg)
Jenkins Promotion Jenkins Promotion
![Page 44: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/44.jpg)
PipelinesPipelines● Lots of themLots of them
● Similar ones, but not identical onesSimilar ones, but not identical ones
● One project = different deployment One project = different deployment targetstargets
● People move teams expect same People move teams expect same patternspatterns
● Mostly unmaintaned Mostly unmaintaned
![Page 45: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/45.jpg)
Dirty ClickersDirty Clickers
![Page 46: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/46.jpg)
Complex PipelinesComplex Pipelines
![Page 47: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/47.jpg)
Scaling PipelinesScaling Pipelines● Create a Pipeline,Create a Pipeline,
● For job in PipelineFor job in Pipeline
• Create new Job Based on OldJobCreate new Job Based on OldJob
● Update One JobUpdate One Job
● Never refactor the restNever refactor the rest
![Page 48: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/48.jpg)
Generating Jenkins PipelinesGenerating Jenkins Pipelines
● Template the XMLTemplate the XML
● Put it in PuppetPut it in Puppet
• Worked for stable pipelinesWorked for stable pipelines
• KindaKinda
● XML gets rewritten on the flyXML gets rewritten on the fly
![Page 49: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/49.jpg)
JenkinsJobBuilderJenkinsJobBuilder
● First Usable AttemptFirst Usable Attempt
● Python BasedPython Based
● Openstack CommunityOpenstack Community
● Limited FunctionalityLimited Functionality
● Little Adoption / Openstack Little Adoption / Openstack Abandonned itAbandonned it
![Page 50: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/50.jpg)
PipelineDSLPipelineDSL
● Jenkinsfile Jenkinsfile
● Inside a repoInside a repo
● GroovyGroovy
● Limited functionalityLimited functionality
● Initially buggy Initially buggy
● Popular for Easy tasksPopular for Easy tasks
• (straight, no splits etc) (straight, no splits etc)
![Page 51: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/51.jpg)
Jenkins Job DSLJenkins Job DSL
● GroovyGroovy
● FlexibleFlexible
● Well SupportedWell Supported
● Suitable for more complex PipelinesSuitable for more complex Pipelines
![Page 52: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/52.jpg)
SeedjobsSeedjobs● GroovyGroovy
● GitGit
● Rebuild jobs on Rebuild jobs on commitcommit
● Projects in Projects in foldersfolders
![Page 53: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/53.jpg)
Larger CI StacksLarger CI Stacks● Generate Pipelines / Jobs based on config files , Generate Pipelines / Jobs based on config files ,
● Build librariesBuild libraries
• CheckoutJobCheckoutJob
• DeployJobDeployJob
• PackageJobPackageJob
● Use Groovy / JobDSL to generate PipelineDSLUse Groovy / JobDSL to generate PipelineDSL
![Page 54: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/54.jpg)
Testing Multiple VersionsTesting Multiple Versions
● Initial stage tests code on multiple Initial stage tests code on multiple versions versions
• e.g current puppet versione.g current puppet version
• Next puppet version Next puppet version
• Bleeding Edge versionBleeding Edge version
● Only current version breaks buildOnly current version breaks build
● Goal = get all versions greenGoal = get all versions green
![Page 55: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/55.jpg)
Problems solvedProblems solved
● One job per task, no reuse of jobs with different One job per task, no reuse of jobs with different parametersparameters
● All Jobs are in sync, update one = update all All Jobs are in sync, update one = update all
● Centrally managed jobs (git)Centrally managed jobs (git)
![Page 56: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/56.jpg)
Stop Clicking , Write CodeStop Clicking , Write Code
![Page 57: Continuous Delivery of your infrastructure · Why ops like to package Packages give you features • Consistency, security, dependencies Uniquely identify where files come from •Package](https://reader033.fdocuments.net/reader033/viewer/2022042101/5e7dab362672273fc10505a9/html5/thumbnails/57.jpg)
ContactContactKris Buytaert Kris Buytaert [email protected]@inuits.be
Further ReadingFurther Reading@krisbuytaert @krisbuytaert http://www.krisbuytaert.be/blog/http://www.krisbuytaert.be/blog/http://www.inuits.be/http://www.inuits.be/
InuitsInuits
Duboistraat 50Duboistraat 502060 Antwerpen2060 AntwerpenBelgiumBelgium891.514.231891.514.231
+32 475 961221+32 475 961221