Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Beginner)
C.I. for Hyper-V
PUPPETCAMP BOSTON 2014
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
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
Quick overview of Microsoft’s involvement with the Puppet
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
Puppet on Windows?
Use of PowerShell in modules?
How many have heard of continuous integration and continuous
Microsoft and Puppetlabs
MSOpenTech and Puppetlabs
2014 Released Puppet modules to support Azure APIs
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
Many modules supporting multiple platforms created by MS
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
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
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:
Our Infrastructure Design Tenants
Ability to rapidly redeploy any component including application
workload on virtual or physical compute resources in under 15
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!
Good support for multiple platforms
Better support for Windows platform at the time then
My customers were using it already.
Strong community and catalog of modules.
What we use it for?
Preserving machine state
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
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
Puppet and Windows (2012)
Not many upstream modules for Windows
Writing puppet for windows was extremely
No package management for windows adds
No shell provider
Puppet and Windows (2014)
PowerShell provider gives windows a shell provider you can use
Thanks Josh Cooper!
Chocolatey package provider gives Windows package
Thanks Rob Reynolds!
Puppetlabs has an awesome Windows Team
MS and Puppetlabs working together to make puppet better for
More modules for Windows than before
MS contributes to upstream modules.
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
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