SlideShare a Scribd company logo
1 of 26
Windows: Having It’sWindows: Having It’s
Ass Kicked by PuppetAss Kicked by Puppet
and PowerShell sinceand PowerShell since
20122012
Paul StackPaul Stack
http://www.paulstack.co.ukhttp://www.paulstack.co.uk
http://twitter.com/stack72http://twitter.com/stack72
mail:mail: puppetconf@paulstack.co.ukpuppetconf@paulstack.co.uk
PaurShellPaurShell
This is actually the Northern IrishThis is actually the Northern Irish pronunciation of
the Windows task based framework, PowerShell
About MeAbout Me
Develop software for OpenTableDevelop software for OpenTable
Member of the Jetbrains DevelopmentMember of the Jetbrains Development
AcademyAcademy
DevOps ExtremistDevOps Extremist
AgendaAgenda
Classic infrastructure managementClassic infrastructure management
Snowflake / Phoenix Servers / ImmutableSnowflake / Phoenix Servers / Immutable
InfrastructureInfrastructure
Infrastructure as CodeInfrastructure as Code
PowerShell as a way to manage WindowsPowerShell as a way to manage Windows
PowerShell + Puppet = Kicking Windows’ AssPowerShell + Puppet = Kicking Windows’ Ass
Classic InfrastructureClassic Infrastructure
ManagementManagement
““The Run book”The Run book”
People are generallyPeople are generally
rubbish at performingrubbish at performing
manual repetitive tasksmanual repetitive tasks
SnowFlake ServerSnowFlake Server
Image courtesy of Liz West and under Creative CommonsImage courtesy of Liz West and under Creative Commons
LicenseLicense
Martin Fowler:Martin Fowler:
http://martinfowler.com/bliki/SnowflakeServer.htmlhttp://martinfowler.com/bliki/SnowflakeServer.html
Machines are muchMachines are much
more reliable atmore reliable at
performing repetitiveperforming repetitive
taskstasks
Image courtesy of FoodBev Photos and under CreativeImage courtesy of FoodBev Photos and under Creative
Commons LicenseCommons License
Can’t we automate ourCan’t we automate our
manual run books?manual run books?
Infrastructure As CodeInfrastructure As Code
Phoenix ServersPhoenix Servers
Martin Fowler:Martin Fowler:
http://martinfowler.com/bliki/PhoenixServer.htmlhttp://martinfowler.com/bliki/PhoenixServer.html
ChaosMonkeyChaosMonkey
Chaos Monkey:Chaos Monkey:
http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.htmlhttp://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html
Immutable infrastructureImmutable infrastructure
Chad Fowler:Chad Fowler:
http://chadfowler.com/blog/2013/06/23/immutable-deployments/http://chadfowler.com/blog/2013/06/23/immutable-deployments/
Code Is BetterCode Is Better
What can we do onWhat can we do on
Windows?Windows?
Managing WindowsManaging Windows
Server 2008 withServer 2008 with
PowerShellPowerShell
Puppet on WindowsPuppet on Windows
Types AvailableTypes Available
filefile
useruser
groupgroup
scheduled_taskscheduled_task
packagepackage
serviceservice
execexec
hosthost
Puppet + PowerShell =Puppet + PowerShell =
Windows Tap OutWindows Tap Out
Puppet ForgePuppet Forge
Puppet integration withPuppet integration with
Windows will get betterWindows will get better
and betterand better
SummarySummary
Code is much better for managing servers thanCode is much better for managing servers than
peoplepeople
PowerShell is a tool to use when working withPowerShell is a tool to use when working with
WindowsWindows
Puppet compliments what PowerShell doesPuppet compliments what PowerShell does
perfectly in a DSL formatperfectly in a DSL format
Windows Server management is no longer aWindows Server management is no longer a
pain in the ass.pain in the ass.
Further InformationFurther Information
http://forge.puppetlabs.comhttp://forge.puppetlabs.com//
http://blogs.msdn.com/b/powershell/http://blogs.msdn.com/b/powershell/
http://github.com/opentable/puppet-iishttp://github.com/opentable/puppet-iis
http://github.com/opentable/puppet-http://github.com/opentable/puppet-
windowsfeaturewindowsfeature

More Related Content

What's hot

Advances in BeEF - AthCon2012
Advances in BeEF - AthCon2012Advances in BeEF - AthCon2012
Advances in BeEF - AthCon2012
Michele Orru
 
Phone gap
Phone gapPhone gap
Phone gap
caviare
 

What's hot (20)

L’enjeu du mobile pour le développeur Web, et comment Mozilla va vous aider
L’enjeu du mobile pour le développeur Web,  et comment Mozilla va vous aiderL’enjeu du mobile pour le développeur Web,  et comment Mozilla va vous aider
L’enjeu du mobile pour le développeur Web, et comment Mozilla va vous aider
 
Chocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieChocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pie
 
Scripting for infosecs
Scripting for infosecsScripting for infosecs
Scripting for infosecs
 
GDG DevFest 2018 - Progressive Web Apps 101
GDG DevFest 2018 - Progressive Web Apps 101GDG DevFest 2018 - Progressive Web Apps 101
GDG DevFest 2018 - Progressive Web Apps 101
 
Continuous Integration @ MeetMagento Germany 2015
Continuous Integration @ MeetMagento Germany 2015Continuous Integration @ MeetMagento Germany 2015
Continuous Integration @ MeetMagento Germany 2015
 
Continuous Integration and Deployment Patterns for Magento
Continuous Integration and Deployment Patterns for MagentoContinuous Integration and Deployment Patterns for Magento
Continuous Integration and Deployment Patterns for Magento
 
Advances in BeEF - AthCon2012
Advances in BeEF - AthCon2012Advances in BeEF - AthCon2012
Advances in BeEF - AthCon2012
 
Rock-solid Magento Deployments (and Development)
Rock-solid Magento Deployments (and Development)Rock-solid Magento Deployments (and Development)
Rock-solid Magento Deployments (and Development)
 
Phone gap
Phone gapPhone gap
Phone gap
 
Owasp AppSecEU 2015 - BeEF Session
Owasp AppSecEU 2015 - BeEF SessionOwasp AppSecEU 2015 - BeEF Session
Owasp AppSecEU 2015 - BeEF Session
 
Sage 2 19_v5_busby
Sage 2 19_v5_busbySage 2 19_v5_busby
Sage 2 19_v5_busby
 
Establish reliable builds and deployments with Magento
Establish reliable builds and deployments with MagentoEstablish reliable builds and deployments with Magento
Establish reliable builds and deployments with Magento
 
Magento and Continuous Integration - Damian Luszczymak
Magento and Continuous Integration - Damian LuszczymakMagento and Continuous Integration - Damian Luszczymak
Magento and Continuous Integration - Damian Luszczymak
 
Practical Exploitation - Webappy Style
Practical Exploitation - Webappy StylePractical Exploitation - Webappy Style
Practical Exploitation - Webappy Style
 
PGDAY EU 2016 workshop - privacy and security
PGDAY EU 2016 workshop - privacy and securityPGDAY EU 2016 workshop - privacy and security
PGDAY EU 2016 workshop - privacy and security
 
Continuous Development and Deployment: Workflows and Patterns
Continuous Development and Deployment: Workflows and PatternsContinuous Development and Deployment: Workflows and Patterns
Continuous Development and Deployment: Workflows and Patterns
 
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
LetSwift 2017 - 토스 iOS 앱의 개발/배포 환경
 
Attacker Ghost Stories - ShmooCon 2014
Attacker Ghost Stories - ShmooCon 2014Attacker Ghost Stories - ShmooCon 2014
Attacker Ghost Stories - ShmooCon 2014
 
Node.js Anti Patterns
Node.js Anti PatternsNode.js Anti Patterns
Node.js Anti Patterns
 
DevOps for PHP
DevOps for PHPDevOps for PHP
DevOps for PHP
 

Similar to Windows: Having its ass kicked by Puppet and Powershell since 2012 #PuppetConf

Puppet powershell
Puppet powershellPuppet powershell
Puppet powershell
Paul Stack
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
Rack Lin
 
Consistent Development Environment with Vagrant and Chef
Consistent Development Environment with Vagrant and ChefConsistent Development Environment with Vagrant and Chef
Consistent Development Environment with Vagrant and Chef
Gerald Villorente
 

Similar to Windows: Having its ass kicked by Puppet and Powershell since 2012 #PuppetConf (20)

Puppet powershell
Puppet powershellPuppet powershell
Puppet powershell
 
de:code エスキュービズム勉強会0620
de:code エスキュービズム勉強会0620de:code エスキュービズム勉強会0620
de:code エスキュービズム勉強会0620
 
An introduction to Phing the PHP build system
An introduction to Phing the PHP build systemAn introduction to Phing the PHP build system
An introduction to Phing the PHP build system
 
An introduction to Phing the PHP build system (PHPDay, May 2012)
An introduction to Phing the PHP build system (PHPDay, May 2012)An introduction to Phing the PHP build system (PHPDay, May 2012)
An introduction to Phing the PHP build system (PHPDay, May 2012)
 
ITB2019 CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan ErckITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019 CommandBox vs Node.js - Nolan Erck
 
PuppetConf track overview: Inside Puppet
PuppetConf track overview: Inside PuppetPuppetConf track overview: Inside Puppet
PuppetConf track overview: Inside Puppet
 
Getting Started with Pelican
Getting Started with PelicanGetting Started with Pelican
Getting Started with Pelican
 
Pwnstaller
PwnstallerPwnstaller
Pwnstaller
 
Encode polkadot club
Encode polkadot club  Encode polkadot club
Encode polkadot club
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
From printed circuit boards to exploits
From printed circuit boards to exploitsFrom printed circuit boards to exploits
From printed circuit boards to exploits
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 
c0c0n2010 -
c0c0n2010 - c0c0n2010 -
c0c0n2010 -
 
Consistent Development Environment with Vagrant and Chef
Consistent Development Environment with Vagrant and ChefConsistent Development Environment with Vagrant and Chef
Consistent Development Environment with Vagrant and Chef
 
Don't screw it up! How to build durable API
Don't screw it up! How to build durable API Don't screw it up! How to build durable API
Don't screw it up! How to build durable API
 
Building appliances
Building appliancesBuilding appliances
Building appliances
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
 
Contextual Final
Contextual FinalContextual Final
Contextual Final
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 

Recently uploaded

Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 

Recently uploaded (20)

Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 

Windows: Having its ass kicked by Puppet and Powershell since 2012 #PuppetConf

Editor's Notes

  1. Puppet first support for windows was 2.7.6. I have only been using it since 2012 :)
  2. Runbooks are a traditional way of instructing the users what steps to run when installing software, operating systems or doing server builds
  3. They cut corners, they make mistakes, and techniques differ from person to person. Its important to remember that working at 100% all of the time is not the best use of time So when creating server builds for web, databases etc. this leads to..... snowflake servers
  4. 1. Difficult to reproduce if there are issuesand even more difficult to create similarenvironments in QA2. When trying to change a snowflake serverthings get really interesting. There are allsorts of potential knock on effects
  5. (unless you are on windows and you get a blue screen of death....)
  6. People cannot run at 100% - they will burn out. FYI machines should never be running at 100% either.
  7. We (OpenTable) are desperately trying to move away from these manual runbooks. We used to have to create them for our systems and our “best” piece of work is approximately 57 pages in a work document.
  8. The end goal of infrastructure as code is to perform as many infrastructure tasks as possible programmatically. So yes, we can automate (most of) our runbooks.
  9. Martin Fowler wrote about Phoenix Servers on 10th July 2012 Each server is created and managed in exactly the same way each time it is provisioned. These would be using tooling to create them and maintain their configuration. Martin said: “ One day I had this fantasy of starting a certification service for operations. The certification assessment would consist of a colleague and I turning up at the corporate data center and setting about critical production servers with a baseball bat, a chainsaw, and a water pistol. The assessment would be based on how long it would take for the operations team to get all the applications up and running again.”
  10. Chad Fowler 23rd June 2013 Immutable Deployments - Need to upgrade or patch a server would mean spinning up a new one on the fly instead of hoping for a success story on an existing server
  11. Share code Review Code Training Read books Knowledge is portable / spreadable Tooling is available RSpec Puppet (test framework for puppet code) think of integration / unit tests here Can be run in a CI environment Tooling helps us write infrastructure code in the same way as application code TravisCI is awesome for pupept module continuous integration Code is structured for validity convention based linting tools etc. e.g. puppet lint based on guidance from experienced users IDEs are becoming available e.g. Gepetto, RubyMine now has support too Active communities
  12. 1.0 – 2006. Pretty much crap. It put a lot of people off PowerShell 2.0 – Much better! Things started to get going for automation PowerShell Remoting: Background Jobs: Transactions: Modules: Script Debugging: Eventing: Windows PowerShell Integrated Scripting Environment (ISE): 3.0 – Now we are rocking! Scheduled jobs: Session connectivity: Autocompletion and Intellisense Delegation support:
  13. Demo Time We want to demo the script on how we install Windows Features and Also manage IIS. Point out that this even feels complex and that there should be another way to make this easier The problem here is that someone has to manually log into the server and run the scripts - show a runbook to demo what they would be doing.
  14. Give details about puppet - show a sample manifest and explain how it works using the inbuilt types. Important to note that not all the same types are available for use on Windows as there is on Linux / Unix based systems
  15. Think of someone tapping out of a submission move! Show the puppet script to install 7zip on a windows server. This will be able to demonstrate that it uses the system architecture to install the correct version of the application Show the scripts for Puppet-IIS and show that by running these values, I can manage IIS on any Windows Server 2008 webserver Look at the difference between this module for managing IIS and the Raw PowerShell script. This scripts looks so much easier Show the entire build_base_server manifest so that people can see exactly what runs. This log onto the box and demonstrate that the box runs against the snapshot.
  16. Change to show the puppet modules currently available for Windows on the forge. From what I am told, Windows is the 3rd highest searched for term on the forge. There have been approx 15600 downloads of windows modules We should all thank Ryan Coleman and his team for doing an awesome job on the forge. BTW Ryan, Im not quite sure why windows is not in the popular tags :)
  17. There are a lot of eyes on Windows automation now. We have at least 3 sessions on Windows here at Puppetconf. There are lots of questions to companies about it now. The Windows community is finally got the memo