DockerCon14 Automated Chef Cookbook Testing

53

Transcript of DockerCon14 Automated Chef Cookbook Testing

Page 1: DockerCon14 Automated Chef Cookbook Testing
Page 2: DockerCon14 Automated Chef Cookbook Testing

Automated Chef cookbook testing with Drone.IO and

Github

[email protected]@pczarkowski

Page 3: DockerCon14 Automated Chef Cookbook Testing

$ whoami pczarkowski

Page 4: DockerCon14 Automated Chef Cookbook Testing

$ whoami pczarkowski

Page 5: DockerCon14 Automated Chef Cookbook Testing

$ whoami pczarkowski

Page 6: DockerCon14 Automated Chef Cookbook Testing

$ whoami pczarkowski

Page 7: DockerCon14 Automated Chef Cookbook Testing

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: DockerCon14 Automated Chef Cookbook Testing
Page 9: DockerCon14 Automated Chef Cookbook Testing
Page 10: DockerCon14 Automated Chef Cookbook Testing
Page 11: DockerCon14 Automated Chef Cookbook Testing

Chef Cookbook - Docker

Installs Docker

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

Page 12: DockerCon14 Automated Chef Cookbook Testing

Chef Cookbook - Docker

Run your own Registry

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

Page 13: DockerCon14 Automated Chef Cookbook Testing

Chef Cookbook - Docker

Backup container

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

Page 14: DockerCon14 Automated Chef Cookbook Testing

Chef Cookbook - Docker

just like trusted builds, only cheffy.

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

Page 15: DockerCon14 Automated Chef Cookbook Testing

Using Chef in Dockerfile

Run chef-solo in Dockerfile

Page 16: DockerCon14 Automated Chef Cookbook Testing

EZBake

Converge Container on the fly

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

Page 17: DockerCon14 Automated Chef Cookbook Testing

Knife container

?

Page 18: DockerCon14 Automated Chef Cookbook Testing

What is Drone ?

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

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

Page 19: DockerCon14 Automated Chef Cookbook Testing

How it works ?

Watches git repo containing `.drone.yml`

Clones repo on `git push`

Creates Docker image

Page 20: DockerCon14 Automated Chef Cookbook Testing

How it works ?

Runs Docker image

Runs a series of commands

Performs action based on result

Page 21: DockerCon14 Automated Chef Cookbook Testing

Why use Drone ?

Same tooling for both Public and Private

Ultra fast - Docker FTW

Opensource

Page 22: DockerCon14 Automated Chef Cookbook Testing

It’s not all rainbows and unicorns

Local user auth only

Single server

UI and Documentation

Page 23: DockerCon14 Automated Chef Cookbook Testing

Installing Drone

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

Installs drone via chef

Page 24: DockerCon14 Automated Chef Cookbook Testing

Installing Drone

$ curl get.docker.io | bash

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

$ sudo dpkg -i drone.deb

Page 25: DockerCon14 Automated Chef Cookbook Testing

Configuring Drone

http://drone.example.com/install

Page 26: DockerCon14 Automated Chef Cookbook Testing

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

Page 27: DockerCon14 Automated Chef Cookbook Testing
Page 28: DockerCon14 Automated Chef Cookbook Testing
Page 29: DockerCon14 Automated Chef Cookbook Testing
Page 30: DockerCon14 Automated Chef Cookbook Testing
Page 31: DockerCon14 Automated Chef Cookbook Testing
Page 32: DockerCon14 Automated Chef Cookbook Testing

Oauth Proxy

https://github.com/movableink/doorman

Page 33: DockerCon14 Automated Chef Cookbook Testing
Page 34: DockerCon14 Automated Chef Cookbook Testing

.drone.yml

Page 35: DockerCon14 Automated Chef Cookbook Testing

.drone.yml

Page 36: DockerCon14 Automated Chef Cookbook Testing

.drone.yml

Page 37: DockerCon14 Automated Chef Cookbook Testing

Drone CLI

$ drone build /tmp/example_application

parses .drone.yml

performs build

Page 38: DockerCon14 Automated Chef Cookbook Testing

drone-wall

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

Page 39: DockerCon14 Automated Chef Cookbook Testing

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

Page 40: DockerCon14 Automated Chef Cookbook Testing

“Chef cookbooks are code.”

Page 41: DockerCon14 Automated Chef Cookbook Testing

culture, culture, something,learning organization, something,

devops...

Page 42: DockerCon14 Automated Chef Cookbook Testing
Page 43: DockerCon14 Automated Chef Cookbook Testing
Page 44: DockerCon14 Automated Chef Cookbook Testing

Chef Community Testing Ecosystem

http://icanhazwordcloud.io

Page 45: DockerCon14 Automated Chef Cookbook Testing

Test your Cookbooks

STYLE / SYNTAX tests

UNIT tests

INTEGRATION tests

Page 46: DockerCon14 Automated Chef Cookbook Testing

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: DockerCon14 Automated Chef Cookbook Testing

Generate a testable cookbook

Page 48: DockerCon14 Automated Chef Cookbook Testing

Run tests!

Page 49: DockerCon14 Automated Chef Cookbook Testing

Short feedback loops

Guard: run tests every change

Git Hooks: refuse to commit if failed tests

Self Discipline!

Page 50: DockerCon14 Automated Chef Cookbook Testing

Chef cookbooks are code.

Use Source Controlhttp://github.com

SaaS or Self Hosted

Page 51: DockerCon14 Automated Chef Cookbook Testing

Github Pull Request Workflow

Page 52: DockerCon14 Automated Chef Cookbook Testing

Questions ?

Page 53: DockerCon14 Automated Chef Cookbook Testing

THANKYOU!

@pczarkowski

[email protected]