continuous integration for configuration management
TRANSCRIPT
Michael Solberg
Chief Field Architect
June 14, 2015
Continuous Integration for Configuration Management
AGENDA
Continuous Integration
Configuration Management Testing
Implementing CI for Configuration Management
Continuous Integration
Test before you push
Syntax, Workflow, Unit Tests
Test after you push
Reproducibility, Build Environments, Unit Tests
Test before you deploy
Integration Tests, Performance Tests, Merge Tests
Continuous Integration
Did I just break something?
Code moves through a set of manual and automated gates in a feature branch before being committed to the master branch.
Example CI Pipeline
used by OpenStack Nova project
How do we apply this to Puppet?
Configuration Management Testing is a Unique Challenge
Configuration management systems are distributed.
Configuration management often relies on external data.
Configuration management systems rely on lots of 3rd party dependencies.
Configuration management can only be applied the first time one time.
For Configuration Management Systems, What's the Build Artifact?
The Configured System
Does the manifest compile?
Syntax, Workflow, Unit Tests
Can I apply the manifest to a system?
Reproducibility, Build Environments, Unit Tests
Did it do what I expected it to do?
Integration Tests, Performance Tests, Merge Tests
CI for Configuration Management
Did I just break something?
Process
From code commit to tested configuration
Code is committed to the repository.
Commit is validated by CI Server
CI Server updates the CF system with the new commit.
CI Server provisions a new VM.
The virtual machine applies the new configuration.
CI Server checks with config management server that the configuration was applied without error.
CI Server runs functional tests against the configured VM.
CI Server records the results and powers off the VM.
Feedback is generated through interactions between the CI Server, CMS, and IaaS.
Configuration Managment CI Pipeline
For Puppet
Source Control/CI Server
Git/Jenkins
Configuration Management Server
Foreman/Puppet Master
Infrastructure as a Service
OpenStack, oVirt, VMWare
What ingredients do I need?
Essential Functionality
Demo
Challenges/Solutions
Questions we encountered while developing the process.
How do I know that the Puppet run for a given build is the latest commit?Custom Puppet Fact injection by Jenkins
How do I test upgrades as well as new deployments?Apply new changes to pre-provisioned VMs
How do I manage the Puppet environments?Katello/Satellite provides API, r10k
How do I promote code through different lifecycle environments?Katello/Satellite provides lifecycle management.
THANK YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHatNews