SlideShare a Scribd company logo
1 of 47
Download to read offline
Puppet Release
Workflows at Jive
Devon Peters
What is a Release?

2

© Jive confidential
Push to production, always, immediately

3

© Jive confidential
Releases…
•  Software Release Cycle
–  “A software release life cycle is the sum of the stages of development and
maturity for a piece of computer software: ranging from its initial
development to its eventual release…” – Wikipedia

•  Release Management
–  “the process of managing software releases from development stage to
software release” – Wikipedia

•  Release Engineering
–  “Automation of release management throughout all stages of release” – Me

5

© Jive confidential
More Dev in our Ops

RY
ATO
LIG
OB
PS
EVO
D
AGE
IM

6

© Jive confidential
We have formal release management
processes for all of our puppet
Domains

7

© Jive confidential
Different Releases for Different Domains
•  Core puppet
–  All infrastructure
–  Many shared services

•  Hosted puppet
–  Hosted Jive installations
–  Puppet is tied closely to Administration tooling

•  Continuous Deployment
–  New-style services
–  Some infrastructure

8

© Jive confidential
Releasing Core Puppet

9

© Jive confidential
Core Puppet
•  All core infrastructure systems
•  Most shared services
•  Puppet+hiera does everything on these systems (very few
exceptions)
•  Simple deployment environment breakdown
–  Dev, QA, Production (multiple production environments)

•  Dynamic puppet environments
–  ‘production’ puppet environment is default
–  ad-hoc environments are used for testing/staging

•  Use git flow branching strategy

10

© Jive confidential
Git Details
•  Wrappers to simplify and standardize common tasks
–  j-tech (j-new, j-hotfix, j-commit, many more)
–  Tied into Jira and Crucible
–  Feature branches are named after Jira tickets

•  Code Deployments
–  Dev/QA: develop is deployed to ‘production’ puppet environment
–  Prod: master is deployed to ‘production’ puppet environment

12

© Jive confidential
Testing Changes
•  Automated
–  Pre-commit: puppet/erb/ruby/yaml syntax, puppetlint, hiera-gpg

•  Local
–  Vagrant VM
–  Push branch out to dev puppet master

•  Environment Specific
–  Push branch to env-specific puppet master

13

© Jive confidential
Merging Changes
•  j-review
–  Submit a code review of your branch

•  j-commit
–  Merges feature branch to develop
–  Merges hotfix branch to master and develop

•  develop branch is deployed to Dev on commit
–  jenkins

•  develop branch is deployed to QA Mon-Fri @ 10am
–  jenkins

•  If it’s not a hotfix it won’t go to production yet…
–  Technically, this because the change isn’t in the ‘master’ branch yet, but
there’s more to it than that

14

© Jive confidential
Change Control for Production
•  Bi-weekly CC meetings
–  Monday and Thursday

•  Puppet changes go through CC process
–  Hotfixes can be promoted outside of CC process
–  Weekly change windows for high-impact changes
•  If it’s a puppet change, it’s done as a hotfix

•  Puppet release started every Thursday @ 4pm
–  j-release -S: starts a release branch
–  Jenkins runs this, and generates a CCR ticket with all commits
–  Changes are reviewed in Monday CC meeting

•  Puppet release finished every Tuesday
–  j-release -F: finishes a release branch (manual)
–  Jenkins code deployment jobs are triggered manually

15

© Jive confidential
Core Release Overview

16

© Jive confidential
Releasing Hosted Puppet

17

© Jive confidential
Hosted Puppet
•  Nodes that run hosted customer installations
•  Very homogenous
•  Relatively simple puppet code
–  Puppet mostly supplements an in house administration tool (JCA)

•  Deployment environment breakdown
–  Dev, QA, Prod

•  Uses static puppet environments
–  ENC dictates the environment for a given node
–  Jenkins jobs deploy from git to appropriate puppet environment

•  Uses the git flow branching strategy
–  All the same j-tech tools

18

© Jive confidential
Testing Changes
•  Automated
–  Pre-commit: puppet/erb/ruby/yaml syntax, puppetlint, hiera-gpg

•  Get your own installation setup in Dev
–  Commit changes, and don’t walk away till you know they work
•  It’s somewhat acceptable to break dev, but try not to

–  Most OS related changes are just plucked from Core, and were likely tested
more thoroughly there

19

© Jive confidential
Merging Changes
•  j-review
–  Submit a code review of your branch

•  j-commit
–  Merges feature branch to develop
–  Merges hotfix branch to master and develop

•  develop branch is deployed to Dev on commit
–  jenkins
–  make sure you don’t break it

•  develop branch is deployed to QA ad-hoc
–  QA changes are tied to JCA application release QA cycles
–  jenkins

20

© Jive confidential
Creating Releases
•  Puppet releases are typically tied to JCA application releases
–  The app releases every 2 weeks
–  A puppet release could be a part of it

•  Doing a release
–  j-release -A: create, and finish a release branch

21

© Jive confidential
Staged Production Deployments
•  UAT
–  UAT nodes use the same puppet infrastructure as production
–  Jenkins deploys master to the ‘hosted_uat’ puppet environment

•  Production
–  Jenkins deploys master to the ‘hosted’ puppet environment

22

© Jive confidential
Hosted Release Overview

23

© Jive confidential
Continuous Deployment

24

© Jive confidential
CD Overview
•  Deployable
–  Framework for deploying java (and other) services

•  Many java services (over 70)
•  Data Infrastructure
–  Kafka, Hadoop, HBase, SenseiDB, Elasticsearch

•  Other Infrastructure
–  Puppet, Nginx, Sensu, OpenTSDB

•  Gerrit
–  Code reviews are mandatory
–  Branch strategy is still git flow style

•  Complex Puppet Code
•  Complex Deployment Pipeline

25

© Jive confidential
Environment Overview
•  We call them clusters
–  virtual, dev, integ, test, release, preprod, prod

•  We also have geo-specific datacenters
–  local, intinteg, inttest, intrelease, phxpreprod, phxprod, amsprod

•  Hiera hierarchy includes all of these
–  These exist in hiera for other Puppet domains as well

•  Deployable configuration hierarchy includes all of these

26

© Jive confidential
Puppet Details

27

© Jive confidential
Puppet Overview
•  Dedicated puppet master(s) per cluster
•  Puppet agent is run on-demand by the deployment process
•  CD pipeline determines if puppet code can be promoted to the next
cluster
•  “Special” module and hiera trees
–  We don’t want to duplicate everything in Core
–  Developers need the ability to change puppet code or hiera data
–  We setup something we call Puppet for Projects
•  Combines Core puppet code with Project puppet code

28

© Jive confidential
Puppet for Projects - Layout
•  Core puppet
–  Basic layout is:
•  hiera/
•  manifests/
•  modules/

–  manifests/site.pp is basically: hiera_include(‘classes’)
–  Every commit triggers an artifact build job (jenkins)
•  Artifacts are uploaded to a Nexus repo, as puppet-0.0.1-<count>-<committish>

•  Project puppet
–  A project is basically a repo
–  The project repo contains the following directories:
•  puppet/hiera
•  puppet/modules

–  Contains maven configuration for Core puppet artifact and Combined
puppet artifact
29

© Jive confidential
Puppet for Projects – Configuration
•  puppet.conf
–  modulepath = /path/modules:/path/project/modules

•  hiera.yaml
–  project/%{some-hierarchy}
–  %{some-hierarchy}

30

© Jive confidential
Puppet for Projects - Artifact
•  Combined artifact
–  A commit to the puppet code in the project triggers a combined artifact build
–  Artifact contains:
• 
• 
• 
• 
• 

hiera/
hiera/project
manifests/
modules/
project/modules

(from Core artifact)
(from puppet/hiera in the project repo)
(from Core artifact)
(from Core artifact)
(from puppet/modules in the project repo)

–  Module Collisions
•  If a module with the same name exists in both, the project always wins and the
Core module is excluded from the final artifact

31

© Jive confidential
Deployable

32

© Jive confidential
Deployable Framework
•  Provides standardized…
–  Configuration
•  j-config – CLI or service
•  Hierarchical JSON

–  Logging
•  log-publisher service, writes to Logstash

–  Metrics
•  metric-publisher service, writes to OpenTSDB

–  Monitoring
•  Autogenerated sensu checks

–  Deployment
•  Supports multiple run phases

–  Service Management
•  j-status, j-start, j-stop

33

© Jive confidential
Puppet as a Deployable
•  puppetmaster-deployable
–  Target: puppet master
–  puppet tree is packaged into a <release-ver> artifact
–  Artifact is deployed to /etc/puppet/environments/jive_<release-ver> on the
puppet master(s)

•  puppet-deployable
–  Target: all systems
–  j-start executes: puppet agent --environment jive_<release-ver>
–  If puppet fails, the deploy fails and stops

•  <release-ver> is always the version of the artifact being built/deployed
–  0.0.1-<count>-<committish>
–  The deployment process converts the string to a puppet safe string
•  0_0_1_<count>_<committish>

34

© Jive confidential
Deployment Run Phases
•  ops-tools
–  Deploy j-tech first so everything else will work

•  puppetmaster
–  Get out teh codes

•  puppet
–  Run puppet
–  Includes Hadoop, HBase, Zookeeper, Elasticsearch

•  pre
–  Deploy core/base services
–  Includes Kafka, and SenseiDB

•  Main
–  Everything else

35

© Jive confidential
Making a Puppet Change

36

© Jive confidential
Making a Puppet Change – Virtual
•  Vagrant VM
–  It’s big
•  minimum 4CPU, 8GB – for the VM alone

–  Full stack gets deployed and run
•  Hadoop, Kafka, etc, etc, etc – even all 70+ services if you want

–  j-vm -r
•  Fetches proper Core puppet artifact
•  Builds and deploys a puppet tree for vagrant, based on your local git repo
•  Executes vagrant puppet provisioner

–  Once it works on the vm, submit a review to Gerrit

37

© Jive confidential
Making a Puppet Change – Integ
•  Once the review is submitted, jenkins will:
–  Build Artifacts
–  Launch a VM-test job
•  Validating that what you did works on a vagrant VM there

–  Launch an integ deployment
•  Validating that things work in a multi-node non-vagrant environment

–  Comment on your review with Validated +1, or -1 (depending on results)
–  Once other reviewers give you +2 Gerrit will merge your commit
–  Once it’s merged…

38

© Jive confidential
Making a Puppet Change – Test
•  Once the commit is merged, jenkins will:
–  Build artifacts
–  Launch a Test deployment
–  Run more extensive tests
–  If the deployment and all tests pass, it’s ready for the next step

39

© Jive confidential
Making a Puppet Change – Release
•  Daily at 8am all commits that have passed Test are merged from
develop to master
•  Once this happens, jenkins will:
–  Build artifacts
–  Trigger a Release deployment
–  Rerun all of the tests
–  If all tests pass…

40

© Jive confidential
Making a Puppet Change – Preprod
•  If all tests pass, jenkins will:
–  Promote artifacts to preprod Nexus repo
–  Trigger a Preprod deploy
–  At this point, everything should be stable

41

© Jive confidential
Making a Puppet Change – Prod
•  During the next scheduled production release, someone will:
–  Trigger a Prod deploy
–  Currently done manually

42

© Jive confidential
That’s about it…

44

© Jive confidential
Review
•  Core
–  Complex puppet code to manage everything
–  Releases tied to Change Control
–  ~1000 nodes

•  Hosted
–  Relatively simple puppet code
–  Releases tied to Administration tool’s application releases
–  ~14000 nodes

•  Continuous Deployment
–  Complex puppet code
–  Fully Automated Release and Deployment
–  <200 nodes (but growing)
45

© Jive confidential
Thank You!

© Jive confidential

46
Questions?

© Jive confidential

47

More Related Content

What's hot

Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
Ross Snyder
 
Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Puppet
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Bamdad Dashtban
 
State of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DCState of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DC
Puppet
 
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like ServersPuppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
CloudBees
 
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Simplilearn
 

What's hot (20)

Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
 
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a ServiceBuilding and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
 
Auditing/Security with Puppet - PuppetConf 2014
Auditing/Security with Puppet - PuppetConf 2014Auditing/Security with Puppet - PuppetConf 2014
Auditing/Security with Puppet - PuppetConf 2014
 
Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...
 
Linux HA anno 2014
Linux HA anno 2014Linux HA anno 2014
Linux HA anno 2014
 
DevOps, beyond agile
DevOps, beyond agileDevOps, beyond agile
DevOps, beyond agile
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
State of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DCState of Puppet 2013 - Puppet Camp DC
State of Puppet 2013 - Puppet Camp DC
 
DevOp with Me!
DevOp with Me!DevOp with Me!
DevOp with Me!
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)
 
Continuous Deployment: The Dirty Details
Continuous Deployment: The Dirty DetailsContinuous Deployment: The Dirty Details
Continuous Deployment: The Dirty Details
 
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like ServersPuppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
 
Implementing your own Google App Engine
Implementing your own Google App Engine Implementing your own Google App Engine
Implementing your own Google App Engine
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
 
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
 

Similar to Puppet Release Workflows at Jive Software

Enabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source JenkinsEnabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source Jenkins
Masood Jan
 

Similar to Puppet Release Workflows at Jive Software (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.
 
Devops.pptx
Devops.pptxDevops.pptx
Devops.pptx
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Continuous Delivery of Puppet Manifests
Continuous Delivery of Puppet ManifestsContinuous Delivery of Puppet Manifests
Continuous Delivery of Puppet Manifests
 
Puppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for DeploymentsPuppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for Deployments
 
CIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops betterCIbox - OpenSource solution for making your #devops better
CIbox - OpenSource solution for making your #devops better
 
DrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration ToolboxDrupalCon Los Angeles - Continuous Integration Toolbox
DrupalCon Los Angeles - Continuous Integration Toolbox
 
Deploying puppet code at light speed
Deploying puppet code at light speedDeploying puppet code at light speed
Deploying puppet code at light speed
 
Deploying Puppet Code At Light Speed - Puppet Camp Silicon Valley
Deploying Puppet Code At Light Speed - Puppet Camp Silicon ValleyDeploying Puppet Code At Light Speed - Puppet Camp Silicon Valley
Deploying Puppet Code At Light Speed - Puppet Camp Silicon Valley
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deploy
 
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
 
Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...
 
Making the Agile Leap to Continuous Deployment
Making the Agile Leap to Continuous DeploymentMaking the Agile Leap to Continuous Deployment
Making the Agile Leap to Continuous Deployment
 
Continuous Integration as a Way of Life
Continuous Integration as a Way of LifeContinuous Integration as a Way of Life
Continuous Integration as a Way of Life
 
Enabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source JenkinsEnabling Continuous Delivery For Major Retailer using open source Jenkins
Enabling Continuous Delivery For Major Retailer using open source Jenkins
 
How We Use GitHub
How We Use GitHubHow We Use GitHub
How We Use GitHub
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 

More from Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 

More from Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Puppet Release Workflows at Jive Software

  • 1. Puppet Release Workflows at Jive Devon Peters
  • 2. What is a Release? 2 © Jive confidential
  • 3. Push to production, always, immediately 3 © Jive confidential
  • 4.
  • 5. Releases… •  Software Release Cycle –  “A software release life cycle is the sum of the stages of development and maturity for a piece of computer software: ranging from its initial development to its eventual release…” – Wikipedia •  Release Management –  “the process of managing software releases from development stage to software release” – Wikipedia •  Release Engineering –  “Automation of release management throughout all stages of release” – Me 5 © Jive confidential
  • 6. More Dev in our Ops RY ATO LIG OB PS EVO D AGE IM 6 © Jive confidential
  • 7. We have formal release management processes for all of our puppet Domains 7 © Jive confidential
  • 8. Different Releases for Different Domains •  Core puppet –  All infrastructure –  Many shared services •  Hosted puppet –  Hosted Jive installations –  Puppet is tied closely to Administration tooling •  Continuous Deployment –  New-style services –  Some infrastructure 8 © Jive confidential
  • 9. Releasing Core Puppet 9 © Jive confidential
  • 10. Core Puppet •  All core infrastructure systems •  Most shared services •  Puppet+hiera does everything on these systems (very few exceptions) •  Simple deployment environment breakdown –  Dev, QA, Production (multiple production environments) •  Dynamic puppet environments –  ‘production’ puppet environment is default –  ad-hoc environments are used for testing/staging •  Use git flow branching strategy 10 © Jive confidential
  • 11.
  • 12. Git Details •  Wrappers to simplify and standardize common tasks –  j-tech (j-new, j-hotfix, j-commit, many more) –  Tied into Jira and Crucible –  Feature branches are named after Jira tickets •  Code Deployments –  Dev/QA: develop is deployed to ‘production’ puppet environment –  Prod: master is deployed to ‘production’ puppet environment 12 © Jive confidential
  • 13. Testing Changes •  Automated –  Pre-commit: puppet/erb/ruby/yaml syntax, puppetlint, hiera-gpg •  Local –  Vagrant VM –  Push branch out to dev puppet master •  Environment Specific –  Push branch to env-specific puppet master 13 © Jive confidential
  • 14. Merging Changes •  j-review –  Submit a code review of your branch •  j-commit –  Merges feature branch to develop –  Merges hotfix branch to master and develop •  develop branch is deployed to Dev on commit –  jenkins •  develop branch is deployed to QA Mon-Fri @ 10am –  jenkins •  If it’s not a hotfix it won’t go to production yet… –  Technically, this because the change isn’t in the ‘master’ branch yet, but there’s more to it than that 14 © Jive confidential
  • 15. Change Control for Production •  Bi-weekly CC meetings –  Monday and Thursday •  Puppet changes go through CC process –  Hotfixes can be promoted outside of CC process –  Weekly change windows for high-impact changes •  If it’s a puppet change, it’s done as a hotfix •  Puppet release started every Thursday @ 4pm –  j-release -S: starts a release branch –  Jenkins runs this, and generates a CCR ticket with all commits –  Changes are reviewed in Monday CC meeting •  Puppet release finished every Tuesday –  j-release -F: finishes a release branch (manual) –  Jenkins code deployment jobs are triggered manually 15 © Jive confidential
  • 16. Core Release Overview 16 © Jive confidential
  • 17. Releasing Hosted Puppet 17 © Jive confidential
  • 18. Hosted Puppet •  Nodes that run hosted customer installations •  Very homogenous •  Relatively simple puppet code –  Puppet mostly supplements an in house administration tool (JCA) •  Deployment environment breakdown –  Dev, QA, Prod •  Uses static puppet environments –  ENC dictates the environment for a given node –  Jenkins jobs deploy from git to appropriate puppet environment •  Uses the git flow branching strategy –  All the same j-tech tools 18 © Jive confidential
  • 19. Testing Changes •  Automated –  Pre-commit: puppet/erb/ruby/yaml syntax, puppetlint, hiera-gpg •  Get your own installation setup in Dev –  Commit changes, and don’t walk away till you know they work •  It’s somewhat acceptable to break dev, but try not to –  Most OS related changes are just plucked from Core, and were likely tested more thoroughly there 19 © Jive confidential
  • 20. Merging Changes •  j-review –  Submit a code review of your branch •  j-commit –  Merges feature branch to develop –  Merges hotfix branch to master and develop •  develop branch is deployed to Dev on commit –  jenkins –  make sure you don’t break it •  develop branch is deployed to QA ad-hoc –  QA changes are tied to JCA application release QA cycles –  jenkins 20 © Jive confidential
  • 21. Creating Releases •  Puppet releases are typically tied to JCA application releases –  The app releases every 2 weeks –  A puppet release could be a part of it •  Doing a release –  j-release -A: create, and finish a release branch 21 © Jive confidential
  • 22. Staged Production Deployments •  UAT –  UAT nodes use the same puppet infrastructure as production –  Jenkins deploys master to the ‘hosted_uat’ puppet environment •  Production –  Jenkins deploys master to the ‘hosted’ puppet environment 22 © Jive confidential
  • 23. Hosted Release Overview 23 © Jive confidential
  • 25. CD Overview •  Deployable –  Framework for deploying java (and other) services •  Many java services (over 70) •  Data Infrastructure –  Kafka, Hadoop, HBase, SenseiDB, Elasticsearch •  Other Infrastructure –  Puppet, Nginx, Sensu, OpenTSDB •  Gerrit –  Code reviews are mandatory –  Branch strategy is still git flow style •  Complex Puppet Code •  Complex Deployment Pipeline 25 © Jive confidential
  • 26. Environment Overview •  We call them clusters –  virtual, dev, integ, test, release, preprod, prod •  We also have geo-specific datacenters –  local, intinteg, inttest, intrelease, phxpreprod, phxprod, amsprod •  Hiera hierarchy includes all of these –  These exist in hiera for other Puppet domains as well •  Deployable configuration hierarchy includes all of these 26 © Jive confidential
  • 28. Puppet Overview •  Dedicated puppet master(s) per cluster •  Puppet agent is run on-demand by the deployment process •  CD pipeline determines if puppet code can be promoted to the next cluster •  “Special” module and hiera trees –  We don’t want to duplicate everything in Core –  Developers need the ability to change puppet code or hiera data –  We setup something we call Puppet for Projects •  Combines Core puppet code with Project puppet code 28 © Jive confidential
  • 29. Puppet for Projects - Layout •  Core puppet –  Basic layout is: •  hiera/ •  manifests/ •  modules/ –  manifests/site.pp is basically: hiera_include(‘classes’) –  Every commit triggers an artifact build job (jenkins) •  Artifacts are uploaded to a Nexus repo, as puppet-0.0.1-<count>-<committish> •  Project puppet –  A project is basically a repo –  The project repo contains the following directories: •  puppet/hiera •  puppet/modules –  Contains maven configuration for Core puppet artifact and Combined puppet artifact 29 © Jive confidential
  • 30. Puppet for Projects – Configuration •  puppet.conf –  modulepath = /path/modules:/path/project/modules •  hiera.yaml –  project/%{some-hierarchy} –  %{some-hierarchy} 30 © Jive confidential
  • 31. Puppet for Projects - Artifact •  Combined artifact –  A commit to the puppet code in the project triggers a combined artifact build –  Artifact contains: •  •  •  •  •  hiera/ hiera/project manifests/ modules/ project/modules (from Core artifact) (from puppet/hiera in the project repo) (from Core artifact) (from Core artifact) (from puppet/modules in the project repo) –  Module Collisions •  If a module with the same name exists in both, the project always wins and the Core module is excluded from the final artifact 31 © Jive confidential
  • 33. Deployable Framework •  Provides standardized… –  Configuration •  j-config – CLI or service •  Hierarchical JSON –  Logging •  log-publisher service, writes to Logstash –  Metrics •  metric-publisher service, writes to OpenTSDB –  Monitoring •  Autogenerated sensu checks –  Deployment •  Supports multiple run phases –  Service Management •  j-status, j-start, j-stop 33 © Jive confidential
  • 34. Puppet as a Deployable •  puppetmaster-deployable –  Target: puppet master –  puppet tree is packaged into a <release-ver> artifact –  Artifact is deployed to /etc/puppet/environments/jive_<release-ver> on the puppet master(s) •  puppet-deployable –  Target: all systems –  j-start executes: puppet agent --environment jive_<release-ver> –  If puppet fails, the deploy fails and stops •  <release-ver> is always the version of the artifact being built/deployed –  0.0.1-<count>-<committish> –  The deployment process converts the string to a puppet safe string •  0_0_1_<count>_<committish> 34 © Jive confidential
  • 35. Deployment Run Phases •  ops-tools –  Deploy j-tech first so everything else will work •  puppetmaster –  Get out teh codes •  puppet –  Run puppet –  Includes Hadoop, HBase, Zookeeper, Elasticsearch •  pre –  Deploy core/base services –  Includes Kafka, and SenseiDB •  Main –  Everything else 35 © Jive confidential
  • 36. Making a Puppet Change 36 © Jive confidential
  • 37. Making a Puppet Change – Virtual •  Vagrant VM –  It’s big •  minimum 4CPU, 8GB – for the VM alone –  Full stack gets deployed and run •  Hadoop, Kafka, etc, etc, etc – even all 70+ services if you want –  j-vm -r •  Fetches proper Core puppet artifact •  Builds and deploys a puppet tree for vagrant, based on your local git repo •  Executes vagrant puppet provisioner –  Once it works on the vm, submit a review to Gerrit 37 © Jive confidential
  • 38. Making a Puppet Change – Integ •  Once the review is submitted, jenkins will: –  Build Artifacts –  Launch a VM-test job •  Validating that what you did works on a vagrant VM there –  Launch an integ deployment •  Validating that things work in a multi-node non-vagrant environment –  Comment on your review with Validated +1, or -1 (depending on results) –  Once other reviewers give you +2 Gerrit will merge your commit –  Once it’s merged… 38 © Jive confidential
  • 39. Making a Puppet Change – Test •  Once the commit is merged, jenkins will: –  Build artifacts –  Launch a Test deployment –  Run more extensive tests –  If the deployment and all tests pass, it’s ready for the next step 39 © Jive confidential
  • 40. Making a Puppet Change – Release •  Daily at 8am all commits that have passed Test are merged from develop to master •  Once this happens, jenkins will: –  Build artifacts –  Trigger a Release deployment –  Rerun all of the tests –  If all tests pass… 40 © Jive confidential
  • 41. Making a Puppet Change – Preprod •  If all tests pass, jenkins will: –  Promote artifacts to preprod Nexus repo –  Trigger a Preprod deploy –  At this point, everything should be stable 41 © Jive confidential
  • 42. Making a Puppet Change – Prod •  During the next scheduled production release, someone will: –  Trigger a Prod deploy –  Currently done manually 42 © Jive confidential
  • 43.
  • 44. That’s about it… 44 © Jive confidential
  • 45. Review •  Core –  Complex puppet code to manage everything –  Releases tied to Change Control –  ~1000 nodes •  Hosted –  Relatively simple puppet code –  Releases tied to Administration tool’s application releases –  ~14000 nodes •  Continuous Deployment –  Complex puppet code –  Fully Automated Release and Deployment –  <200 nodes (but growing) 45 © Jive confidential
  • 46. Thank You! © Jive confidential 46