• Stars
    star
    131
  • Rank 275,867 (Top 6 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 12 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

All you need for cooking with Chef and Vagrant on Windows you will find in Bill's Kitchen

Bill's Kitchen

Build status

A DevPack with all you (or Bill Gates would) need for cooking with Chef, Vagrant and Docker on Windows, shrink-wrapped in a portable package.

Bill's Kitchen Screenshot

Installation and Usage

As the only prerequisite you need to have a recent version of VirtualBox installed (sorry, couldn't make that one portable).

Using Bill's Kitchen itself is fairly simple. There is nothing to install, just unpack and go:

  1. Grab the latest bills-kitchen-<version>.7z package from the releases page and unpack it
  2. Mount the kitchen to the W:\ drive by double-clicking the mount-drive.bat file
  3. Click W:\Launch ConEmu.lnk to open a command prompt (also runs W:\set-env.bat to set up the environment)
  4. Start hacking!

What's included?

Main Tools

The main tools for cooking with Chef / Vagrant:

Plugins

These plugins are pre-installed:

  • vagrant plugins:
  • knife plugins (just as an example):
    • knife-audit - keeps track of which cookbooks are used by which node
    • knife-server - sets up and backs up a chef server
    • ...use chef gem install <plugin> to install more

Supporting Tools

Useful additions for a better cooking experience:

  • ConEmu - a better Windows console with colours, tabs, etc...
  • Atom - a hackable text editor for the 21st Century
  • PortableGit - git client for Windows (preconfigured with kdiff3 as diff/merge tool)
  • putty - the SSH client for Windows
  • clink - command completion and Bash-like line editing for Windows
  • cwRsync which includes ssh.exe and rsync.exe to make rsync-based Vagrant synced folders work on Windows

Environmental Changes

The following changes are applied to your environment by running W:\set-env.bat:

  • Constraining as much as possible to the W:\ drive:
  • %HOME% points to W:\home
  • %VAGRANT_HOME% points to W:\home\.vagrant.d
  • %CHEFDK_HOME% points to W:\home\.chefdk
  • %PATH% is preprended with the bin dirs of the tools in W:\tools\
  • exception: %VBOX_USER_HOME% points to %USERPROFILE%, i.e. VirtualBox VMs are still stored under %USERPROFILE%
  • Fixing annoyances:
  • set TERM=cygwin to fix vagrant ssh issues
  • set CYGWIN=nodosfilewarning to mute vagrant ssh warnings
  • set ANSICON=true to get coloured output with Vagrant on Windows
  • set SSL_CERT_FILE=W:\home\cacert.pem pointing to recent CA certs avoiding Ruby SSL errors

Aliases

Registered doskey aliases:

  • run be <command> for bundle exec <command>
  • run vi <file_or_dir> for atom <file_or_dir>
  • run b2d <args> for boot2docker <args>

Examples

These repositories are used for acceptance-testing the common usage scenarios:

  • A sample-toplevel-cookbook with all kinds cookbook tests: syntax check, style checks, linting, unit and integration tests
  • A sample-infrastructure-repo which defines a sample server infrastructure with environments and databages via Vagrant / Chef Solo

Building from Source (Development)

As a prerequisite for building bill's kitchen you need:

  • a Windows host
  • 7zip installed in C:\Program Files\7-Zip\7z.exe
  • a Ruby environment (if you don't have one, use this Ruby DevPack)

Building Bill's Kitchen

To build the kitchen (make sure you don't have spaces in the path):

$ gem install bundler
$ bundle install
$ rake build

This might take a while (you can go fetch a coffee). It will download the external dependencies, install the tools and prepare everything else we need in the kitchen into the target/build directory. Finally it runs the spec/integration examples to ensure everything is properly installed.

Running the Acceptance Tests

To run the more comprehensive spec/acceptance tests:

$ rake acceptance

This will use various of the tools in combination by running the main usage scenarios, e.g.:

  • cloning a sample top-level cookbook and sample infrastructure repository
  • running various commands like bundle install, vagrant plugin install, vagrant up
  • running different kinds of cookbook tests via knife cookbook test, foodcritic, chefspec and test-kitchen

Packaging

Finally, if all the tests pass you can create a portable zip package:

$ rake package

This will and finally package everything in the target/build directory into target/bills-kitchen-<version>.7z.

Changing the Mount Drive Letter

By default the Ruby DevPack will be mounted to the W:\ drive. If you need to change it you only have to update the references in these two files:

  • mount-drive.cmd
  • unmount-drive.cmd

Acknowledgements & Licensing

Bill's Kitchen bundles lots of awesome Open Source software. The copyright owners of this software are mentioned here. For a full-text version of the licenses mentioned above please have a look in the tools directory where the respective software is installed.

  • Atom - Copyright (c) 2014 GitHub Inc. (MIT license)
  • Vagrant - Copyright (c) 2010-2014 Mitchell Hashimoto (MIT license)
  • Packer - Copyright (c) 2013-2014 Mitchell Hashimoto (MPL-2.0)
  • Terraform - Copyright (c) 2014-2015 HashiCorp (MPL-2.0)
  • Consul - Copyright (c) 2014 HashiCorp (MPL-2.0)
  • ChefDK - Copyright (c) 2014 Chef Software (Apache 2.0 license)
  • ConEmu - Copyright (c) 2006-2008 Zoin [email protected], 2009-2013 Maximus5 [email protected] (BSD 3-Clause license)
  • clink - Copyright (c) 2012-2014 Martin Ridgers (MIT license), 1994–2012 Lua.org, PUC-Rio (GPLv3)
  • PortableGit - by msysGit team (GPLv2 license)
  • DevKit - Copyright (c), 2007-2014 RubyInstaller Team (BSD 3-Clause license)
  • kdiff3 - Copyright (c) 2002-2012 Joachim Eibl (GPLv2 license)
  • putty - Copyright (c) 1997-2014 Simon Tatham (MIT license)
  • cwRsync - October 2014, provided by Itefix - https://www.itefix.net/cwrsync (BSD 2-Clause license)

Bill's Kitchen itself is published under the MIT license. It is not "derivative work" but rather "mere aggregation" of other software and thus does not need to be licensed under GPL itself.

More Repositories

1

vagrant-managed-servers

Enables Vagrant to ssh into and provision managed servers
Ruby
185
star
2

vagrant-docker-baseimages

A collection of Vagrant-friendly docker base images
Ruby
55
star
3

sample-infrastructure-repo

sample infrastructure repository based on vagrant and application cookbooks
Ruby
16
star
4

linus-kitchen

An Ubuntu-based developer VM for hacking with Chef, Vagrant, Docker & Co
Ruby
16
star
5

sample-toplevel-cookbook

A sample "top-level" cookbook hosting a website
Ruby
10
star
6

circleci-redirector

Extends the CircleCI REST API with bookmarkable URLs for latest build and build artifacts
Ruby
10
star
7

vagrant-plugin-bundler

This plugin checks a list of requirements against the installed plugins
Ruby
9
star
8

jenkins-pipes-infra

Infrastructure (i.e. a dockerized Jenkins) and overview for the Jenkins Pipes demo
9
star
9

jenkins-pipes-helloworld

Example project with a Jenkinsfile for the Jenkins Pipes demo
Shell
9
star
10

vagrant-appveyor-testing

Repo for testing stuff on AppVeyor
7
star
11

vagrant-toplevel-cookbooks

downloads and installs the per-node top-level cookbooks in chef-solo based infrastructures
Ruby
6
star
12

cookbooks-vagrant-ohai

the vagrant-ohai recipe borrowed from agoddard/street-chef
Ruby
4
star
13

jenkins-pipes-jobs

Jobs Repository for the Jenkins Pipes demo
Groovy
3
star
14

vagrant-baseboxes

Veewee Definitions and Rakefile for building Vagrant Baseboxes
Ruby
3
star
15

sample-ejb-app

Sample WebApp using EJBs
Java
2
star
16

vagrant-workflow-tests

Specs for my Vagrant / Chef Solo based workflow
Ruby
2
star
17

bills-kitchen-repo

Chef repository being used in Bill's Kitchen
Ruby
1
star
18

vagrant-proxy-test

fiddling around with Vagrant and HTTP Proxies
Shell
1
star
19

cookbooks-motd

Chef cookbook for setting the MOTD via /etc/motd
Ruby
1
star
20

aurelia-todo-app

Playground repository for playing with Aurelia
TypeScript
1
star