continuous integration for configuration management

Download Continuous Integration for Configuration Management

If you can't read please download the document

Upload: michael-solberg

Post on 13-Apr-2017

288 views

Category:

Software


2 download

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