Run one simple command to easily setup your Windows workstation for Chef cookbook development in 20 minutes.
- Install the latest ChefDK package
- Create a
chefdirectory in your home directory. - Download the
chefdk_bootstrapcookbook via Berkshelf - Run
chef-clientto install the rest of the tools you'll need.
Copy the PowerShell commands below and paste them into a PowerShell Admin console. This will execute the bootstrap script on your workstation.
$script = (Invoke-WebRequest https://raw.githubusercontent.com/Nordstrom/chefdk_bootstrap/master/bootstrap.ps1).Content
$script | Invoke-ExpressionMac support is coming soon.
This cookbook installs these tools:
Atom, a free, general purpose, cross-platform, open source, text editor. Out of the box, Atom supports all the languages you will need for Chef development: Ruby, PowerShell, Bash, XML, JSON, etc.
Git - command line git client and tools.
Virtualbox - Oracle's free, open source virtualization tool for local cookbook testing.
Vagrant - ChefDK's included Test Kitchen tool uses Vagrant to spin up local VMs for cookbook testing.
-
Installs Chocolatey, a Windows package manager, similar to
apt-geton Ubuntu orhomebrewon Mac. Chocolatey is used to install packages likeposh-gitandkdiff3. -
Installs all the other tools marked
truein thenode['chefdk_bootstrap']['package']hash. -
Includes the Powershell profile configuration recipe.
- Installs the Atom editor
- Installs git, git-credential-winstore, and posh-git.
- Installs gitextensions, a GUI git client.
- Installs the free, open-source diff/merge tool, kdiff3.
- Configures a global PowerShell profile to correct the $env:HOME environment
variable and run
chef shell-init powershell.
- Installs Vagrant.
- Installs Virtualbox.
The attributes defined by this recipe are organized under the
node['chefdk_bootstrap'] namespace.
| Attribute | Description | Type | Default |
|---|---|---|---|
| ['atom']['source_url'] | Windows: Atom installer package source URL | URL String | https://atom.io/download/windows |
| ['atom']['source_url'] | Mac: Atom installer package source URL | URL String | https://atom.io/download/mac |
| ['package']['atom'] | Whether to install Atom or not | boolean | true |
| ['package']['kdiff3'] | Whether to install kdiff3 or not | boolean | true |
| ['package']['vagrant'] | Whether to install Vagrant or not | boolean | true |
| ['package']['virtualbox'] | Whether to install Virtualbox or not | boolean | true |
| ['package']['git'] | Whether to install git and related packages or not | boolean | true |
| ['package']['gitextensions'] | Whether to install gitextensions or not | boolean | true |
The first time you check out this cookbook, run
bundle
to download and install the development tools.
Three forms of cookbook testing are available:
bundle exec rake style
Will run foodcritic (cookbook style) and rubocop (Ruby style/syntax) checks.
bundle exec rake spec
Will run ChefSpec tests. It is a good idea to ensure that these tests pass before committing changes to git.
bundle exec rake coverage
Will run the ChefSpec tests and report on test coverage. It is a good idea to make sure that every Chef resource you declare is covered by a unit test.
bundle exec guard
Will run foodcritic, rubocop (if enabled) and ChefSpec tests automatically when the associated files change. If a ChefSpec test fails, it will drop you into a pry session in the context of the failure to explore the state of the run.
To disable the pry-rescue behavior, define the environment variable DISABLE_PRY_RESCUE before running guard:
DISABLE_PRY_RESCUE=1 bin/guard
bunlde exec rake kitchen:all
Will run the test kitchen integration tests. These tests use Vagrant and Virtualbox, which must be installed for the tests to execute.
These are only available for cookbooks that target Unix-like systems. Support for Windows targets is expected by the end of 2014.
After converging in a virtual machine, ServerSpec tests are executed. This skeleton comes with a very basic ServerSpec test; refer to http://serverspec.org for detail on how to create tests.
Nordstrom, Inc.
Copyright 2015 Nordstrom, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.