SlideShare a Scribd company logo
1 of 37
Download to read offline
Getting to the Latest Puppet
1
Elizabeth Wittig Plumb
Senior Technical Account Manager
Nate McCurdy
Senior Professional Services Engineer
2
The Breakdown
Why should I
upgrade?
What do I need?
Anything else I
should know?Walk me through this
– what do I do?
3
Why Should I upgrade?
4
Language
● Iteration!
● Type system
○ Class parameter validation
○ Future proof for additional
awesomeness
● Cleaner Puppet code
○ No more reliance on stdlib
functions
Other
● All-in-one agent packaging
● New features in Puppet
Enterprise
● Stability and scalability
… because Puppet 4 is AWESOME
Puppet Enterprise
3.8 is end-of-life
December 31
5
6
Ch-Ch-Ch-Ch-Changes
Code Changes
We’ve got a new
compiler & new
language features
Directory Changes
The all-in-one agent
means we’ve moved
some things around
Classification
Changes
Do you use the
import( ) function?
Console Changes
Whoa! Look at all
those node groups!
https://docs.puppet.com/puppet/latest/reference/lang_updating_manifests.html
7
in place upgrade < migration
8
What do I need?
Preview Box, where you’ll make sure the
code is ready for the future
Puppet Enterprise latest, your agents
will aspire to be here
9
So here’s what you’ve gotta do:
Preview Box:
• Puppet Enterprise 3.8 Master
• Catalog Preview module installed
• r10k (or a copy of your code)
• parser = future
Puppet Enterprise
2016.4 Master
Puppet Agents
Fast Feedback Loop Doesn’t impact work
the agent is doing
Compare your catalogs in
Puppet 3 vs 4
Why guess?
A 3.8 master with the catalog preview module
https://forge.puppet.com/puppetlabs/catalog_preview
10
What’s a preview box?
11
Catalog Preview identifies 2 types of issues
~$ puppet preview 
--baseline-environment production 
--preview-environment future_production 
--migrate 3.8/4.0 
--nodes nodes.txt 
--view overview
Migration Issues
Differences
(conflicts)
12
[root@pe-386-master ~]# /opt/puppet/bin/puppet preview
--baseline-environment production --preview-environment future_production
--migrate 3.8/4.0 --nodes /vagrant/nodes.txt --view overview
Stats
Total number of nodes: 10, 100.0%
Conflicting..........: 7, 70.0%
Compliant............: 0, 0.0%
Equal................: 0, 0.0%
Baseline Errors (by manifest)
Nodes..: agiledbtest2.example.com, monprod1.example.com
Issues.:
'Duplicate declaration: File[u01] is already declared in file
/etc/puppetlabs/puppet/environments/production/site/example/manifests/orac
le.pp:351; cannot redeclare (…snip…)
Preview Errors (by manifest)
/etc/puppetlabs/puppet/environments/future_production/site/examp
le/manifests/service-account.pp
Nodes..: pocdbtest1.example.com
Issues.:
ILLEGAL_DEFINTION_NAME: 'Unacceptable name. The name
'example::service-account' is unacceptable as the name of a Host Class
Definition' at line 1, column 1
Preview Errors (by issue)
ILLEGAL_DEFINTION_NAME (1)
/etc/puppetlabs/puppet/environments/future_production/site/examp
le/manifests/service-account.pp:1:1
Preview Warnings (by issue)
MIGRATE4_AMBIGUOUS_INTEGER (77)
/etc/puppetlabs/puppet/environments/future_production/manifests/compliance
.pp:90:15
MIGRATE4_EMPTY_STRING_TRUE (21)
/etc/puppetlabs/puppet/environments/future_production/site/example/manifes
ts/init.pp:[16:6,21:6,26:6]
Top ten nodes with most issues
node name errors warnings diffs
--------------------------- -------- -------- --------
agiledbtest2.example.com 1 0 0
monprod1.example.com 1 0 0
pocdbtest1.example.com 1 0 0
obiaappstage2.example.com 0 1 71
obiaapptest1.example.com 0 1 71
Summary
Diff
Overview
https://github.com/puppetlabs/prosvc-preview_report 13
Common Migration Warnings
14
MIGRATE4_UC_BAREWORD_IS_TYPE
$pkg_name = $::osfamily ? {
Redhat => ‘httpd’,
Debian => ‘apache2’,
}
MIGRATE4_EQUALITY_TYPE_MISMATCH
'1' == 1 # 4x. false, 3x. true
'1' <= 1 # 4x. error, 3x. true
MIGRATE4_REVIEW_IN_EXPRESSION
$foo = undef
if $foo in [ ‘one’, ‘two’, ‘blue’ ]
MIGRATE4_EMPTY_STRING_TRUE
15
Differences: This could get messy
--excludes
</path/to/excludes.json>
--[no-]diff-array-value
Here are some handy flags to filter out info you don’t care about
16
--[no-]diff-string-numeric
Alright, walk me through this...
17
Directory Environments
18
Workflow Steps: Step 1
Get preview box and future infra stood up
19
Workflow Steps: Step 2
● Create future_production branch
● Enable the future parser
20
Manually
Control Repository
Workflow Steps: Step 3
Run “r10k deploy” on preview box
21
[root@pe-386-master]# r10k deploy environment -pv
[INFO] Deploying environment “production”
[INFO] Deploying environment “future_production”
Workflow Steps: Step 4
Generate first report.
● Run Puppet Preview
● Convert JSON to HTML
22
[root@pe-386-master]# puppet preview 
--baseline-environment production 
--preview-environment future_production 
--migrate 3.8/4.0 
--nodes nodes.txt 
--view overview-json | tee ~/overview.json
[root@pe-386-master]# preview_report.rb 
-f ~/overview.json 
-w ~/preview_report.html
Workflow Steps: Step 5
Find an issue to fix.
Start with any catalog compilation
errors, then move to migration
warnings / differences
23
Baseline Errors (by manifest)
Nodes..: agiledbtest2.example.com
Issues.:
'Duplicate declaration: File[u01] is already
declared in file
/etc/puppetlabs/puppet/environments/production/
site/example/manifests/oracle.pp:351; cannot
redeclare
Workflow Steps: Step 6
Fix the issue.
For simple changes, modify code in
future_production
For more complex issues, create a
branch off of future_production for
that issue
24
Workflow Steps: Step 7
Deploy change to preview box, and run
the preview tool again.
Ensure that your issue has been fixed.
25
[root@pe-386-master]# r10k deploy environment -pv
[INFO] Deploying environment “production”
[INFO] Deploying environment “future_production”
[root@pe-386-master]# puppet preview 
--baseline-environment production 
--preview-environment future_production 
--migrate 3.8/4.0 
--nodes nodes.txt 
--view overview-json | tee ~/fix_file_mode.json
[root@pe-386-master]# preview_report.rb 
-f ~/fix_file_mode.json 
-w ~/fix_file_mode.html
Workflow Steps: Step 8
Rinse and repeat
26
27
NOISE
LEGIT
What?! I can’t hear you!
But… catalog_preview only solves part of
the problem
We’re only testing catalog compilation, not catalog application
28
29
30
We need to test
Catalog Application!
● On the new infrastructure!
● Migrate CA certs to new infrastructure
● puppet agent -t --noop
--server=new_infra
--environment=future_production
● Merge into production when everything’s
fixed
31
Anything else I should know?
32
All this is happening on your diff box, not on your prod systems
33
Don’t worry. Be happy.
Catalogs are being compiled using only facts and your code
There’s 2 ways to get facts on the preview box
Query PuppetDB directly Yaml facts cache
34
puppet master --configprint route_file
YAML Facts
If you have thousands of
nodes, start with a
representative cross
section.
35
[root@pe-386-master ~]# puppet master --configprint yamldir
/var/opt/lib/pe-puppet/yaml
[root@pe-386-master ~]# tree -C /var/opt/lib/pe-puppet/yaml
/var/opt/lib/pe-puppet/yaml
├── facts
│ ├── agileappprod1.example.com.yaml
│ ├── agileappprod2.example.com.yaml
│ ├── agileappstage1.example.com.yaml
│ ├── agileappstage2.example.com.yaml
(...)
puppet preview 
--nodes roles.txt
https://github.com/natemccurdy/puppet-upgrade-workplace
Upgrade your agents with the
puppet_agent module and you’re done!
https://forge.puppet.com/puppetlabs/puppet_agent
36
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Wittig Plumb, Puppet

More Related Content

What's hot

Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)Ontico
 
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Julian Robichaux
 
Learn flask in 90mins
Learn flask in 90minsLearn flask in 90mins
Learn flask in 90minsLarry Cai
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE WorkshopPuppet
 
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...Carlos Sanchez
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Schalk Cronjé
 
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows Side
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows SideNagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows Side
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows SideNagios
 
Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020Puppet
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabAlessandro Franceschi
 
Cfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymoreCfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymoreJulien Pivotto
 
OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!Tobias Schneck
 
Building a Drupal site with Git
Building a Drupal site with GitBuilding a Drupal site with Git
Building a Drupal site with Gitdirtytactics
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0Michael Vorburger
 

What's hot (20)

Ansible 2.2
Ansible 2.2Ansible 2.2
Ansible 2.2
 
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)Использование Docker в CI / Александр Акбашев (HERE Technologies)
Использование Docker в CI / Александр Акбашев (HERE Technologies)
 
C++ for the Web
C++ for the WebC++ for the Web
C++ for the Web
 
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
 
Security Testing Using Infrastructure-As-Code
Security Testing Using Infrastructure-As-CodeSecurity Testing Using Infrastructure-As-Code
Security Testing Using Infrastructure-As-Code
 
Learn flask in 90mins
Learn flask in 90minsLearn flask in 90mins
Learn flask in 90mins
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
 
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016
 
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows Side
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows SideNagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows Side
Nagios Conference 2011 - Michael Medin - Workshop: Scripting On The Windows Side
 
Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop, 5 May 2020
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLab
 
Cfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymoreCfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymore
 
OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!
 
sed.pdf
sed.pdfsed.pdf
sed.pdf
 
Building a Drupal site with Git
Building a Drupal site with GitBuilding a Drupal site with Git
Building a Drupal site with Git
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0
 

Viewers also liked

PuppetConf 2016: Keynote - Luke Kanies, Puppet Founder
PuppetConf 2016: Keynote - Luke Kanies, Puppet FounderPuppetConf 2016: Keynote - Luke Kanies, Puppet Founder
PuppetConf 2016: Keynote - Luke Kanies, Puppet FounderPuppet
 
PuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEO
PuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEOPuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEO
PuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEOPuppet
 
PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...
PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...
PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...Puppet
 
PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...
PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...
PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...Puppet
 
PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...
PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...
PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...Puppet
 
PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...
PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...
PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...Puppet
 
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...Puppet
 
PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...
PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...
PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...Puppet
 
Leading Business Disruption Strategy with EA - Hugh Evans
Leading Business Disruption Strategy with EA - Hugh EvansLeading Business Disruption Strategy with EA - Hugh Evans
Leading Business Disruption Strategy with EA - Hugh EvansCraig Martin
 

Viewers also liked (9)

PuppetConf 2016: Keynote - Luke Kanies, Puppet Founder
PuppetConf 2016: Keynote - Luke Kanies, Puppet FounderPuppetConf 2016: Keynote - Luke Kanies, Puppet Founder
PuppetConf 2016: Keynote - Luke Kanies, Puppet Founder
 
PuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEO
PuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEOPuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEO
PuppetConf 2016: Keynote - Sanjay Mirchandani, Puppet CEO
 
PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...
PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...
PuppetConf 2016: Closing the Loop: Direct Change Control with Puppet – Nick L...
 
PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...
PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...
PuppetConf 2016: Direct Puppet and Application Management for the Puppet Plat...
 
PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...
PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...
PuppetConf 2016: Puppet Enterprise Roadmap and How to Succeed with It – Susan...
 
PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...
PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...
PuppetConf 2016: A Roadmap for a Platform: Mixing Metaphors for Fun and Profi...
 
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
 
PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...
PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...
PuppetConf 2016: Device-Based Modules: Making Them as Simple as a Light Switc...
 
Leading Business Disruption Strategy with EA - Hugh Evans
Leading Business Disruption Strategy with EA - Hugh EvansLeading Business Disruption Strategy with EA - Hugh Evans
Leading Business Disruption Strategy with EA - Hugh Evans
 

Similar to PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Wittig Plumb, Puppet

Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesGöksel Pırnal
 
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
 
The Ring programming language version 1.8 book - Part 95 of 202
The Ring programming language version 1.8 book - Part 95 of 202The Ring programming language version 1.8 book - Part 95 of 202
The Ring programming language version 1.8 book - Part 95 of 202Mahmoud Samir Fayed
 
Troubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackTroubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackPuppet
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)Borislav Traykov
 
Edition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedbackEdition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedbackNicolas Dupont
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentPapp Laszlo
 
Strategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoringStrategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoringAlessandro Franceschi
 
Testing in Craft CMS
Testing in Craft CMSTesting in Craft CMS
Testing in Craft CMSJustinHolt20
 
Dolibarr information for developers - Christmas devcamp in Valence
Dolibarr information for developers - Christmas devcamp in ValenceDolibarr information for developers - Christmas devcamp in Valence
Dolibarr information for developers - Christmas devcamp in ValenceLaurent Destailleur
 
Puppet Node Classifiers Talk - Patrick Buckley
Puppet Node Classifiers Talk - Patrick BuckleyPuppet Node Classifiers Talk - Patrick Buckley
Puppet Node Classifiers Talk - Patrick BuckleyChristian Mague
 
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Evgeniy Kuzmin
 
Implementações paralelas
Implementações paralelasImplementações paralelas
Implementações paralelasWillian Molinari
 
Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014Puppet
 
Stating the obvious - 121 Test Automation Day, Dublin, 2018
Stating the obvious - 121 Test Automation Day, Dublin, 2018Stating the obvious - 121 Test Automation Day, Dublin, 2018
Stating the obvious - 121 Test Automation Day, Dublin, 2018Giulio Vian
 
Containerize your Blackbox tests
Containerize your Blackbox testsContainerize your Blackbox tests
Containerize your Blackbox testsKevin Beeman
 
CEIS106_Final_Project.pptx.pdf
CEIS106_Final_Project.pptx.pdfCEIS106_Final_Project.pptx.pdf
CEIS106_Final_Project.pptx.pdfluxasuhi
 

Similar to PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Wittig Plumb, Puppet (20)

Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
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
 
Readme
ReadmeReadme
Readme
 
Automating the Quality
Automating the QualityAutomating the Quality
Automating the Quality
 
The Ring programming language version 1.8 book - Part 95 of 202
The Ring programming language version 1.8 book - Part 95 of 202The Ring programming language version 1.8 book - Part 95 of 202
The Ring programming language version 1.8 book - Part 95 of 202
 
Troubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackTroubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise Stack
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)
 
Edition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedbackEdition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedback
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Strategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoringStrategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoring
 
Testing in Craft CMS
Testing in Craft CMSTesting in Craft CMS
Testing in Craft CMS
 
Dolibarr information for developers - Christmas devcamp in Valence
Dolibarr information for developers - Christmas devcamp in ValenceDolibarr information for developers - Christmas devcamp in Valence
Dolibarr information for developers - Christmas devcamp in Valence
 
Puppet Node Classifiers Talk - Patrick Buckley
Puppet Node Classifiers Talk - Patrick BuckleyPuppet Node Classifiers Talk - Patrick Buckley
Puppet Node Classifiers Talk - Patrick Buckley
 
Puppet quick start guide
Puppet quick start guidePuppet quick start guide
Puppet quick start guide
 
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
 
Implementações paralelas
Implementações paralelasImplementações paralelas
Implementações paralelas
 
Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014
 
Stating the obvious - 121 Test Automation Day, Dublin, 2018
Stating the obvious - 121 Test Automation Day, Dublin, 2018Stating the obvious - 121 Test Automation Day, Dublin, 2018
Stating the obvious - 121 Test Automation Day, Dublin, 2018
 
Containerize your Blackbox tests
Containerize your Blackbox testsContainerize your Blackbox tests
Containerize your Blackbox tests
 
CEIS106_Final_Project.pptx.pdf
CEIS106_Final_Project.pptx.pdfCEIS106_Final_Project.pptx.pdf
CEIS106_Final_Project.pptx.pdf
 

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

Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
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...DianaGray10
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
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 FresherRemote DBA Services
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Recently uploaded (20)

Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
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...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Wittig Plumb, Puppet

  • 1. Getting to the Latest Puppet 1 Elizabeth Wittig Plumb Senior Technical Account Manager Nate McCurdy Senior Professional Services Engineer
  • 2. 2 The Breakdown Why should I upgrade? What do I need? Anything else I should know?Walk me through this – what do I do?
  • 3. 3 Why Should I upgrade?
  • 4. 4 Language ● Iteration! ● Type system ○ Class parameter validation ○ Future proof for additional awesomeness ● Cleaner Puppet code ○ No more reliance on stdlib functions Other ● All-in-one agent packaging ● New features in Puppet Enterprise ● Stability and scalability … because Puppet 4 is AWESOME
  • 5. Puppet Enterprise 3.8 is end-of-life December 31 5
  • 6. 6 Ch-Ch-Ch-Ch-Changes Code Changes We’ve got a new compiler & new language features Directory Changes The all-in-one agent means we’ve moved some things around Classification Changes Do you use the import( ) function? Console Changes Whoa! Look at all those node groups! https://docs.puppet.com/puppet/latest/reference/lang_updating_manifests.html
  • 7. 7 in place upgrade < migration
  • 8. 8 What do I need?
  • 9. Preview Box, where you’ll make sure the code is ready for the future Puppet Enterprise latest, your agents will aspire to be here 9 So here’s what you’ve gotta do: Preview Box: • Puppet Enterprise 3.8 Master • Catalog Preview module installed • r10k (or a copy of your code) • parser = future Puppet Enterprise 2016.4 Master Puppet Agents
  • 10. Fast Feedback Loop Doesn’t impact work the agent is doing Compare your catalogs in Puppet 3 vs 4 Why guess? A 3.8 master with the catalog preview module https://forge.puppet.com/puppetlabs/catalog_preview 10 What’s a preview box?
  • 11. 11 Catalog Preview identifies 2 types of issues ~$ puppet preview --baseline-environment production --preview-environment future_production --migrate 3.8/4.0 --nodes nodes.txt --view overview Migration Issues Differences (conflicts)
  • 12. 12 [root@pe-386-master ~]# /opt/puppet/bin/puppet preview --baseline-environment production --preview-environment future_production --migrate 3.8/4.0 --nodes /vagrant/nodes.txt --view overview Stats Total number of nodes: 10, 100.0% Conflicting..........: 7, 70.0% Compliant............: 0, 0.0% Equal................: 0, 0.0% Baseline Errors (by manifest) Nodes..: agiledbtest2.example.com, monprod1.example.com Issues.: 'Duplicate declaration: File[u01] is already declared in file /etc/puppetlabs/puppet/environments/production/site/example/manifests/orac le.pp:351; cannot redeclare (…snip…) Preview Errors (by manifest) /etc/puppetlabs/puppet/environments/future_production/site/examp le/manifests/service-account.pp Nodes..: pocdbtest1.example.com Issues.: ILLEGAL_DEFINTION_NAME: 'Unacceptable name. The name 'example::service-account' is unacceptable as the name of a Host Class Definition' at line 1, column 1 Preview Errors (by issue) ILLEGAL_DEFINTION_NAME (1) /etc/puppetlabs/puppet/environments/future_production/site/examp le/manifests/service-account.pp:1:1 Preview Warnings (by issue) MIGRATE4_AMBIGUOUS_INTEGER (77) /etc/puppetlabs/puppet/environments/future_production/manifests/compliance .pp:90:15 MIGRATE4_EMPTY_STRING_TRUE (21) /etc/puppetlabs/puppet/environments/future_production/site/example/manifes ts/init.pp:[16:6,21:6,26:6] Top ten nodes with most issues node name errors warnings diffs --------------------------- -------- -------- -------- agiledbtest2.example.com 1 0 0 monprod1.example.com 1 0 0 pocdbtest1.example.com 1 0 0 obiaappstage2.example.com 0 1 71 obiaapptest1.example.com 0 1 71 Summary Diff Overview
  • 14. Common Migration Warnings 14 MIGRATE4_UC_BAREWORD_IS_TYPE $pkg_name = $::osfamily ? { Redhat => ‘httpd’, Debian => ‘apache2’, } MIGRATE4_EQUALITY_TYPE_MISMATCH '1' == 1 # 4x. false, 3x. true '1' <= 1 # 4x. error, 3x. true MIGRATE4_REVIEW_IN_EXPRESSION $foo = undef if $foo in [ ‘one’, ‘two’, ‘blue’ ]
  • 16. Differences: This could get messy --excludes </path/to/excludes.json> --[no-]diff-array-value Here are some handy flags to filter out info you don’t care about 16 --[no-]diff-string-numeric
  • 17. Alright, walk me through this... 17
  • 19. Workflow Steps: Step 1 Get preview box and future infra stood up 19
  • 20. Workflow Steps: Step 2 ● Create future_production branch ● Enable the future parser 20 Manually Control Repository
  • 21. Workflow Steps: Step 3 Run “r10k deploy” on preview box 21 [root@pe-386-master]# r10k deploy environment -pv [INFO] Deploying environment “production” [INFO] Deploying environment “future_production”
  • 22. Workflow Steps: Step 4 Generate first report. ● Run Puppet Preview ● Convert JSON to HTML 22 [root@pe-386-master]# puppet preview --baseline-environment production --preview-environment future_production --migrate 3.8/4.0 --nodes nodes.txt --view overview-json | tee ~/overview.json [root@pe-386-master]# preview_report.rb -f ~/overview.json -w ~/preview_report.html
  • 23. Workflow Steps: Step 5 Find an issue to fix. Start with any catalog compilation errors, then move to migration warnings / differences 23 Baseline Errors (by manifest) Nodes..: agiledbtest2.example.com Issues.: 'Duplicate declaration: File[u01] is already declared in file /etc/puppetlabs/puppet/environments/production/ site/example/manifests/oracle.pp:351; cannot redeclare
  • 24. Workflow Steps: Step 6 Fix the issue. For simple changes, modify code in future_production For more complex issues, create a branch off of future_production for that issue 24
  • 25. Workflow Steps: Step 7 Deploy change to preview box, and run the preview tool again. Ensure that your issue has been fixed. 25 [root@pe-386-master]# r10k deploy environment -pv [INFO] Deploying environment “production” [INFO] Deploying environment “future_production” [root@pe-386-master]# puppet preview --baseline-environment production --preview-environment future_production --migrate 3.8/4.0 --nodes nodes.txt --view overview-json | tee ~/fix_file_mode.json [root@pe-386-master]# preview_report.rb -f ~/fix_file_mode.json -w ~/fix_file_mode.html
  • 26. Workflow Steps: Step 8 Rinse and repeat 26
  • 28. But… catalog_preview only solves part of the problem We’re only testing catalog compilation, not catalog application 28
  • 29. 29
  • 30. 30
  • 31. We need to test Catalog Application! ● On the new infrastructure! ● Migrate CA certs to new infrastructure ● puppet agent -t --noop --server=new_infra --environment=future_production ● Merge into production when everything’s fixed 31
  • 32. Anything else I should know? 32
  • 33. All this is happening on your diff box, not on your prod systems 33 Don’t worry. Be happy. Catalogs are being compiled using only facts and your code
  • 34. There’s 2 ways to get facts on the preview box Query PuppetDB directly Yaml facts cache 34 puppet master --configprint route_file
  • 35. YAML Facts If you have thousands of nodes, start with a representative cross section. 35 [root@pe-386-master ~]# puppet master --configprint yamldir /var/opt/lib/pe-puppet/yaml [root@pe-386-master ~]# tree -C /var/opt/lib/pe-puppet/yaml /var/opt/lib/pe-puppet/yaml ├── facts │ ├── agileappprod1.example.com.yaml │ ├── agileappprod2.example.com.yaml │ ├── agileappstage1.example.com.yaml │ ├── agileappstage2.example.com.yaml (...) puppet preview --nodes roles.txt https://github.com/natemccurdy/puppet-upgrade-workplace
  • 36. Upgrade your agents with the puppet_agent module and you’re done! https://forge.puppet.com/puppetlabs/puppet_agent 36