SlideShare une entreprise Scribd logo
1  sur  45
The Release
Pipeline Model
Applied to Managing Windows
Server and Microsoft Cloud
Michael Greene
Principal Program Manager
Microsoft Enterprise Cloud CAT
whoami
Michael Greene
Principal Program Manager
Enterprise Cloud Engineering CAT Team
(Customer Feedback, Technical Enablement)
CAT PM for PowerShell & DevOps
12 yrs at Microsoft
3 yrs BPOSD/O365D Ops
@migreene
Mgreenegit
http://aka.ms/thereleasepipelinemodel
When does a concept become a revolution?
First, the new candidate must seem to resolve some
outstanding and generally recognized problem that can be
met in no other way.
Second, the new paradigm must promise to preserve a
relatively large part of the concrete problem-solving ability
that has accrued to science through its predecessors.
(The Structure of Scientific Revolutions, Thomas S. Kuhn)
Reading http://stevenmurawski.com/devops-reading-list/
Customer Landscape
patterns & practices
how do we include
Windows Server?
that’s a little more on
the dev side, than IT
Pro?
Treat Servers like PaaS
service
consistency
fabric
consistency
Software
As a Service
consume service
Platform
As a Service
deploy apps, jobs,
data
Infrastructure
As a Service
custom baseline
manage binaries
SQL Azure
Azure App
Services
Azure Virtual
Machines
application
consistency
Increasing
opportunity
for
configuration
drift
Physical/Virtual
Servers
Configuration as Code
• Lots of API's
• Complex scenarios should be property:value
• Living documentation
• PowerShell DSC is the PLATFORM that all solutions can use to
deploy and manage Windows Server
• Azure Resource Manager is also Configuration as Code
• Nothing replaces knowledge about the systems you intend to
manage
The Release Pipeline
Who changed the environment?
What did they change, exactly?
When did the change occur?
What we did before
Prototype in VM
Submit change form
Present to CAB
Argue that the change is worthwhile
Conflict oversight by committee
Update docs
What we do now
• Document everything in configuration as code
• Including automated deployment and testing
• Clone latest to workstation
• Make change
• Run tests locally
• Push to Source
• Who, What, When, Why (comments)
• Merge with Master, resolve conflicts if needed
How will I catch problems at the
earliest possible moment?
Can elements be combined cleanly
to produce the correct results?
How will I be notified of a problem?
What we did before
• Remote in on Saturday
• Make sure servers are listed in RDCMan
• Connect to servers and make changes
• Reboot in order
• Say a prayer / squeeze rabbit’s foot / perform
tribal dance
• Check that services still work correctly
What we do now
• Trigger Build service
• Webhook/agent, schedule, manual
• Run scripts stored in Source
• Validate quality
• Perform work
• Capture output
* opportunity to implement Just Enough Administration
http://aka.ms/JEA
Engineer for Resiliency
• What will this project require on Day 2? Day 30? Day 100?
• Monitoring rules
• Monitoring alerts
• Automation runbooks
• JEA endpoints
• Onboard to backup services
• Operational Validation Tests
How do we check for regulatory
issues?
How do I know this change will not
cause an outage?
Will this change work across every
variation I have in my
environments?
Does this configuration meet our
business requirements?
What we did before
• Create VM
• Install OS
• Install app/service
• Implement change
• Manual, test OU, run script
• Try app/service
• Make an educated guess whether it still works
What we do now
• Build runs Scripts from Source
• Linting - Script Analyzer
• Must meet guidelines set by organization
• Unit Tests – Pester
• Functionally should work as expected
• Integration Tests – Pester / Kitchen
• Should work across matrix of diverse combinations
• Operational Validation – Pester / OVF
• Service should do what it is supposed to do
• TDD
Integration Testing with Pester
All examples courtesy of the following blog post -
https://pshirwin.wordpress.com/2016/04/08/active-directory-operations-test/
$ADConfiguration = @{
Forest = @{
FQDN = 'pshirwin.local'
ForestMode = 'Windows2012R2Forest'
GlobalCatalogs = @(
'DC-DSC-01.pshirwin.local'
)
SchemaMaster = 'DC-DSC-01.pshirwin.local'
DomainNamingMaster = 'DC-DSC-01.pshirwin.local'
}
Domain = @{
NetBIOSName = 'PSHIRWIN'
DomainMode = 'Windows2012R2Domain'
RIDMaster = 'DC-DSC-01.pshirwin.local'
PDCEmulator = 'DC-DSC-01.pshirwin.local'
InfrastructureMaster = 'DC-DSC-01.pshirwin.local'
DistinguishedName = 'DC=pshirwin,DC=local'
DNSRoot = 'pshirwin.local'
DomainControllers = @('DC-DSC-01')
}
Describe 'Active Directory configuration operational readiness' {
Context 'Verifying Forest Configuration'{
it "Forest FQDN $($ADConfiguration.Forest.FQDN)" {
$ADConfiguration.Forest.FQDN |
Should be $SavedADReport.ForestInformation.RootDomain
}
it "ForestMode $($ADConfiguration.Forest.ForestMode)"{
$ADConfiguration.Forest.ForestMode |
Should be $SavedADReport.ForestInformation.ForestMode.ToString()
}
}
Context 'Verifying GlobalCatalogs'{
$ADConfiguration.Forest.GlobalCatalogs |
ForEach-Object{
it "Server $($_) is a GlobalCatalog"{
$SavedADReport.ForestInformation.GlobalCatalogs.Contains($_) |
Should be $true
}
}
}
POSHSpec
Describe 'Services' {
Service w32time Status { Should Be Running }
Service bits Status { Should Be Stopped }
}
Describe 'Files' {
File C:inetpubwwwrootiisstart.htm { Should Exist }
File C:inetpubwwwrootiisstart.htm { Should Contain 'text-align:center' }
}
Describe 'Registry' {
Registry HKLM:SOFTWAREMicrosoftRpcClientProtocols { Should Exist }
Registry HKLM:SYSTEMCurrentControlSetServicesTcpipParameters "SyncDomainWithMembership" { Should Be 1 }
Registry 'HKLM:SOFTWARECallahan Auto' { Should Not Exist }
}
Describe 'Http' {
TcpPort localhost 80 PingSucceeded { Should Be $true }
TcpPort localhost 80 TcpTestSucceeded { Should Be $true }
Http http://localhost StatusCode { Should Be 200 }
Http http://localhost RawContent { Should Match 'X-Powered-By: ASP.NET' }
Http http://localhost RawContent { Should Not Match 'X-Powered-By: Cobal' }
}
Describe 'Hotfix' {
Hotfix KB3116900 { Should Not BeNullOrEmpty}
Hotfix KB1112233 { Should BeNullOrEmpty}
}
https://github.com/Ticketmaster/poshspec
How do I make changes without
granting long term administrative
access?
Does anyone need to sign-off before
deployment?
How do I keep services consistent
across all my environments?
Can I integrate service management?
What we did before
• Request/create VM
• Request/manage environmental changes
• Install OS
• Install app/service (or defer to app/service owner)
• Onboard to patching, anti-malware, backup, monitoring
• Validate app/service is working
• Go Live
What we do now
• Build runs scripts from Source
• Potentially automatically releases when Tests pass
• Deploy artifacts to environment
• Simplify complex work through automation
• Promote through stages
• QA, Prod, Green/Blue
Getting Started Guide
• Use Source Control
• Don't expect to cutover instantly
• Require tests
• Keep options open
• Old and new tools can be integrated
Make change visible
• If change is happening fluidly, everyone needs to know
• Your peers are not going to go check reports, the way they
check Facebook
• Notify all stakeholders in the way they collaborate
Managing outages without randomizing servers
Map your requirements
Plaster
PSake
Pester
POSHSpec
OVF
PSDeploy
Lability
Community Projects
PowerShell
Slack
Finally
Everyone must be onboard for long term success but it
starts with one passionate engineer

Contenu connexe

Tendances

Tendances (20)

Deploying systems using AWS DevOps tools
Deploying systems using AWS DevOps toolsDeploying systems using AWS DevOps tools
Deploying systems using AWS DevOps tools
 
WinOps Conf 2015 - Microsoft Azure & Open Source
WinOps Conf 2015 - Microsoft Azure & Open SourceWinOps Conf 2015 - Microsoft Azure & Open Source
WinOps Conf 2015 - Microsoft Azure & Open Source
 
Deployment Pipeline for databases (Azure SQL Database, SQL Server)
Deployment Pipeline for databases (Azure SQL Database, SQL Server)Deployment Pipeline for databases (Azure SQL Database, SQL Server)
Deployment Pipeline for databases (Azure SQL Database, SQL Server)
 
DevOps Toolbox: Infrastructure as code
DevOps Toolbox: Infrastructure as codeDevOps Toolbox: Infrastructure as code
DevOps Toolbox: Infrastructure as code
 
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
AWS DevOps Event - AWS Services enabling DevOps - Continuous Integration & Au...
AWS DevOps Event - AWS Services enabling DevOps - Continuous Integration & Au...AWS DevOps Event - AWS Services enabling DevOps - Continuous Integration & Au...
AWS DevOps Event - AWS Services enabling DevOps - Continuous Integration & Au...
 
Securing Containers From Day One | null Ahmedabad Meetup
Securing Containers From Day One | null Ahmedabad MeetupSecuring Containers From Day One | null Ahmedabad Meetup
Securing Containers From Day One | null Ahmedabad Meetup
 
Database deployments - dotnetsheff
Database deployments - dotnetsheffDatabase deployments - dotnetsheff
Database deployments - dotnetsheff
 
Neil Peterson - Azure CLI Deep Dive
Neil Peterson - Azure CLI Deep DiveNeil Peterson - Azure CLI Deep Dive
Neil Peterson - Azure CLI Deep Dive
 
Accelerating Innovation with DevOps on AWS
Accelerating Innovation with DevOps on AWSAccelerating Innovation with DevOps on AWS
Accelerating Innovation with DevOps on AWS
 
PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...
PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...
PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Accelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAccelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWS
 
AWS DevOps Event - Innovating with DevOps on AWS
AWS DevOps Event - Innovating with DevOps on AWSAWS DevOps Event - Innovating with DevOps on AWS
AWS DevOps Event - Innovating with DevOps on AWS
 
Infrastructure as Code (BBWorld/DevCon13)
Infrastructure as Code (BBWorld/DevCon13)Infrastructure as Code (BBWorld/DevCon13)
Infrastructure as Code (BBWorld/DevCon13)
 
CI/CD on AWS Deploy Everything All the Time
CI/CD on AWS Deploy Everything All the TimeCI/CD on AWS Deploy Everything All the Time
CI/CD on AWS Deploy Everything All the Time
 
Customer Sharing: iCook - Continuous Deployment with AWS
Customer Sharing: iCook - Continuous Deployment with AWSCustomer Sharing: iCook - Continuous Deployment with AWS
Customer Sharing: iCook - Continuous Deployment with AWS
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
 
How Atlassian Scales Bitbucket Data Center on AWS
How Atlassian Scales Bitbucket Data Center on AWSHow Atlassian Scales Bitbucket Data Center on AWS
How Atlassian Scales Bitbucket Data Center on AWS
 

En vedette

En vedette (11)

Kathleen Wilson - Evolve Cloud Operations and Enable Agile with Modern Servic...
Kathleen Wilson - Evolve Cloud Operations and Enable Agile with Modern Servic...Kathleen Wilson - Evolve Cloud Operations and Enable Agile with Modern Servic...
Kathleen Wilson - Evolve Cloud Operations and Enable Agile with Modern Servic...
 
Eduardo Piairo - Deployment pipeline for databases (Azure SQL Database, SQL S...
Eduardo Piairo - Deployment pipeline for databases (Azure SQL Database, SQL S...Eduardo Piairo - Deployment pipeline for databases (Azure SQL Database, SQL S...
Eduardo Piairo - Deployment pipeline for databases (Azure SQL Database, SQL S...
 
Ian Margetts - ASOS’ Journey to Continuous Deployment
Ian Margetts - ASOS’ Journey to Continuous DeploymentIan Margetts - ASOS’ Journey to Continuous Deployment
Ian Margetts - ASOS’ Journey to Continuous Deployment
 
WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...
WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...
WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...
 
Connon MacRae - Evolution of Ticketmaster's journey to DevOps
Connon MacRae - Evolution of Ticketmaster's journey to DevOpsConnon MacRae - Evolution of Ticketmaster's journey to DevOps
Connon MacRae - Evolution of Ticketmaster's journey to DevOps
 
Trond Hindenes - 18 months of learning: Notes from implementing Ansible in a ...
Trond Hindenes - 18 months of learning: Notes from implementing Ansible in a ...Trond Hindenes - 18 months of learning: Notes from implementing Ansible in a ...
Trond Hindenes - 18 months of learning: Notes from implementing Ansible in a ...
 
New Relic - Digital Intelligence - Meetup #12
New Relic - Digital Intelligence - Meetup #12New Relic - Digital Intelligence - Meetup #12
New Relic - Digital Intelligence - Meetup #12
 
WinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOps
WinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOpsWinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOps
WinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOps
 
Jeffrey Snover - Empowering DevOps with Azure Stack
Jeffrey Snover - Empowering DevOps with Azure StackJeffrey Snover - Empowering DevOps with Azure Stack
Jeffrey Snover - Empowering DevOps with Azure Stack
 
WinOps Conf 2016 - Peter Mounce - DoS yourself in production every night to p...
WinOps Conf 2016 - Peter Mounce - DoS yourself in production every night to p...WinOps Conf 2016 - Peter Mounce - DoS yourself in production every night to p...
WinOps Conf 2016 - Peter Mounce - DoS yourself in production every night to p...
 
Flynn Bundy - 60 micro-services in 6 months
Flynn Bundy - 60 micro-services in 6 months Flynn Bundy - 60 micro-services in 6 months
Flynn Bundy - 60 micro-services in 6 months
 

Similaire à WinOps Conf 2016 - Michael Greene - Release Pipelines

SOUG_Deployment__Automation_DB
SOUG_Deployment__Automation_DBSOUG_Deployment__Automation_DB
SOUG_Deployment__Automation_DB
UniFabric
 

Similaire à WinOps Conf 2016 - Michael Greene - Release Pipelines (20)

Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases Weekly
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
Containerisation Hack of a Legacy Software Solution - Alex Carter - CodeMill ...
 
North east user group tour
North east user group tourNorth east user group tour
North east user group tour
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
Cloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native ApplicationsCloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native Applications
 
The Business Value of PaaS Automation - Kieron Sambrook-Smith - Presentation ...
The Business Value of PaaS Automation - Kieron Sambrook-Smith - Presentation ...The Business Value of PaaS Automation - Kieron Sambrook-Smith - Presentation ...
The Business Value of PaaS Automation - Kieron Sambrook-Smith - Presentation ...
 
SOUG_Deployment__Automation_DB
SOUG_Deployment__Automation_DBSOUG_Deployment__Automation_DB
SOUG_Deployment__Automation_DB
 
DevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to HabitatDevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to Habitat
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples
 
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for Developers
 
Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401
 
Improving DevOps through Cloud Automation and Management - Real-World Rocket ...
Improving DevOps through Cloud Automation and Management - Real-World Rocket ...Improving DevOps through Cloud Automation and Management - Real-World Rocket ...
Improving DevOps through Cloud Automation and Management - Real-World Rocket ...
 
Windows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementWindows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server Management
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Dernier (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 

WinOps Conf 2016 - Michael Greene - Release Pipelines

  • 1. The Release Pipeline Model Applied to Managing Windows Server and Microsoft Cloud Michael Greene Principal Program Manager Microsoft Enterprise Cloud CAT
  • 2. whoami Michael Greene Principal Program Manager Enterprise Cloud Engineering CAT Team (Customer Feedback, Technical Enablement) CAT PM for PowerShell & DevOps 12 yrs at Microsoft 3 yrs BPOSD/O365D Ops @migreene Mgreenegit http://aka.ms/thereleasepipelinemodel
  • 3. When does a concept become a revolution? First, the new candidate must seem to resolve some outstanding and generally recognized problem that can be met in no other way. Second, the new paradigm must promise to preserve a relatively large part of the concrete problem-solving ability that has accrued to science through its predecessors. (The Structure of Scientific Revolutions, Thomas S. Kuhn)
  • 5. Customer Landscape patterns & practices how do we include Windows Server? that’s a little more on the dev side, than IT Pro?
  • 6.
  • 7. Treat Servers like PaaS service consistency fabric consistency Software As a Service consume service Platform As a Service deploy apps, jobs, data Infrastructure As a Service custom baseline manage binaries SQL Azure Azure App Services Azure Virtual Machines application consistency Increasing opportunity for configuration drift Physical/Virtual Servers
  • 8. Configuration as Code • Lots of API's • Complex scenarios should be property:value • Living documentation • PowerShell DSC is the PLATFORM that all solutions can use to deploy and manage Windows Server • Azure Resource Manager is also Configuration as Code • Nothing replaces knowledge about the systems you intend to manage
  • 10. Who changed the environment? What did they change, exactly? When did the change occur?
  • 11. What we did before Prototype in VM Submit change form Present to CAB Argue that the change is worthwhile Conflict oversight by committee Update docs
  • 12. What we do now • Document everything in configuration as code • Including automated deployment and testing • Clone latest to workstation • Make change • Run tests locally • Push to Source • Who, What, When, Why (comments) • Merge with Master, resolve conflicts if needed
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. How will I catch problems at the earliest possible moment? Can elements be combined cleanly to produce the correct results? How will I be notified of a problem?
  • 18. What we did before • Remote in on Saturday • Make sure servers are listed in RDCMan • Connect to servers and make changes • Reboot in order • Say a prayer / squeeze rabbit’s foot / perform tribal dance • Check that services still work correctly
  • 19. What we do now • Trigger Build service • Webhook/agent, schedule, manual • Run scripts stored in Source • Validate quality • Perform work • Capture output * opportunity to implement Just Enough Administration http://aka.ms/JEA
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. Engineer for Resiliency • What will this project require on Day 2? Day 30? Day 100? • Monitoring rules • Monitoring alerts • Automation runbooks • JEA endpoints • Onboard to backup services • Operational Validation Tests
  • 29. How do we check for regulatory issues? How do I know this change will not cause an outage? Will this change work across every variation I have in my environments? Does this configuration meet our business requirements?
  • 30. What we did before • Create VM • Install OS • Install app/service • Implement change • Manual, test OU, run script • Try app/service • Make an educated guess whether it still works
  • 31. What we do now • Build runs Scripts from Source • Linting - Script Analyzer • Must meet guidelines set by organization • Unit Tests – Pester • Functionally should work as expected • Integration Tests – Pester / Kitchen • Should work across matrix of diverse combinations • Operational Validation – Pester / OVF • Service should do what it is supposed to do • TDD
  • 32. Integration Testing with Pester All examples courtesy of the following blog post - https://pshirwin.wordpress.com/2016/04/08/active-directory-operations-test/ $ADConfiguration = @{ Forest = @{ FQDN = 'pshirwin.local' ForestMode = 'Windows2012R2Forest' GlobalCatalogs = @( 'DC-DSC-01.pshirwin.local' ) SchemaMaster = 'DC-DSC-01.pshirwin.local' DomainNamingMaster = 'DC-DSC-01.pshirwin.local' } Domain = @{ NetBIOSName = 'PSHIRWIN' DomainMode = 'Windows2012R2Domain' RIDMaster = 'DC-DSC-01.pshirwin.local' PDCEmulator = 'DC-DSC-01.pshirwin.local' InfrastructureMaster = 'DC-DSC-01.pshirwin.local' DistinguishedName = 'DC=pshirwin,DC=local' DNSRoot = 'pshirwin.local' DomainControllers = @('DC-DSC-01') } Describe 'Active Directory configuration operational readiness' { Context 'Verifying Forest Configuration'{ it "Forest FQDN $($ADConfiguration.Forest.FQDN)" { $ADConfiguration.Forest.FQDN | Should be $SavedADReport.ForestInformation.RootDomain } it "ForestMode $($ADConfiguration.Forest.ForestMode)"{ $ADConfiguration.Forest.ForestMode | Should be $SavedADReport.ForestInformation.ForestMode.ToString() } } Context 'Verifying GlobalCatalogs'{ $ADConfiguration.Forest.GlobalCatalogs | ForEach-Object{ it "Server $($_) is a GlobalCatalog"{ $SavedADReport.ForestInformation.GlobalCatalogs.Contains($_) | Should be $true } } }
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. POSHSpec Describe 'Services' { Service w32time Status { Should Be Running } Service bits Status { Should Be Stopped } } Describe 'Files' { File C:inetpubwwwrootiisstart.htm { Should Exist } File C:inetpubwwwrootiisstart.htm { Should Contain 'text-align:center' } } Describe 'Registry' { Registry HKLM:SOFTWAREMicrosoftRpcClientProtocols { Should Exist } Registry HKLM:SYSTEMCurrentControlSetServicesTcpipParameters "SyncDomainWithMembership" { Should Be 1 } Registry 'HKLM:SOFTWARECallahan Auto' { Should Not Exist } } Describe 'Http' { TcpPort localhost 80 PingSucceeded { Should Be $true } TcpPort localhost 80 TcpTestSucceeded { Should Be $true } Http http://localhost StatusCode { Should Be 200 } Http http://localhost RawContent { Should Match 'X-Powered-By: ASP.NET' } Http http://localhost RawContent { Should Not Match 'X-Powered-By: Cobal' } } Describe 'Hotfix' { Hotfix KB3116900 { Should Not BeNullOrEmpty} Hotfix KB1112233 { Should BeNullOrEmpty} } https://github.com/Ticketmaster/poshspec
  • 38. How do I make changes without granting long term administrative access? Does anyone need to sign-off before deployment? How do I keep services consistent across all my environments? Can I integrate service management?
  • 39. What we did before • Request/create VM • Request/manage environmental changes • Install OS • Install app/service (or defer to app/service owner) • Onboard to patching, anti-malware, backup, monitoring • Validate app/service is working • Go Live
  • 40. What we do now • Build runs scripts from Source • Potentially automatically releases when Tests pass • Deploy artifacts to environment • Simplify complex work through automation • Promote through stages • QA, Prod, Green/Blue
  • 41.
  • 42. Getting Started Guide • Use Source Control • Don't expect to cutover instantly • Require tests • Keep options open • Old and new tools can be integrated
  • 43. Make change visible • If change is happening fluidly, everyone needs to know • Your peers are not going to go check reports, the way they check Facebook • Notify all stakeholders in the way they collaborate Managing outages without randomizing servers
  • 45. Finally Everyone must be onboard for long term success but it starts with one passionate engineer