SlideShare a Scribd company logo
1 of 53
Download to read offline
Application Deployment Orchestration
with Puppet and Jenkins
Anton Gurov, Chaminda Delpagodage
August 20, 2014
22
About Us
Chaminda Delpagodage
Paydiant Technical Operations Team
Release Engineering, Systems Administration, Automation
linkedin.com/in/chamindad
Anton Gurov
Paydiant Technical Operations Team
Infrastructure, Systems Administration, Security
linkedin.com/in/antongurov
33
Cloud-based mobile wallet solution
Open ecosystem for mobile payments, offers
and loyalty
Completely white-label
“Bank grade” platform of shared services
↘ SaaS
↘ Secure SDKs for iPhone and Android
Top tier investors and well capitalized
44
Paydiant Puppet Use
Puppet Enterprise (PE) users since day one
100% PE coverage of Paydiant platform
↘ PE handles everything after instance bootstrap
Multiple environments actively managed by PE
↘ 4 Puppet Masters in multiple datacenters and security zones
↘ 8 Environments
Licensed node count doubling every year
Estimated by
Year-End
0
100
200
300
400
500
600
700
800
900
Hosts
Nodes under
management
2011 2012 2013 2014 EST
55
Paydiant Puppet Use
‘11-12 – Bi-annual production platform releases
↘ Waterfall – major platform change
↘ Big outage – 1-2 days on the weekend
‘13-14 – Transition to daily/weekly non-
production and monthly production releases
↘ Agile – smaller platform changes
↘ Zero-downtime deployment
↘ 100% Production release success rate since inception
Heavy usage of Puppet Dashboard, Puppet APIs
and Jenkins
66
Puppet Dashboard as data repository
Why Dashboard?
↘ Visual, flexible, powerful (if used right)
↘ Allows for business data edits by teams
unfamiliar with Puppet
↘ Hiera not available at the time
Decided early on to keep Puppet
code and data separate
Came up with our own Dashboard
pattern – “Classes, Parameters
and Supergroups”
Puppet
Module
Code
PuppetDashboard
Business
Data
Puppet
Module
Parameters
77
Puppet Dashboard as data repository
Classes, Parameters and Supergroups pattern overview
class_C
supergroup_type_A
class_Bclass_A
parameters_X parameters_Y parameters_Z…
…
node 1 node 2 node X…node 4node 3
Groups
Nodes
88
Puppet Dashboard as data repository
Classes, Parameters and Supergroups pattern overview
class_C
supergroup_type_B
class_Bclass_A
parameters_X parameters_Y parameters_Z…
…
node 1 node 2 node X…node 4node 3
Groups
Nodes
99
class_B
def: default params
incl:
Puppet Dashboard as data repository
Class building block
class B
class A class B
class_A
def: default params
incl: class A
class_C
def: default params
incl: class C
class C
…
Classes
Groups
Group name prefixed with class_
Contains Puppet class and some default variables/parameters for the class
1010
Puppet Dashboard as data repository
Class building block - example
1111
Puppet Dashboard as data repository
Parameters building block
Group name prefixed with
parameters_
Only contains data and
data overrides
Arbitrary hierarchy levels
Allows for inheritance and
reuse
parameters_X_1
incl:
def: params overrides
def: additional params
parameters_X
def: default params
parameters_X
supergroup_A supergroup_B
parameters_X_2
incl:
def: params overrides
def: additional params
parameters_X
supergroup_C
1212
Puppet Dashboard as data repository
Parameters building block – inheritance example
1313
Puppet Dashboard as data repository
Supergroup building block == server “role”
Group name prefixed with
supergroup_
Contains all the “ingredients” for
the node to configure and define
itself
Node can belong to only one
supergroup (many-to-one)
supergroup_type_A
incl:
def: params overrides (if any)
def: additional params (if any)
class_B
class_A parameters_X
parameters_Z
node 1 node 2
Groups
Nodes
class_B
class_A
parameters_X
parameters_Z
1414
Puppet Dashboard as data repository
Supergroup building block - example
2-3 pages
condensed
1515
Classes, Parameters and Supergroups pattern Pros
All parameters and classes are visible on the Supergroup page
↘ See missing parameters (if inherited “SET ME!” from parent for example)
↘ See parameter clashes (Dashboard will warn if parameter is defined in 2 places)
↘ See exactly where parameter is defined
Allows teams unfamiliar with Puppet to make changes via Dashboard
Arbitrary data hierarchy/inheritance
Data reuse
1616
Classes, Parameters and Supergroups pattern Cons
Version control is difficult
↘ Have to resolve to group cloning/export/import (custom RAKE copy/clone command from Puppet support)
↘ Puppet roadmap to fix this
Dashboard UI could use some help
↘ Too much data on the screen sometimes
↘ Lack of sorting/grouping
Can’t store complex multi-line variables like text blobs
Zero-Downtime Deployment architecture …
v.1
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.1
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.1
parameters_deployment-staging-FE-BankA
paydiant_deployment_bank=STAGING-FRONTEND-A
paydiant_app_operation_mode=LIVE
paydiant_app_version=1
v.1
High-level platform
representation
parameters_deployment-staging-BE-BankA
paydiant_deployment_bank=STAGING-BACKEND-A
paydiant_app_operation_mode=LIVE
paydiant_app_version=1
parameters_deployment-staging-FE-BankB
paydiant_deployment_bank=STAGING-FRONTEND-B
paydiant_app_operation_mode=LIVE
paydiant_app_version=1
parameters_deployment-staging-BE-BankB
paydiant_deployment_bank=STAGING-BACKEND-B
paydiant_app_operation_mode=LIVE
paydiant_app_version=1
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.1
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.1
Disable B(FE+BE)
v.1v.1
parameters_deployment-staging-FE-BankB
paydiant_deployment_bank=STAGING-FRONTEND-B
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=1
parameters_deployment-staging-BE-BankB
paydiant_deployment_bank=STAGING-BACKEND-B
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=1
v.2a
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.1
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.1
Run first phase of database changes
(i.e. adds new stuff &
migrate data)
v.2aDB changes Phase 1
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.2
Upgrade B (FE+BE)
v.2av.2a
parameters_deployment-staging-FE-BankB
paydiant_deployment_bank=STAGING-FRONTEND-B
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=2
parameters_deployment-staging-BE-BankB
paydiant_deployment_bank=STAGING-BACKEND-B
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=2
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.2
Re-enable B (FE+BE)
v.2av.2a
parameters_deployment-staging-FE-BankB
paydiant_deployment_bank=STAGING-FRONTEND-B
paydiant_app_operation_mode=LIVE
paydiant_app_version=2
parameters_deployment-staging-BE-BankB
paydiant_deployment_bank=STAGING-BACKEND-B
paydiant_app_operation_mode=LIVE
paydiant_app_version=2
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.2
Disable A(FE+BE)
v.2av.2a
parameters_deployment-staging-FE-BankA
paydiant_deployment_bank=STAGING-FRONTEND-A
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=1
parameters_deployment-staging-BE-BankA
paydiant_deployment_bank=STAGING-BACKEND-A
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=1
Frontend
Load Balancer
FE-BFE-A
v.2
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.2
FE-BBE-B
v.2
Upgrade A (FE+BE)
v.2av.2a
parameters_deployment-staging-FE-BankA
paydiant_deployment_bank=STAGING-FRONTEND-A
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=2
parameters_deployment-staging-BE-BankA
paydiant_deployment_bank=STAGING-BACKEND-A
paydiant_app_operation_mode=MAINTENANCE
paydiant_app_version=2
Frontend
Load Balancer
FE-BFE-A
v.2
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.2
FE-BBE-B
v.2
Re-enable A (FE+BE)
v.2av.2a
parameters_deployment-staging-FE-BankA
paydiant_deployment_bank=STAGING-FRONTEND-A
paydiant_app_operation_mode=LIVE
paydiant_app_version=2
parameters_deployment-staging-BE-BankA
paydiant_deployment_bank=STAGING-BACKEND-A
paydiant_app_operation_mode=LIVE
paydiant_app_version=2
v.2
Frontend
Load Balancer
FE-BFE-A
v.2
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.2
FE-BBE-B
v.2
Run second phase of database changes
(Cleanup old v.1 data)
v.2DB changes Phase 2
Details of the upgrade sequence …
v.1
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.1
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.1
Putting a set of nodes into
maintenance mode
2929
Putting nodes into maintenance mode
Using LB node health check – http://nodeX:8080/healthcheck.jsp
Puppet ERB template for healthcheck.jsp content
…
…
…
Pseudo code:
Check if “maintenance mode” throw exception
else
If “module A” present
Check if module A is up
If “module B” present
Check if module B is up
…
Throw 503 if any exception caught
3030
Putting nodes into maintenance mode cont.
A parameter group controls the maintenance mode
E.g. Parameter group “parameters_deployment-staging-BankB”
controls “paydiant_app_operation_mode” for the nodes in set FE-B of
the Staging environment
3131
Putting nodes into maintenance mode cont.
Update group parameter using Rake API (as ‘puppet-dashboard’ user)
RACK_ENV=production /opt/puppet/bin/rake -s -X -f /opt/puppet/share/puppet-dashboard/Rakefile
nodegroup:variables [parameters_deployment-stagin-BankB, 'paydiant_app_operation_mode=MAINTENANCE’]
Puppet run-once using MCO (as ‘peadmin’ user)
mco puppet runonce --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B
While loop… check the health check page till all nodes return 503 (i.e. in
maintenance) status
mco shellcmd --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B --cmd=''curl --silent
http://localhost:8080/healthcheck/healthcheck.jsp
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.2
Upgrading applications
on a set of nodes
v.2a
3333
Upgrading Application Version
Disable Puppet agent
mco puppet disable --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B
Stop Tomcat service
mco service tomcat stop --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B
Cleanup exploded Tomcat webapps directory (for sanity)
mco shellcmd --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B --cmd='find $TOMCAT_HOME/webapps/ -
maxdepth 1 -mindepth 1 -type d -exec rm -rf {} ;’
3434
Upgrading Application Version Cont.
Upgrade the application version
RACK_ENV=production /opt/puppet/bin/rake -s -X -f /opt/puppet/share/puppet-dashboard/Rakefile
nodegroup:variables [parameters_deployment-stagin-BankB, ’paydiant_app_version=2’]
Re-enable Puppet
mco puppet enable --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B
Puppet run-once
mco puppet runonce --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.2
Taking a set of nodes out of
maintenance mode
v.2a
3636
Taking nodes out of maintenance mode
Update parameter using Rake API (as ‘puppet-dashboard’ user)
RACK_ENV=production /opt/puppet/bin/rake -s -X -f /opt/puppet/share/puppet-dashboard/Rakefile
nodegroup:variables [parameters_deployment-staging-BankB, 'paydiant_app_operation_mode=LIVE’]
Puppet run-once using MCO (as ‘peadmin’ user)
mco puppet runonce --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B
While loop… check the health check page till all nodes return 200 (i.e. live)
status
mco shellcmd --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B --cmd=''curl --silent
http://localhost:8080/healthcheck/healthcheck.jsp
Frontend
Load Balancer
FE-BFE-A
v.1
FE-BFE-B
v.2
Backend
Load Balancer
FE-BBE-A
v.1
FE-BBE-B
v.2
Switching traffic to
upgraded stack
v.2a
Viewing transition in Splunk across multiple datacenters
Jenkins …
4040
What is Jenkins
Tool to schedule and monitor the execution of repeated jobs
4141
Why Jenkins ?
Configurability
↘ Different types of input parameters
↘ Invoke shell scripts
↘ Post-build actions (automatic/manual)
4242
Why Jenkins ? cont.
Plugin support
↘ More than 600 plugins (https://wiki.jenkins-ci.org/display/JENKINS/Plugins)
↘ Eg. vSphere plugin (stop/start, snapshots, rollbacks…)
↘ Build pipeline plugin
↘ Parameterized remote trigger plugin
4343
Why Jenkins ? cont.
Keeps all your console logs at a single place
↘ No need to hunt for 10 log files on 5 different machines
↘ Visual representation of passed/failed/in-progress status, based on downstream shell scripts or other jobs
4444
Why Jenkins ? cont.
And it’s…
MCO
Rake API
DB FE-BFE-* FE-BBE-*
Source code,
liquibase
change sets
4646
Jenkins – Puppet Integration
4747
Jenkins – Puppet Integration cont.
4848
Jenkins – Puppet Integration cont.
4949
Jenkins – Puppet Integration cont.
5050
Jenkins – Puppet Integration cont.
Jenkins invoke local bash scripts, which in turn use SSH to call;
↘ MCO (as ‘peadmin’ user on Puppet Master)
↘ Rake API (as ‘puppet-dashboard’ user on Puppet Master)
SSH login as ‘peadmin’ and ‘puppet-dashboard’ is password-less, using PKI
↘ Generate RSA keypair for the local Jenkins user, using ssh-keygen command
↘ Append the public key to ~/.ssh/authorized_keys file of ‘peadmin’ and ‘puppet-dashboard’ users, on Puppet Master
MCO special purpose sub commands we use;
↘ puppet
↘ service
↘ shellcmd* (ask your Puppet Enterprise Support for this custom MCO plugin)
5151
Links
Rake API: https://docs.puppetlabs.com/pe/latest/console_rake_api.html
MCO: https://docs.puppetlabs.com/mcollective/reference/basic/basic_cli_usage.html
Jenkins: http://jenkins-ci.org/
Liquibase: http://www.liquibase.org/documentation/index.html
5252
Recap/Takeaways…
Use Puppet Enterprise
↘ Support is awesome (Celia Cottle, Jay Wallace, Ken Johnson, Zachary Stern – you guys rock!)
↘ Gotten help and features from James Turnbull and Nigel Kersten with some early versions of PE
↘ Live management and Mcollective are essential for any self-respecting enterprise
Zero-downtime upgrades
↘ To Dashboard or not to Dashboard?
↘ Database update phases
↘ Managing LB health check monitors dynamically using Puppet
Automation baby steps – don’t boil the ocean
↘ Understand what you are doing before automating it - develop runbooks
↘ Identify manual steps and script some of them
↘ Add scripts to orchestration tool (Jenkins, ServiceNow, whatever else you use in-house)
Thank you.

More Related Content

Similar to Puppet Camp Boston 2014: Orchestrating Infrastructure Change Using Puppet Rake, mcollective, LM and Jenkins (Intermediate)

Uniface 9.7 en PostgreSQL
Uniface 9.7 en PostgreSQLUniface 9.7 en PostgreSQL
Uniface 9.7 en PostgreSQLArjen van Vliet
 
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD Story
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD StoryLondon Adapt or Die: Kubernetes, Containers and Cloud - The MoD Story
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD StoryApigee | Google Cloud
 
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423Giulio Vian
 
Hp0 081 question answers
Hp0 081 question answersHp0 081 question answers
Hp0 081 question answersMarcoMCervantes
 
6048618 cloning-procedure-of-r12-single-tier
6048618 cloning-procedure-of-r12-single-tier6048618 cloning-procedure-of-r12-single-tier
6048618 cloning-procedure-of-r12-single-tierbalaji29
 
Understanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profitUnderstanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profitPascal Rapicault
 
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...Alan Pinstein
 
Linux Desktop Automation
Linux Desktop AutomationLinux Desktop Automation
Linux Desktop AutomationRui Lapa
 
What’s New in Oracle E-Business Suite R12.2 for Database Administrators?
What’s New in Oracle E-Business Suite R12.2 for Database Administrators?What’s New in Oracle E-Business Suite R12.2 for Database Administrators?
What’s New in Oracle E-Business Suite R12.2 for Database Administrators?vasuballa
 
C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4halgig
 
Simplify your professional web development with symfony
Simplify your professional web development with symfonySimplify your professional web development with symfony
Simplify your professional web development with symfonyFrancois Zaninotto
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTKai Zhao
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesGöksel Pırnal
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introductionvstorm83
 
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...Puppet
 
OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015Oro Inc.
 
OpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewOpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewJason Peng
 
멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기
멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기
멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기Yonghwan (Eric) Yoo
 

Similar to Puppet Camp Boston 2014: Orchestrating Infrastructure Change Using Puppet Rake, mcollective, LM and Jenkins (Intermediate) (20)

Uniface 9.7 en PostgreSQL
Uniface 9.7 en PostgreSQLUniface 9.7 en PostgreSQL
Uniface 9.7 en PostgreSQL
 
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD Story
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD StoryLondon Adapt or Die: Kubernetes, Containers and Cloud - The MoD Story
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD Story
 
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423
 
Hp0 081 question answers
Hp0 081 question answersHp0 081 question answers
Hp0 081 question answers
 
6048618 cloning-procedure-of-r12-single-tier
6048618 cloning-procedure-of-r12-single-tier6048618 cloning-procedure-of-r12-single-tier
6048618 cloning-procedure-of-r12-single-tier
 
Understanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profitUnderstanding and extending p2 for fun and profit
Understanding and extending p2 for fun and profit
 
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
 
Linux Desktop Automation
Linux Desktop AutomationLinux Desktop Automation
Linux Desktop Automation
 
What’s New in Oracle E-Business Suite R12.2 for Database Administrators?
What’s New in Oracle E-Business Suite R12.2 for Database Administrators?What’s New in Oracle E-Business Suite R12.2 for Database Administrators?
What’s New in Oracle E-Business Suite R12.2 for Database Administrators?
 
C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4
 
Simplify your professional web development with symfony
Simplify your professional web development with symfonySimplify your professional web development with symfony
Simplify your professional web development with symfony
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoT
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Upgrading 11i E-business Suite to R12 E-business Suite
Upgrading 11i E-business Suite to R12 E-business SuiteUpgrading 11i E-business Suite to R12 E-business Suite
Upgrading 11i E-business Suite to R12 E-business Suite
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...
 
Php unit (eng)
Php unit (eng)Php unit (eng)
Php unit (eng)
 
OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015
 
OpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewOpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology Overview
 
멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기
멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기
멀티리전 & 멀티스테이지 인프라를 위한 모노레포 구축하기
 

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 controlrepoPuppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
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
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
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 codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
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 automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
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 WindowsPuppet
 
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. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
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 ReeuwijkPuppet
 
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 groundPuppet
 
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 SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
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 MaludyPuppet
 

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

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 

Recently uploaded (20)

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Puppet Camp Boston 2014: Orchestrating Infrastructure Change Using Puppet Rake, mcollective, LM and Jenkins (Intermediate)

  • 1. Application Deployment Orchestration with Puppet and Jenkins Anton Gurov, Chaminda Delpagodage August 20, 2014
  • 2. 22 About Us Chaminda Delpagodage Paydiant Technical Operations Team Release Engineering, Systems Administration, Automation linkedin.com/in/chamindad Anton Gurov Paydiant Technical Operations Team Infrastructure, Systems Administration, Security linkedin.com/in/antongurov
  • 3. 33 Cloud-based mobile wallet solution Open ecosystem for mobile payments, offers and loyalty Completely white-label “Bank grade” platform of shared services ↘ SaaS ↘ Secure SDKs for iPhone and Android Top tier investors and well capitalized
  • 4. 44 Paydiant Puppet Use Puppet Enterprise (PE) users since day one 100% PE coverage of Paydiant platform ↘ PE handles everything after instance bootstrap Multiple environments actively managed by PE ↘ 4 Puppet Masters in multiple datacenters and security zones ↘ 8 Environments Licensed node count doubling every year Estimated by Year-End 0 100 200 300 400 500 600 700 800 900 Hosts Nodes under management 2011 2012 2013 2014 EST
  • 5. 55 Paydiant Puppet Use ‘11-12 – Bi-annual production platform releases ↘ Waterfall – major platform change ↘ Big outage – 1-2 days on the weekend ‘13-14 – Transition to daily/weekly non- production and monthly production releases ↘ Agile – smaller platform changes ↘ Zero-downtime deployment ↘ 100% Production release success rate since inception Heavy usage of Puppet Dashboard, Puppet APIs and Jenkins
  • 6. 66 Puppet Dashboard as data repository Why Dashboard? ↘ Visual, flexible, powerful (if used right) ↘ Allows for business data edits by teams unfamiliar with Puppet ↘ Hiera not available at the time Decided early on to keep Puppet code and data separate Came up with our own Dashboard pattern – “Classes, Parameters and Supergroups” Puppet Module Code PuppetDashboard Business Data Puppet Module Parameters
  • 7. 77 Puppet Dashboard as data repository Classes, Parameters and Supergroups pattern overview class_C supergroup_type_A class_Bclass_A parameters_X parameters_Y parameters_Z… … node 1 node 2 node X…node 4node 3 Groups Nodes
  • 8. 88 Puppet Dashboard as data repository Classes, Parameters and Supergroups pattern overview class_C supergroup_type_B class_Bclass_A parameters_X parameters_Y parameters_Z… … node 1 node 2 node X…node 4node 3 Groups Nodes
  • 9. 99 class_B def: default params incl: Puppet Dashboard as data repository Class building block class B class A class B class_A def: default params incl: class A class_C def: default params incl: class C class C … Classes Groups Group name prefixed with class_ Contains Puppet class and some default variables/parameters for the class
  • 10. 1010 Puppet Dashboard as data repository Class building block - example
  • 11. 1111 Puppet Dashboard as data repository Parameters building block Group name prefixed with parameters_ Only contains data and data overrides Arbitrary hierarchy levels Allows for inheritance and reuse parameters_X_1 incl: def: params overrides def: additional params parameters_X def: default params parameters_X supergroup_A supergroup_B parameters_X_2 incl: def: params overrides def: additional params parameters_X supergroup_C
  • 12. 1212 Puppet Dashboard as data repository Parameters building block – inheritance example
  • 13. 1313 Puppet Dashboard as data repository Supergroup building block == server “role” Group name prefixed with supergroup_ Contains all the “ingredients” for the node to configure and define itself Node can belong to only one supergroup (many-to-one) supergroup_type_A incl: def: params overrides (if any) def: additional params (if any) class_B class_A parameters_X parameters_Z node 1 node 2 Groups Nodes class_B class_A parameters_X parameters_Z
  • 14. 1414 Puppet Dashboard as data repository Supergroup building block - example 2-3 pages condensed
  • 15. 1515 Classes, Parameters and Supergroups pattern Pros All parameters and classes are visible on the Supergroup page ↘ See missing parameters (if inherited “SET ME!” from parent for example) ↘ See parameter clashes (Dashboard will warn if parameter is defined in 2 places) ↘ See exactly where parameter is defined Allows teams unfamiliar with Puppet to make changes via Dashboard Arbitrary data hierarchy/inheritance Data reuse
  • 16. 1616 Classes, Parameters and Supergroups pattern Cons Version control is difficult ↘ Have to resolve to group cloning/export/import (custom RAKE copy/clone command from Puppet support) ↘ Puppet roadmap to fix this Dashboard UI could use some help ↘ Too much data on the screen sometimes ↘ Lack of sorting/grouping Can’t store complex multi-line variables like text blobs
  • 18. v.1 Frontend Load Balancer FE-BFE-A v.1 FE-BFE-B v.1 Backend Load Balancer FE-BBE-A v.1 FE-BBE-B v.1 parameters_deployment-staging-FE-BankA paydiant_deployment_bank=STAGING-FRONTEND-A paydiant_app_operation_mode=LIVE paydiant_app_version=1 v.1 High-level platform representation parameters_deployment-staging-BE-BankA paydiant_deployment_bank=STAGING-BACKEND-A paydiant_app_operation_mode=LIVE paydiant_app_version=1 parameters_deployment-staging-FE-BankB paydiant_deployment_bank=STAGING-FRONTEND-B paydiant_app_operation_mode=LIVE paydiant_app_version=1 parameters_deployment-staging-BE-BankB paydiant_deployment_bank=STAGING-BACKEND-B paydiant_app_operation_mode=LIVE paydiant_app_version=1
  • 19. Frontend Load Balancer FE-BFE-A v.1 FE-BFE-B v.1 Backend Load Balancer FE-BBE-A v.1 FE-BBE-B v.1 Disable B(FE+BE) v.1v.1 parameters_deployment-staging-FE-BankB paydiant_deployment_bank=STAGING-FRONTEND-B paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=1 parameters_deployment-staging-BE-BankB paydiant_deployment_bank=STAGING-BACKEND-B paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=1
  • 20. v.2a Frontend Load Balancer FE-BFE-A v.1 FE-BFE-B v.1 Backend Load Balancer FE-BBE-A v.1 FE-BBE-B v.1 Run first phase of database changes (i.e. adds new stuff & migrate data) v.2aDB changes Phase 1
  • 21. Frontend Load Balancer FE-BFE-A v.1 FE-BFE-B v.2 Backend Load Balancer FE-BBE-A v.1 FE-BBE-B v.2 Upgrade B (FE+BE) v.2av.2a parameters_deployment-staging-FE-BankB paydiant_deployment_bank=STAGING-FRONTEND-B paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=2 parameters_deployment-staging-BE-BankB paydiant_deployment_bank=STAGING-BACKEND-B paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=2
  • 22. Frontend Load Balancer FE-BFE-A v.1 FE-BFE-B v.2 Backend Load Balancer FE-BBE-A v.1 FE-BBE-B v.2 Re-enable B (FE+BE) v.2av.2a parameters_deployment-staging-FE-BankB paydiant_deployment_bank=STAGING-FRONTEND-B paydiant_app_operation_mode=LIVE paydiant_app_version=2 parameters_deployment-staging-BE-BankB paydiant_deployment_bank=STAGING-BACKEND-B paydiant_app_operation_mode=LIVE paydiant_app_version=2
  • 23. Frontend Load Balancer FE-BFE-A v.1 FE-BFE-B v.2 Backend Load Balancer FE-BBE-A v.1 FE-BBE-B v.2 Disable A(FE+BE) v.2av.2a parameters_deployment-staging-FE-BankA paydiant_deployment_bank=STAGING-FRONTEND-A paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=1 parameters_deployment-staging-BE-BankA paydiant_deployment_bank=STAGING-BACKEND-A paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=1
  • 24. Frontend Load Balancer FE-BFE-A v.2 FE-BFE-B v.2 Backend Load Balancer FE-BBE-A v.2 FE-BBE-B v.2 Upgrade A (FE+BE) v.2av.2a parameters_deployment-staging-FE-BankA paydiant_deployment_bank=STAGING-FRONTEND-A paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=2 parameters_deployment-staging-BE-BankA paydiant_deployment_bank=STAGING-BACKEND-A paydiant_app_operation_mode=MAINTENANCE paydiant_app_version=2
  • 25. Frontend Load Balancer FE-BFE-A v.2 FE-BFE-B v.2 Backend Load Balancer FE-BBE-A v.2 FE-BBE-B v.2 Re-enable A (FE+BE) v.2av.2a parameters_deployment-staging-FE-BankA paydiant_deployment_bank=STAGING-FRONTEND-A paydiant_app_operation_mode=LIVE paydiant_app_version=2 parameters_deployment-staging-BE-BankA paydiant_deployment_bank=STAGING-BACKEND-A paydiant_app_operation_mode=LIVE paydiant_app_version=2
  • 26. v.2 Frontend Load Balancer FE-BFE-A v.2 FE-BFE-B v.2 Backend Load Balancer FE-BBE-A v.2 FE-BBE-B v.2 Run second phase of database changes (Cleanup old v.1 data) v.2DB changes Phase 2
  • 27. Details of the upgrade sequence …
  • 29. 2929 Putting nodes into maintenance mode Using LB node health check – http://nodeX:8080/healthcheck.jsp Puppet ERB template for healthcheck.jsp content … … … Pseudo code: Check if “maintenance mode” throw exception else If “module A” present Check if module A is up If “module B” present Check if module B is up … Throw 503 if any exception caught
  • 30. 3030 Putting nodes into maintenance mode cont. A parameter group controls the maintenance mode E.g. Parameter group “parameters_deployment-staging-BankB” controls “paydiant_app_operation_mode” for the nodes in set FE-B of the Staging environment
  • 31. 3131 Putting nodes into maintenance mode cont. Update group parameter using Rake API (as ‘puppet-dashboard’ user) RACK_ENV=production /opt/puppet/bin/rake -s -X -f /opt/puppet/share/puppet-dashboard/Rakefile nodegroup:variables [parameters_deployment-stagin-BankB, 'paydiant_app_operation_mode=MAINTENANCE’] Puppet run-once using MCO (as ‘peadmin’ user) mco puppet runonce --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B While loop… check the health check page till all nodes return 503 (i.e. in maintenance) status mco shellcmd --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B --cmd=''curl --silent http://localhost:8080/healthcheck/healthcheck.jsp
  • 33. 3333 Upgrading Application Version Disable Puppet agent mco puppet disable --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B Stop Tomcat service mco service tomcat stop --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B Cleanup exploded Tomcat webapps directory (for sanity) mco shellcmd --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B --cmd='find $TOMCAT_HOME/webapps/ - maxdepth 1 -mindepth 1 -type d -exec rm -rf {} ;’
  • 34. 3434 Upgrading Application Version Cont. Upgrade the application version RACK_ENV=production /opt/puppet/bin/rake -s -X -f /opt/puppet/share/puppet-dashboard/Rakefile nodegroup:variables [parameters_deployment-stagin-BankB, ’paydiant_app_version=2’] Re-enable Puppet mco puppet enable --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B Puppet run-once mco puppet runonce --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B
  • 36. 3636 Taking nodes out of maintenance mode Update parameter using Rake API (as ‘puppet-dashboard’ user) RACK_ENV=production /opt/puppet/bin/rake -s -X -f /opt/puppet/share/puppet-dashboard/Rakefile nodegroup:variables [parameters_deployment-staging-BankB, 'paydiant_app_operation_mode=LIVE’] Puppet run-once using MCO (as ‘peadmin’ user) mco puppet runonce --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B While loop… check the health check page till all nodes return 200 (i.e. live) status mco shellcmd --with-fact fact_paydiant_deployment_bank=STAGING-FRONTEND-B --cmd=''curl --silent http://localhost:8080/healthcheck/healthcheck.jsp
  • 38. Viewing transition in Splunk across multiple datacenters
  • 40. 4040 What is Jenkins Tool to schedule and monitor the execution of repeated jobs
  • 41. 4141 Why Jenkins ? Configurability ↘ Different types of input parameters ↘ Invoke shell scripts ↘ Post-build actions (automatic/manual)
  • 42. 4242 Why Jenkins ? cont. Plugin support ↘ More than 600 plugins (https://wiki.jenkins-ci.org/display/JENKINS/Plugins) ↘ Eg. vSphere plugin (stop/start, snapshots, rollbacks…) ↘ Build pipeline plugin ↘ Parameterized remote trigger plugin
  • 43. 4343 Why Jenkins ? cont. Keeps all your console logs at a single place ↘ No need to hunt for 10 log files on 5 different machines ↘ Visual representation of passed/failed/in-progress status, based on downstream shell scripts or other jobs
  • 44. 4444 Why Jenkins ? cont. And it’s…
  • 45. MCO Rake API DB FE-BFE-* FE-BBE-* Source code, liquibase change sets
  • 46. 4646 Jenkins – Puppet Integration
  • 47. 4747 Jenkins – Puppet Integration cont.
  • 48. 4848 Jenkins – Puppet Integration cont.
  • 49. 4949 Jenkins – Puppet Integration cont.
  • 50. 5050 Jenkins – Puppet Integration cont. Jenkins invoke local bash scripts, which in turn use SSH to call; ↘ MCO (as ‘peadmin’ user on Puppet Master) ↘ Rake API (as ‘puppet-dashboard’ user on Puppet Master) SSH login as ‘peadmin’ and ‘puppet-dashboard’ is password-less, using PKI ↘ Generate RSA keypair for the local Jenkins user, using ssh-keygen command ↘ Append the public key to ~/.ssh/authorized_keys file of ‘peadmin’ and ‘puppet-dashboard’ users, on Puppet Master MCO special purpose sub commands we use; ↘ puppet ↘ service ↘ shellcmd* (ask your Puppet Enterprise Support for this custom MCO plugin)
  • 51. 5151 Links Rake API: https://docs.puppetlabs.com/pe/latest/console_rake_api.html MCO: https://docs.puppetlabs.com/mcollective/reference/basic/basic_cli_usage.html Jenkins: http://jenkins-ci.org/ Liquibase: http://www.liquibase.org/documentation/index.html
  • 52. 5252 Recap/Takeaways… Use Puppet Enterprise ↘ Support is awesome (Celia Cottle, Jay Wallace, Ken Johnson, Zachary Stern – you guys rock!) ↘ Gotten help and features from James Turnbull and Nigel Kersten with some early versions of PE ↘ Live management and Mcollective are essential for any self-respecting enterprise Zero-downtime upgrades ↘ To Dashboard or not to Dashboard? ↘ Database update phases ↘ Managing LB health check monitors dynamically using Puppet Automation baby steps – don’t boil the ocean ↘ Understand what you are doing before automating it - develop runbooks ↘ Identify manual steps and script some of them ↘ Add scripts to orchestration tool (Jenkins, ServiceNow, whatever else you use in-house)