Top Banner
53

Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

May 12, 2015

Download

Technology

pczarkowski

Building a framework for developing and maintaining chef cookbooks with automated testing and code review using opensource tools. I will walk through setting up Drone.IO (docker based CI) and hooking it up with Github ( regular or enterprise ), securing it behind an Oauth proxy, and configuring appropriate git hooks to automate testing process. I will then show how to use tools such as meez, guard, chefspec, testkitchen to shorten the feedback loop on errors to merely a few seconds, as well as some workflow ideas for gating and merging changes in github for Chef Cookbooks with multiple contributors.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 2: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Automated Chef cookbook testing with Drone.IO and

Github

[email protected]@pczarkowski

Page 3: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

$ whoami pczarkowski

Page 4: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

$ whoami pczarkowski

Page 5: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

$ whoami pczarkowski

Page 6: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

$ whoami pczarkowski

Page 7: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

I <3 Docker

0.20

ZNCaaS

Openstack - Dockenstack, Nova-Docker, Solum

http://tech.paulczar.nethttp://github.com/paulczarhttps://index.docker.io/u/paulczar/

Page 8: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 9: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 10: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 11: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Chef Cookbook - Docker

Installs Docker

http://community.opscode.com/cookbooks/dockerhttps://github.com/bflad/chef-docker

Page 12: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Chef Cookbook - Docker

Run your own Registry

http://community.opscode.com/cookbooks/docker

Page 13: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Chef Cookbook - Docker

Backup container

http://community.opscode.com/cookbooks/docker

Page 14: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Chef Cookbook - Docker

just like trusted builds, only cheffy.

http://community.opscode.com/cookbooks/docker

Page 15: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Using Chef in Dockerfile

Run chef-solo in Dockerfile

Page 16: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

EZBake

Converge Container on the fly

http://community.opscode.com/cookbooks/docker

Page 17: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Knife container

?

Page 18: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

What is Drone ?

http://drone.iohttp://github.com/drone/drone

SaaS or Self HostedWritten in GoUses Docker to run tests/builds

Page 19: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

How it works ?

Watches git repo containing `.drone.yml`

Clones repo on `git push`

Creates Docker image

Page 20: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

How it works ?

Runs Docker image

Runs a series of commands

Performs action based on result

Page 21: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Why use Drone ?

Same tooling for both Public and Private

Ultra fast - Docker FTW

Opensource

Page 22: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

It’s not all rainbows and unicorns

Local user auth only

Single server

UI and Documentation

Page 23: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Installing Drone

https://github.com/justincampbell/chef-drone

Installs drone via chef

Page 24: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Installing Drone

$ curl get.docker.io | bash

$ wget http://downloads.drone.io/latest/drone.deb

$ sudo dpkg -i drone.deb

Page 25: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Configuring Drone

http://drone.example.com/install

Page 26: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

https://github.com/settings/applications/new

Page 27: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 28: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 29: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 30: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 31: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 32: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Oauth Proxy

https://github.com/movableink/doorman

Page 33: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 34: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

.drone.yml

Page 35: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

.drone.yml

Page 36: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

.drone.yml

Page 37: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Drone CLI

$ drone build /tmp/example_application

parses .drone.yml

performs build

Page 38: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

drone-wall

https://github.com/drone/drone-wall

Page 39: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

As a NoOp I need a development workflow with automated CI for building reliable infrastructure using chef cookbooks for my DevOps environment.

Page 40: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

“Chef cookbooks are code.”

Page 41: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

culture, culture, something,learning organization, something,

devops...

Page 42: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 43: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker
Page 44: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Chef Community Testing Ecosystem

http://icanhazwordcloud.io

Page 45: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Test your Cookbooks

STYLE / SYNTAX tests

UNIT tests

INTEGRATION tests

Page 46: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Shameless plug… Meez

A tool I wrote … to scratch an itch.

generates a chef cookbook with plumbing for all the testing tools in the previous slides … and more.

Page 47: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Generate a testable cookbook

Page 48: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Run tests!

Page 49: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Short feedback loops

Guard: run tests every change

Git Hooks: refuse to commit if failed tests

Self Discipline!

Page 50: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Chef cookbooks are code.

Use Source Controlhttp://github.com

SaaS or Self Hosted

Page 51: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Github Pull Request Workflow

Page 52: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

Questions ?

Page 53: Dockercon - Building a Chef cookbook testing pipeline with Drone.IO and Docker

THANKYOU!

@pczarkowski

[email protected]