dockercon - building a chef cookbook testing pipeline with drone.io and docker

53

Upload: pczarkowski

Post on 12-May-2015

1.193 views

Category:

Technology


5 download

DESCRIPTION

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.

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]