2. ppouliot@Microsoft.com
Live in Stoneham, MA
Education: Philosophy (RIC), Telecom Sec & Digital Forensics (BU)
Certifications: CISSP, MCSE+I, MCT, OCP, Network+
18+ Years in Datacenter, Network, and Application infrastructure
and automation.
Working within the OSS community focused on Window/Linux
interoperability for 11+ years professionally
Active in Infragard (2011) & ISSA (2010) communities
Working within the OpenStack community for over 3 1/2 years
3. Agenda
Quick overview of Microsoft’s involvement with the Puppet
community
Overview of the Continuous Integration
Give a high level overview of the role Puppet plays within the
OpenStack Continuous Integration process for Hyper-V.
Provide a view into what you can do with Puppet on the Windows
Platform
4. Quick Questions
Openstack?
Puppet on Windows?
Use of PowerShell in modules?
How many have heard of continuous integration and continuous
delivery?
5. Microsoft and Puppetlabs
MSOpenTech and Puppetlabs
2014 Released Puppet modules to support Azure APIs
https://github.com/MSOpenTech/azure-puppet
MS OSTC (OpenSource Technology Center)
2012 began building OpenStack CI for Hyper-V using Puppet
2013 CERN begins contributing to Puppet Code for Hyper-V/OpenStack
Nova
Many modules supporting multiple platforms created by MS
https://github.com/openstack-hyper-v/
6. What is Continuous Integration?
The continuous process of applying quality control
Automated unit testing
Tests typically run after each commit of code
Test driven development
Short development cycles
Test case for each function
7. Nova and Neutron Continuous
Integration for Hyper-V
Came alive in mid January 2014
Built and maintained by a small team of highly skilled engineers
Undercloud of KVM on Centos providing virtualized Ubuntu
Devstack Controllers
Two Physical Hyper-V nodes per Controller dynamically assembled
All layers automated through native operating system tools, puppet,
or shell scripting.
Executes a Tempest run for every upstream commit
Automation and Scripts:
https://github.com/openstack-hyper-v
https://github.com/cloudbase
8. Our Infrastructure Design Tenants
Ability to rapidly redeploy any component including application
workload on virtual or physical compute resources in under 15
minutes.
Be able to switch operating system and preserve workload
Every thing is code or it doesn’t exist
Consume as much upstream code as possible.
Use as much OSS as possible
Redhat, Debian, Windows server are target ::$OSFAMILY
Test it often!
9. Why Puppet?
Good support for multiple platforms
Better support for Windows platform at the time then
other solutions
My customers were using it already.
Strong community and catalog of modules.
10. What we use it for?
Deploying everything
Preserving machine state
Data collection
Automation Wrapper
11. The Hyper-V CI and Puppet
Puppet modules were built and used to deploy entire infrastructure
All OS provisioning templates generated and managed via Puppet
ERBs
single preseed,kickstart,unattend.xml erb for respective os derivatives
All node and some switch configuration managed via puppet
Hiera used extensively for entire infrastructure.
R10K used for module management
12. Puppet and Windows (2012)
Not many upstream modules for Windows
Writing puppet for windows was extremely
painful
No package management for windows adds
additional complexity
No shell provider
13. Puppet and Windows (2014)
PowerShell provider gives windows a shell provider you can use
Thanks Josh Cooper!
Chocolatey package provider gives Windows package
management
Thanks Rob Reynolds!
Puppetlabs has an awesome Windows Team
MS and Puppetlabs working together to make puppet better for
Windows
More modules for Windows than before
MS contributes to upstream modules.
14. Windows/Puppet Best Practice
Don’t be afraid it’s just Computer Science
Use PowerShell as much as possible
Windows can be completely configured via PowerShell so use it
Stay away from legacy tools if PowerShell is available
Use Chocolatey for package manage
And you can use it to install and update OpenSource puppet too!
Don’t be afraid to add multi os support to your puppet module
15. What we still need to do.
Module refactor, documentation and cleanup.
CI Implemented for automated module testing
Tests triggered by change in upstream dependencies
Tests triggered by inbound code change.
Align with all best practice for Module testing.
PuppetForge release pipeline
Define and automate release process
Stackforge integration